{"id":"logicsrc.com/logicsrc","name":"logicsrc","commands":["logicsrc"],"examples":[{"run":"logicsrc prd init","does":"Create a prd/ collection with the OpenPRD template and an index"},{"run":"logicsrc prd new \"<Short imperative title>\"","does":"Create the next numbered product requirements doc"},{"run":"logicsrc prd validate prd --strict","does":"Check every PRD's shape and lifecycle, warnings as errors"},{"run":"logicsrc mcp","does":"Run the LogicSRC standards MCP server over stdio"}],"description":"CLI for LogicSRC, an open standards initiative for coordinating humans and AI agents.","homepage":"https://logicsrc.com","repository":"https://github.com/profullstack/logicsrc","license":"MIT","agentic":true,"latest_version":"0.16.0","vendor":"Profullstack","install":"curl -fsSL https://logicsrc.com/install.sh | sh","publisher":"profullstack","w3bs":"w3bs install logicsrc.com/logicsrc","scan":{"status":"passed","scanner":"threatcrush 0.13.30","filesScanned":1247,"summary":{"critical":4,"high":2,"medium":30,"low":32,"info":0},"malware":0,"truncated":false,"version":"0.16.0","sources":{"installer":"https://logicsrc.com/install.sh","installerSha256":"54292b5a7dc5733f07ab28d3bb0a11ed70b9769a118191c9ebb17c76a7dbe7fb","repository":"github.com/profullstack/logicsrc","commit":"fd0a6047e3a4a77e846e1dba240ce9584b1f6b90"},"notes":[],"scannedAt":"2026-11-02T22:59:33.890Z","findings":[{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/src/routes/keyring.mjs","line":32,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/keyring.ts","line":83,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/packages/logicsrc-mcp/src/keyring.ts","line":20,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"critical","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/providers/ssh.ts","line":129,"malware":false},{"ruleId":"js-host-header-trust","title":"URL built from the Host header","severity":"high","category":"code","cwe":"CWE-346","file":"source/apps/commandboard-web/server.js","line":27,"malware":false},{"ruleId":"js-ssrf-outbound-request","title":"outbound request to a non-constant URL","severity":"high","category":"code","cwe":"CWE-918","file":"source/apps/pwa/public/sw.js","line":45,"malware":false},{"ruleId":"sh-remote-script-execution","title":"network output piped into a shell","severity":"medium","category":"code","cwe":"CWE-494","file":"installer/install.sh","line":71,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/commandboard-web/src/main.ts","line":19,"malware":false},{"ruleId":"sh-remote-script-execution","title":"network output piped into a shell","severity":"medium","category":"code","cwe":"CWE-494","file":"source/apps/logicsrc-web/public/install.sh","line":71,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/app/[[...slug]]/page.tsx","line":59,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/app/layout.tsx","line":80,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/app/pricing/page.tsx","line":42,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/components/breadcrumbs.tsx","line":43,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/components/pit-footer.tsx","line":16,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/logicsrc-web/src/components/site-shell.tsx","line":36,"malware":false},{"ruleId":"js-unescaped-html-sink","title":"unescaped HTML rendering","severity":"medium","category":"code","cwe":"CWE-79","file":"source/apps/pwa/public/keyring.js","line":51,"malware":false},{"ruleId":"sql-template-interpolation","title":"SQL built from a template literal or f-string","severity":"medium","category":"code","cwe":"CWE-89","file":"source/apps/pwa/src/routes/rotation.mjs","line":79,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":253,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":297,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":299,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":303,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":307,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":326,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":327,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":329,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":330,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":331,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":334,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":395,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":402,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/cli/src/rotation-catalog.ts","line":408,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/opencontext/src/ids.ts","line":10,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/opencontext/src/ids.ts","line":11,"malware":false},{"ruleId":"js-timing-unsafe-mac-compare","title":"MAC or signature compared with ==","severity":"medium","category":"code","cwe":"CWE-208","file":"source/packages/opencontext/src/validate.ts","line":208,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/openerrand/src/browser.ts","line":34,"malware":false},{"ruleId":"redos-nested-quantifier","title":"regex with nested unbounded quantifiers","severity":"medium","category":"code","cwe":"CWE-1333","file":"source/packages/openontology/src/ids.ts","line":20,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/appbar.test.mjs","line":10,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/keyring.test.mjs","line":137,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/signup-profile.test.mjs","line":61,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/apps/pwa/test/signup-profile.test.mjs","line":72,"malware":false},{"ruleId":"secret-openai-key","title":"OpenAI API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/desktop-flow.test.ts","line":315,"malware":false},{"ruleId":"secret-generic-api-key","title":"Generic API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/desktop-flow.test.ts","line":315,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/keyring.test.ts","line":86,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/keyring.test.ts","line":88,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":125,"malware":false},{"ruleId":"secret-generic-api-key","title":"Generic API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":177,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":184,"malware":false},{"ruleId":"secret-generic-api-key","title":"Generic API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":198,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotate-flow.test.ts","line":204,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":52,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":75,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":135,"malware":false},{"ruleId":"js-hardcoded-crypto-key","title":"hardcoded key material","severity":"low","category":"code","cwe":"CWE-321","file":"source/packages/cli/src/rotators.test.ts","line":222,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/rotators.test.ts","line":258,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/cli/src/vault-clean.test.ts","line":10,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/logicsrc-mcp/src/keyring.test.ts","line":41,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/logicsrc-mcp/src/keyring.test.ts","line":44,"malware":false},{"ruleId":"secret-aws-access-key","title":"AWS Access Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/permissions.test.ts","line":260,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/permissions.test.ts","line":261,"malware":false},{"ruleId":"secret-stripe-key","title":"Stripe Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/permissions.test.ts","line":262,"malware":false},{"ruleId":"secret-aws-access-key","title":"AWS Access Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencontext/src/security.test.ts","line":228,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencreds/src/categories.test.ts","line":98,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencreds/src/categories.test.ts","line":103,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/packages/opencreds/src/import-router.test.ts","line":121,"malware":false},{"ruleId":"secret-private-key","title":"Private Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/providers/ssh.test.ts","line":7,"malware":false},{"ruleId":"secret-database-url","title":"Database URL with credentials","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/rekey.test.ts","line":33,"malware":false},{"ruleId":"secret-openai-key","title":"OpenAI API Key","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/vault-encryption.test.ts","line":21,"malware":false},{"ruleId":"secret-generic-credential","title":"Hardcoded Credential","severity":"low","category":"secret","cwe":"CWE-798","file":"source/plugins/credential-sharing/src/vault-encryption.test.ts","line":21,"malware":false}]}}