registry  /  wyrm-mcp  /  7.5.1

wyrm-mcp@7.5.1

Local-first persistent memory for AI agents over MCP. Ground truths, negative learning (recorded failures block repeats), decision causality, hybrid recall, live memory streams, run-attributed fleet memory — a structured SQLite memory on your machine, no

Static Scan Results

scanned 2h ago · by rust-scanner

Static analysis flagged 19 finding(s) at 72.0% confidence. This version is warn-only unless an AI or security-team review confirms malicious behavior.

Static reason
One or more suspicious static signals were detected.

Decision evidence

public snapshot
Behavioral surface
Source
ChildProcessDynamicRequireEnvironmentVarsFilesystemNativeBindingsNetworkShell
Supply chain
HighEntropyStringsMinifiedUrlStrings
Manifest
NoLicense
scanned 162 file(s), 935 KB of source, external domains: 127.0.0.1, account.ghosts.lk, ai.api.nvidia.com, api.openai.com, fonts.googleapis.com, fonts.gstatic.com, ghosts.lk, github.com, integrate.api.nvidia.com, registry.npmjs.org, www.cloudflarestatus.com, wyrm.ghosts.lk

Source & flagged code

9 flagged · loading source
package.jsonView file
scripts.postinstall = node scripts/postinstall.cjs
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.preinstall = node scripts/preinstall.cjs
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg
scripts.postinstall = node scripts/postinstall.cjs
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg
dist/database.jsView file
1import k from"better-sqlite3";import{existsSync as u,mkdirSync as b,readdirSync as D,statSync as L,writeFileSync as I}from"fs";import{homedir as O}from"os";import{join as d,basenam... L2: INSERT INTO watch_dirs (path, recursive)
High
Child Process

Package source references child process execution.

dist/database.jsView on unpkg · L1
dist/wyrm-cli.jsView file
51`)}finally{r.close(),console.log=o}}async function ze(l){const{flags:a}=C(l),e=a.path,s=a.project,n=a.out,t=a.brief===!0,i=a.force===!0,o=a.quiet===!0,r=(typeof a.client=="string"?... L52: `);return}const w=n??u.path;m.length===0&&r.length===0&&(m=Ae(Oe.filter($=>J(G(w,$)))));{const $=await import("./reverse-bridge.js"),E=re(h,u,g),j={"MEMORY.md":E.memoryMd};for(cons... L53: `).filter(g=>g.trim()),y=new B(r);let u=0,h=0;for(const g of f){const[,w,v,R]=g.split(""),$=w??"";if(/^Merge /i.test($)||/^(chore|bump|release|version)/i.test($)){h++;continue}let...
Medium
Dynamic Require

Package source references dynamic require/import behavior.

dist/wyrm-cli.jsView on unpkg · L51
dist/harvest.jsView file
1import{execFileSync as m}from"child_process";import{readFileSync as h,existsSync as g}from"fs";import{join as p}from"path";import{createHash as x}from"crypto";const $=["README.md",... L2: `).map(a=>a.trim()).filter(a=>a&&!a.startsWith("#")&&!a.startsWith("|")&&!a.startsWith("```")).slice(0,3).join(" ").replace(d,"").replace(/\s+/g," ");if(!r||l.length<24)continue;co... L3: `)){const t=n.trim();if(!t)continue;const i=t.indexOf(" ");if(i<0)continue;const d=t.slice(0,i),r=t.slice(i+1).trim();r.length<8||C.test(r)||e.push({kind:"pattern",text:r.slice(0,3... L4: `).map(i=>i.trim()).filter(Boolean).slice(0,6).join(" ").replace(/\s+/g," ").slice(0,400);t&&s.push({kind:"lesson",text:`Stack (${e}): ${t}`,source:`code:${e}`,sig:`code:${e}:${u(t...
Low
Weak Crypto

Package source references weak cryptographic algorithms.

dist/harvest.jsView on unpkg · L1
dist/wyrm-ui.jsView file
1#!/usr/bin/env node L2: import{spawn as s}from"child_process";const n=parseInt(process.env.WYRM_HTTP_PORT??"3333",10)||3333,i="127.0.0.1",o=`http://${i}:${n}`;async function a(){try{return(await fetch(`${... L3: `)}catch(e){process.stderr.write(`[wyrm-ui] could not launch browser via ${t}: ${e.message}
High
Same File Env Network Execution

A single source file combines environment access, network access, and code or shell execution; review context before blocking.

dist/wyrm-ui.jsView on unpkg · L1
1#!/usr/bin/env node L2: import{spawn as s}from"child_process";const n=parseInt(process.env.WYRM_HTTP_PORT??"3333",10)||3333,i="127.0.0.1",o=`http://${i}:${n}`;async function a(){try{return(await fetch(`${... L3: `)}catch(e){process.stderr.write(`[wyrm-ui] could not launch browser via ${t}: ${e.message}
High
Command Output Exfiltration

Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.

dist/wyrm-ui.jsView on unpkg · L1
dist/handlers/syncops.jsView file
11package = wyrm-mcp; repositoryIdentity = wyrm; dependency = better-sqlite3 L11: LIMIT 500 L12: `).all(g,`-${p} days`,..._,...u);if(e)return{content:[{type:"text",text:JSON.stringify({dry_run:!0,count:m.length,candidates:m.map(r=>({id:r.id,kind:r.kind,problem:r.problem.slice(...
High
Copied Package Dependency Bridge

Package metadata claims a different repository identity while copied source loads a runtime dependency bridge.

dist/handlers/syncops.jsView on unpkg · L11

Findings

6 High6 Medium7 Low
HighInstall Time Lifecycle Scriptspackage.json
HighChild Processdist/database.js
HighShell
HighSame File Env Network Executiondist/wyrm-ui.js
HighCommand Output Exfiltrationdist/wyrm-ui.js
HighCopied Package Dependency Bridgedist/handlers/syncops.js
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumDynamic Requiredist/wyrm-cli.js
MediumNetwork
MediumEnvironment Vars
MediumStructural Risk Force Deep Review
LowNon Install Lifecycle Scripts
LowScripts Present
LowWeak Cryptodist/harvest.js
LowFilesystem
LowHigh Entropy Strings
LowUrl Strings
LowNo License