Openrecall a unified zero knowledge proof memory for SI agents Twigpine released OpenRecall, an open-source memory layer that gives AI coding agents including Claude Code, Codex, Cursor, Zero and OpenClaude a shared, encrypted store of preferences, project decisions and durable notes through a single MCP interface. Memory is encrypted on the user's machine and the local store or sync server holds only ciphertext; the MCP server must run wherever the passphrase lives, and Twigpine warns that "Zero-knowledge means no recovery" because the passphrase in ~/.openrecall/config.json is the only key. OpenRecall installs via `npm i -g @twigpine/openrecall` on Node 24.22.1+, runs in local mode with no server, and can be self-hosted with `openrecall serve` or a Docker image to sync the same memory across machines or a team. Persistent context for your whole agent stack. Open source. Local by default. Encrypted before storage. Quick start quick-start · Project memory memory-across-projects · Agent setup use-from-any-agent · Self-host self-host-a-server · Security security-model · Community community Switch agents. Come back to a project next week. Keep the useful context. OpenRecall is the memory layer for your agents: shared preferences, project decisions, and durable notes that Claude Code, Codex, Cursor, Zero, OpenClaude, and your own agents can reuse. Memory is encrypted on your machine; the local store or sync server holds ciphertext. Start locally, then self-host when you want the same memory on more than one machine. Built by Twigpine https://twigpine.com , alongside Zero https://github.com/Twigpine/zero and OpenClaude https://github.com/Twigpine/openclaude . | What you need | What OpenRecall gives you | |---|---| | Context that survives a new session | Durable notes your connected agents can recall and update | | Preferences shared across tools | One MCP memory interface for every connected agent | | Projects that stay organized | Discoverable project scopes, with shared preferences recalled alongside project facts | | Control over your data | Encryption on your machine, with local storage or a server you run | | A small first step | Install, initialize, connect your agents; local mode needs no server | | Memory worth keeping | A shared agent guide for recall, deduplication, and pruning, plus a scanner that blocks likely secrets | npm i -g @twigpine/openrecall Node 24.22.1+ openrecall init one passphrase, kept owner-only in ~/.openrecall openrecall setup all --write connect every agent found on this machine openrecall status check the config and the store Restart your agents and they share one memory. No server is involved: this is local mode. setup without --write is a dry run that prints every change first; where an agent has its own mcp add , that is what it uses, and any JSON file it edits is backed up. Per-agent notes, including Zero's sandbox and the Claude Code / OpenClaude plugin, are in docs/agents.md https://github.com/Twigpine/openrecall/blob/main/docs/agents.md . Zero-knowledge means no recovery. The passphrase in ~/.openrecall/config.json is the only key to your memory. Back that file up; nobody, including the host, can recover it. | | You run | Good for | |---|---|---| | Local | npm i -g @twigpine/openrecall , then init and setup | one machine, every agent on it, no server | | Server | openrecall serve , or the Docker image | the same memory on every machine, or a team | | Library | import { OpenRecallClient } from '@twigpine/openrecall' | agents you write yourself | One rule ties them together: the MCP server runs wherever the passphrase is. Recall ranks over plaintext after decryption, so it has to run on your machine. A server only stores and syncs ciphertext; it is what makes memory follow you across machines, never a place that can read it. openrecall setup covers Claude Code, Zero, OpenClaude, Codex, Cursor, Gemini CLI, opencode, Windsurf, Claude Desktop, and VS Code. For anything else that speaks MCP, register a stdio server. The agent's config holds no secrets: { "mcpServers": { "openrecall": { "command": "npx", "args": "-y", "@twigpine/openrecall", "mcp" } } } Claude Code and OpenClaude can install the plugin instead, which bundles the MCP server and the memory skill: /plugin install openrecall --marketplace Twigpine/openrecall | Tool | Purpose | |---|---| | memory save key, content | persist a durable fact | | memory recall query | rank stored memories by relevance locally and return the matching part of each | | memory search query | literal keyword or substring search | | memory get key | read one entry in full | | memory list | list entry keys | | memory delete key | remove an entry | | memory project project | register or reopen a stable project memory scope | | memory projects limit?, offset? | discover projects in the encrypted directory | Project tools and multi-namespace recall need 0.2.1 or later. Keep standing preferences and general feedback in your configured shared namespace. Keep project decisions and references in a separate project scope. The agent can discover and reuse those scopes: 1. memory projects lists known project IDs and their namespaces 20 per page; use offset for more . 2. memory project project: "github.com/twigpine/openrecall" registers or reopens that ID and returns its project namespace and the shared namespace. Use the same host/owner/repo ID across agents and machines; IDs are case-insensitive and ignore a trailing .git . 3. memory recall accepts namespaces: shared, project to rank both scopes together with one result limit and size cap. Every hit names its source namespace. Include only the projects relevant to the task. Pass the returned namespace explicitly to memory save , memory get , memory list , memory search , and memory delete . Opening a project does not change defaults or move existing memories. Existing shared memories remain available, and callers that use a single namespace keep their current behavior. Project IDs live in the encrypted directory; their namespaces use hashed IDs. Tools alone do not make an agent use memory well; it also needs the discipline to recall before answering, save only durable facts, and never duplicate. That lives in one place, skills/openrecall-memory/SKILL.md https://github.com/Twigpine/openrecall/blob/main/skills/openrecall-memory/SKILL.md . setup installs it where an agent loads skills, and the MCP server exposes the same text as its memory guide prompt and in its startup instructions, so every client gets it. A server lets several machines share one memory. Install Bun https://bun.sh and ensure bun is on your PATH. The npm-installed openrecall serve launches Bun automatically; everything else in the package runs on Node. For local memory on one machine, use init and setup from the quick start above. npm i -g @twigpine/openrecall export STATIC API KEYS="me:$ openssl rand -hex 24 " owner:key, note the key STORE=fs DATA DIR=./data openrecall serve on each machine, the same passphrase everywhere copy it from the first openrecall init --url https://memory.example.com --api-key