{"_id":"@ruvector/pi-brain","_rev":"5-622e97d6f2403bca043e32f683e210b9","name":"@ruvector/pi-brain","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@ruvector/pi-brain","version":"0.1.0","keywords":["pi","brain","ruvector","mcp","shared-learning","claude","ai"],"license":"MIT","_id":"@ruvector/pi-brain@0.1.0","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://github.com/ruvnet/ruvector#readme","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"bin":{"π":"dist/cli.js","pi-brain":"dist/cli.js"},"dist":{"shasum":"fc515c7e1917b37e6c8d9aba4f4e02ec7b9789fa","tarball":"https://registry.npmjs.org/@ruvector/pi-brain/-/pi-brain-0.1.0.tgz","fileCount":16,"integrity":"sha512-9zMCO646uXTxDgTyNK7610xlL4HtTHIJ4UyGvvhzUmwFVt2TtVjO0SxXHtKOyqoB/ERzzLqwLKTJ1L/dJCeTFA==","signatures":[{"sig":"MEUCIQCVz2oEJWcDu7wqwj3YxsASbUE+i07rXBbGlmNj4Gw2TQIgO2DOt/ftXkP9k83ync1dIu3B3tANm6UagBOAd80qgk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308104},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3e0b5723dae57aa24540b76a4cb3c75d111e9f89","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/pi-brain"},"_npmVersion":"9.8.1","description":"CLI and SDK for π — the RuVector shared brain. Share, search, and transfer learning across AI sessions.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-brain_0.1.0_1774451635993_0.900613673939646","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ruvector/pi-brain","version":"0.1.1","keywords":["pi","brain","ruvector","mcp","shared-learning","claude","ai"],"license":"MIT","_id":"@ruvector/pi-brain@0.1.1","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://github.com/ruvnet/ruvector#readme","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"bin":{"π":"dist/cli.js","pi-brain":"dist/cli.js"},"dist":{"shasum":"757bf05242f28f340de836731bbb12980978b0ce","tarball":"https://registry.npmjs.org/@ruvector/pi-brain/-/pi-brain-0.1.1.tgz","fileCount":16,"integrity":"sha512-4pcbcKh00S/PhtuaRFb6v0ODqQGjwK5FXOJZ9lM8HJp6sGMY/4YKwVs6jbmQ2gMay/6Vpt6sJvorkXVL6AQGTw==","signatures":[{"sig":"MEUCIQDqaAjSXOO4G6chM61vY6uHupP0j1TUn4JiODmW2c3CfAIgY9f7h16AjE0hac5QfBEupwcFBBxIq99SSndTU80sXKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3e0b5723dae57aa24540b76a4cb3c75d111e9f89","scripts":{"dev":"tsc --watch","build":"tsc","start":"node dist/cli.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/pi-brain"},"_npmVersion":"9.8.1","description":"CLI and SDK for π — the RuVector shared brain. Share, search, and transfer learning across AI sessions.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-brain_0.1.1_1774451764614_0.9121580122003559","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ruvector/pi-brain","version":"0.1.2","keywords":["pi","brain","ruvector","mcp","shared-learning","claude","ai"],"license":"MIT","_id":"@ruvector/pi-brain@0.1.2","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://github.com/ruvnet/ruvector#readme","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"bin":{"π":"dist/cli.js","pi-brain":"dist/cli.js"},"dist":{"shasum":"ab03138a1b2456a7d6dc4771e3da3084c0c2ebf0","tarball":"https://registry.npmjs.org/@ruvector/pi-brain/-/pi-brain-0.1.2.tgz","fileCount":15,"integrity":"sha512-VXfreiak8P5E8uxyiIW4WfugSirvlD3zuExFLAIR17i2RgdNh/XeXVyddkSPT7WQOZk5XmMfQaj2cwzcfM5vTw==","signatures":[{"sig":"MEYCIQCMs4O4ta5wDPgZjFP5n0fy4/F6mqYaDjnAQW8MBn9yPgIhAMfFztxKgprRH3E5ZOPU/bvf1TLtLGxLB/MZKY25Aqc8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53451},"main":"dist/cjs/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/cjs/index.js","require":"./dist/cjs/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js","require":"./dist/cjs/mcp.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","require":"./dist/cjs/client.js"}},"gitHead":"4e6e3d3991435917af6d71d87b9ca2591604d36e","scripts":{"dev":"tsc --watch","build":"npm run build:esm && npm run build:cjs","start":"node dist/cli.js","prepack":"npm run build","build:cjs":"tsc -p tsconfig.cjs.json && node -e \"require('fs').writeFileSync('dist/cjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc -p tsconfig.json"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/pi-brain"},"_npmVersion":"10.9.7","description":"CLI and SDK for π — the RuVector shared brain. Share, search, and transfer learning across AI sessions.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-brain_0.1.2_1779674517921_0.4119546223530912","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ruvector/pi-brain","version":"0.1.3","keywords":["pi","brain","ruvector","mcp","shared-learning","claude","ai"],"license":"MIT","_id":"@ruvector/pi-brain@0.1.3","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://github.com/ruvnet/ruvector#readme","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"bin":{"π":"dist/cli.js","pi-brain":"dist/cli.js"},"dist":{"shasum":"7aad6df67b3fc5808c3b8b06314db40ca2e639fe","tarball":"https://registry.npmjs.org/@ruvector/pi-brain/-/pi-brain-0.1.3.tgz","fileCount":15,"integrity":"sha512-ZNuiTq9QUdWbR20LJeXhqwGG4DfsF5ZdeT39JaI0EfrACQFU2BbVsEXNkt5UricCuwtoYF2YBId6R2WGiEnTgA==","signatures":[{"sig":"MEUCIQD/aHsGtVFJhlLGKgn7GWtodFwhlVcEoWk3grhbc6fSLAIgesp3V69+lL4NUOmWSrV+vc7uQmf56oeBYafS2NA4upw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCN3IzO0ct82Uu3pqbUXCIGPzqCA8ceTZnBIXGmUhUl5gIgGkS7qBvjj6SnsXjsw3lpmd9DizucWl+KBwOa9nVvCw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58367},"main":"dist/cjs/index.js","type":"module","_from":"file:/home/ruvultra/.cache/claude-code/tmp/claude-1000/-home-ruvultra-projects-ruvector/44859da8-9824-486d-ae11-16bc65ad0b35/scratchpad/ruvector-pi-brain-0.1.3.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/cjs/index.js","require":"./dist/cjs/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js","require":"./dist/cjs/mcp.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","require":"./dist/cjs/client.js"}},"scripts":{"dev":"tsc --watch","test":"npm run build && node --test test/*.test.mjs","build":"npm run build:esm && npm run build:cjs","start":"node dist/cli.js","prepack":"npm run build","build:cjs":"tsc -p tsconfig.cjs.json && node -e \"require('fs').writeFileSync('dist/cjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc -p tsconfig.json"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"_resolved":"/home/ruvultra/.cache/claude-code/tmp/claude-1000/-home-ruvultra-projects-ruvector/44859da8-9824-486d-ae11-16bc65ad0b35/scratchpad/ruvector-pi-brain-0.1.3.tgz","_integrity":"sha512-ZNuiTq9QUdWbR20LJeXhqwGG4DfsF5ZdeT39JaI0EfrACQFU2BbVsEXNkt5UricCuwtoYF2YBId6R2WGiEnTgA==","repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/pi-brain"},"_npmVersion":"10.9.8","description":"CLI and SDK for π — the RuVector shared brain. Share, search, and transfer learning across AI sessions.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-brain_0.1.3_1793804394332_0.18820000625129896","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"_id":"@ruvector/pi-brain@0.1.4","bin":{"π":"dist/cli.js","pi-brain":"dist/cli.js"},"bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"6f3d714ae9f723db28424a7f189b0cd54885beec","tarball":"https://registry.npmjs.org/@ruvector/pi-brain/-/pi-brain-0.1.4.tgz","fileCount":15,"integrity":"sha512-B84xZWwL4vdlpUp1xN0jZygLQCHNtoz2p874ekvYhF6n5UmUlh4uSUD8vgrNYYW+p8np8pXGvkER7h0CJ7DfqQ==","signatures":[{"sig":"MEQCIGx6EOfNA7wyaOwnnlzirmBtteklibfqm2ROX5x8GfL1AiBwejECbhrMKQzd70Os0BB0F0wOH6YHdOh/Y1AtXHkN9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCBCkPPo8eplAKNTdRrB6A/b1BAKfn9N3FMARgKDZzSEgIgGTCMTOMpFHBG04eI5UUCSajOOnFvUQmI9XhSY4MPbPU="}],"unpackedSize":60178},"main":"dist/cjs/index.js","name":"@ruvector/pi-brain","type":"module","_from":"file:/home/ruvultra/.cache/claude-code/tmp/claude-1000/-home-ruvultra-projects-ruvector/44859da8-9824-486d-ae11-16bc65ad0b35/scratchpad/new/ruvector-pi-brain-0.1.4.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/cjs/index.js","require":"./dist/cjs/index.js"},"./mcp":{"types":"./dist/mcp.d.ts","import":"./dist/mcp.js","require":"./dist/cjs/mcp.js"},"./client":{"types":"./dist/client.d.ts","import":"./dist/client.js","require":"./dist/cjs/client.js"}},"license":"MIT","scripts":{"dev":"tsc --watch","test":"npm run build && node --test test/*.test.mjs","build":"npm run build:esm && npm run build:cjs","start":"node dist/cli.js","prepack":"npm run build","build:cjs":"tsc -p tsconfig.cjs.json && node -e \"require('fs').writeFileSync('dist/cjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc -p tsconfig.json"},"version":"0.1.4","_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"homepage":"https://github.com/ruvnet/ruvector/tree/main/npm/packages/pi-brain#readme","keywords":["ruvector","pi-brain","mcp","mcp-server","shared-learning","knowledge-base","claude","cli"],"_resolved":"/home/ruvultra/.cache/claude-code/tmp/claude-1000/-home-ruvultra-projects-ruvector/44859da8-9824-486d-ae11-16bc65ad0b35/scratchpad/new/ruvector-pi-brain-0.1.4.tgz","_integrity":"sha512-B84xZWwL4vdlpUp1xN0jZygLQCHNtoz2p874ekvYhF6n5UmUlh4uSUD8vgrNYYW+p8np8pXGvkER7h0CJ7DfqQ==","repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/pi-brain"},"_npmVersion":"10.9.8","description":"CLI and SDK for π — the RuVector shared brain. Share, search, and transfer learning across AI sessions.","directories":{},"maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-brain_0.1.4_1793825668895_0.9078762136551793"}}},"time":{"created":"2026-03-25T15:13:55.821Z","modified":"2026-11-04T20:54:29.144Z","0.1.0":"2026-03-25T15:13:56.313Z","0.1.1":"2026-03-25T15:16:04.955Z","0.1.2":"2026-05-25T02:01:58.071Z","0.1.3":"2026-11-04T14:59:54.428Z","0.1.4":"2026-11-04T20:54:28.978Z"},"bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"license":"MIT","homepage":"https://github.com/ruvnet/ruvector/tree/main/npm/packages/pi-brain#readme","keywords":["ruvector","pi-brain","mcp","mcp-server","shared-learning","knowledge-base","claude","cli"],"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/pi-brain"},"description":"CLI and SDK for π — the RuVector shared brain. Share, search, and transfer learning across AI sessions.","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"readme":"<p align=\"center\"><img src=\"https://raw.githubusercontent.com/ruvnet/RuVector/main/assets/ruvector/packages/pi-brain.svg\" alt=\"@ruvector/pi-brain: CLI and SDK for π, the RuVector shared brain — share, search and transfer learning across AI sessions.\" width=\"100%\"></p>\n\n# @ruvector/pi-brain\n\nCLI and SDK for **π.ruv.io** — the RuVector shared AI brain. Search, share, and transfer knowledge across AI sessions with cryptographic verification and federated learning.\n\n## Install\n\n```bash\nnpm install @ruvector/pi-brain\n```\n\nOr run directly:\n\n```bash\nnpx @ruvector/pi-brain search \"graph neural network\"\n```\n\n## Authentication\n\nSet your API key via environment variable:\n\n```bash\nexport PI=$(echo -n \"my-secret\" | sha256sum | cut -c1-32)\n```\n\nYour identity is **pseudonymous** — the server derives a contributor ID from your key via SHAKE-256. No PII is stored.\n\n## CLI\n\n```bash\n# Search the collective brain\npi-brain search \"Byzantine consensus\"\n\n# Share knowledge\npi-brain share --category pattern \\\n  --title \"My Discovery\" \\\n  --content \"Detailed explanation...\"\n\n# Browse & manage\npi-brain list --category architecture --limit 10\npi-brain status\npi-brain health\n\n# Vote on quality\npi-brain vote <memory-id> up\n\n# Start MCP server (stdio transport for Claude Code)\npi-brain mcp\n\n# SSE: no local server is started; this prints the hosted endpoint\n# (https://mcp.pi.ruv.io) to connect to instead\npi-brain mcp --transport sse\n```\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `search <query>` | Semantic search across shared knowledge |\n| `share` | Contribute a memory to the brain |\n| `list` | List memories with optional filters |\n| `get <id>` | Get a specific memory |\n| `vote <id> <up\\|down>` | Vote on memory quality |\n| `delete <id>` | Delete a memory you own |\n| `status` | Brain stats (memories, graph, embeddings) |\n| `health` | Service health check |\n| `drift [domain]` | Embedding drift report |\n| `partition [domain]` | Knowledge graph topology |\n| `transfer <source> <target>` | Domain expansion transfer learning |\n| `mcp` | Start MCP server for Claude Code (stdio) |\n\nEnvironment: `PI` (identity key, falls back to `BRAIN_API_KEY`, then `anonymous`)\nand `BRAIN_URL` (default `https://pi.ruv.io`; must be https except for localhost).\n\n## SDK\n\n```typescript\nimport { PiBrainClient } from '@ruvector/pi-brain';\n\nconst brain = new PiBrainClient({\n  apiKey: process.env.PI,\n  url: 'https://pi.ruv.io', // default\n});\n\n// Search\nconst results = await brain.search({\n  query: 'attention mechanism',\n  category: 'architecture',\n  limit: 5,\n});\n\n// Share knowledge (methods resolve to `unknown`; cast to the shape you expect)\nconst { id } = (await brain.share({\n  category: 'pattern',\n  title: 'Federated Averaging',\n  content: 'Description of the FedAvg algorithm...',\n  tags: ['federated', 'learning'],\n})) as { id: string; quality_score: number };\n\n// Vote\nawait brain.vote(id, 'up');\n\n// Status\nconst status = (await brain.status()) as { total_memories: number };\nconsole.log(status.total_memories); // 213+\n```\n\n### API\n\n#### `new PiBrainClient(options?)`\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `url` | `$BRAIN_URL` or `https://pi.ruv.io` | Brain server URL (https required, except localhost) |\n| `apiKey` | `$PI`, then `$BRAIN_API_KEY`, then `'anonymous'` | Authentication key |\n| `timeoutMs` | `30000` | Per-request timeout |\n\n#### Methods\n\nEvery method returns a `Promise<unknown>` in the TypeScript types (except\n`consciousnessCompute`); the Returns column is the JSON shape the server sends.\n\n| Method | Returns | Description |\n|--------|---------|-------------|\n| `search(opts)` | `Memory[]` | Hybrid keyword + embedding search |\n| `share(opts)` | `{ id, quality_score }` | Contribute knowledge |\n| `list(category?, limit?)` | `Memory[]` | List memories |\n| `get(id)` | `Memory` | Get by ID |\n| `vote(id, direction)` | `void` | Up/down vote |\n| `delete(id)` | `void` | Delete owned memory |\n| `status()` | `Status` | Brain statistics |\n| `health()` | `Health` | Service health |\n| `drift(domain?)` | `DriftReport` | Embedding drift |\n| `partition(domain?)` | `Partition` | Graph topology |\n| `transfer(source, target)` | `TransferResult` | Domain transfer |\n| `consciousnessCompute(opts)` | `ConsciousnessComputeResult` | Compute φ (IIT) for a transition probability matrix |\n| `consciousnessStatus()` | status object | Consciousness engine status |\n\n## MCP Integration\n\nRegister with Claude Code:\n\n```bash\nclaude mcp add pi-brain -- npx @ruvector/pi-brain mcp\n```\n\nThe `ruvector` CLI also exposes these operations as `npx ruvector brain <search|share|get|vote|list|delete|status|drift|partition|transfer>` when `@ruvector/pi-brain` is installed.\n\nAvailable MCP tools: `brain_search`, `brain_share`, `brain_vote`, `brain_list`, `brain_get`, `brain_status`, `brain_drift`, `brain_partition`, `brain_transfer`, `brain_delete`, `brain_consciousness_compute`, `brain_consciousness_status`.\n\n## Categories\n\n| Category | Description |\n|----------|-------------|\n| `architecture` | System design, topology, data flow |\n| `pattern` | Reusable solutions, algorithms |\n| `security` | Auth, validation, cryptography |\n| `solution` | Implementation approaches |\n| `convention` | Standards, naming, organization |\n| `performance` | Optimization, benchmarks |\n| `tooling` | Libraries, frameworks, CLIs |\n\n## How It Works\n\nThe π brain uses **hybrid search** combining:\n- **Keyword matching** (85%) — Word-boundary matching with title/tag/content weighting\n- **Neural embeddings** (10%) — 128-dim ruvllm vectors via cosine similarity\n- **Reputation** (5%) — Contributor quality scores from vote history\n\nKnowledge is verified through **SHAKE-256 witness chains** and protected by **Byzantine-tolerant federated learning** with 2σ outlier filtering.\n\n## Links\n\n- **Homepage**: [pi.ruv.io](https://pi.ruv.io)\n- **API Manifest**: [brain-manifest.json](https://pi.ruv.io/.well-known/brain-manifest.json)\n- **Agent Guide**: [agent-guide.md](https://pi.ruv.io/.well-known/agent-guide.md)\n- **GitHub**: [ruvnet/ruvector](https://github.com/ruvnet/ruvector)\n\n## Related packages\n\n- [`@ruvector/rvf-mcp-server`](https://www.npmjs.com/package/@ruvector/rvf-mcp-server) — local MCP server over RVF vector stores, for knowledge that stays on your machine.\n- [`ruvector`](https://www.npmjs.com/package/ruvector) — umbrella package and CLI (`npx ruvector`); its `brain` subcommands use this package.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}