Everything you needto run Zephr.
Install from source, configure an MCP client, and read the eight-tool contract — plus an honest account of what is not shipped yet.
What you need before you begin.
Zephr is an MCP evidence memory. The local mode runs entirely on your machine over stdio JSON-RPC, storing evidence in a single SQLite file scoped by worktree.
Zephr stores evidence in one SQLite file and exposes it to an agent through the Model Context Protocol. Nothing leaves your machine in local mode: the server speaks stdio JSON-RPC to the client that launched it, and the database is a file you own.
Before you install, confirm the three prerequisites above. The only one that is easy to get wrong is Node — the workspace pins Node 24, and a mismatched runtime fails at build rather than at first tool call.
Node.js 24.x
CI enforces Node 24; engines.node is >=24 <25.
pnpm
The workspace installs with pnpm install --frozen-lockfile.
An MCP client
Claude Code, Cursor, or any stdio JSON-RPC MCP consumer.
Press Escape to clear the filter.
Clone, install, and build.
Zephr is not yet published to npm. The working install path is build-from-source.
Clone the repository and build the workspace. Requires Node.js 24.x and pnpm; Linux x64 is the only CI-proven platform today.
git clone https://github.com/DigitalSoftDistribution/zephr.git
cd zephr
pnpm install --frozen-lockfile
pnpm --filter @zephr/protocol build && pnpm --filter @zephr/core build
pnpm --filter @zephr/mcp-server build && pnpm --filter @zephr/mcp build
The build produces apps/mcp/dist/main.js, which is the entry point your MCP
client launches. There is no global install step and no published package, so
the absolute path to that file is what you configure in the next section.
npm distribution
npx not yet shippedThere is no published package to run with npx today. Clone the repository and build the workspace, then point your client at the built entry point.
Platform support
Linux x64Linux x64 is the only CI-proven platform today.
Windows / macOS
Windows / macOSNot claimed supported yet; packaging proof comes first.
Managed cloud
Managed cloudHosted sync across machines is planned. Today the working path is the local, single-file store.
Point your MCP client at the built server.
The server runs over stdio and needs a database path — it falls back to an in-memory store when ZEPHR_DB_PATH is unset. Use absolute paths: no npx-published package or global install exists yet.
Add Zephr to your client's MCP server list. Claude Code reads this shape from its settings file; Cursor reads the same shape from its own MCP settings.
{
"mcpServers": {
"zephr": {
"command": "node",
"args": ["/absolute/path/to/zephr/apps/mcp/dist/main.js", "--stdio"],
"env": {
"ZEPHR_DB_PATH": "/absolute/path/to/zephr.sqlite"
}
}
}
}
Both paths must be absolute. ZEPHR_DB_PATH is optional — without it the
server falls back to an in-memory store, which is useful for a smoke test but
discards everything when the process exits.
One database, scoped by worktree
Zephr opens a single SQLite file and scopes beliefs to a project → repository → worktree hierarchy inside it. The launcher admits a connection to exactly one worktree before any tool call; calls that reach outside the admitted scope are refused.
The eight core tools.
The surface is deliberately small and extensible: new capability routes through action enums or optional arguments on existing tools rather than new tool names.
Destructive operations (zephr_admin purge and migrate) require a capability
minted from ZEPHR_ADMIN_TOKEN. Without it, read-only stats still work and the
destructive actions are refused.
Keeping the surface at eight names is deliberate. When a tool needs to do more, it gains an action enum or an optional argument rather than a sibling tool, so a client written against this contract keeps working as the product grows.
zephr_remember
Capture a belief with provenance.
zephr_recall
Hybrid lexical + semantic retrieval with abstention.
zephr_why
Explain provenance, versions, and contradictions.
zephr_verify
T1 structural and T2 consistency checks.
zephr_session
Session lifecycle and handoff summarisation.
zephr_rules
Read and write review and contradiction policy.
zephr_status
Service identity, capabilities, and storage stats.
zephr_admin
Capability-gated stats, purge, and migrate.
Where Zephr runs today.
Capture is always an explicit, consented tool call. Zephr does not scrape editor state, chat history, or project indexes.
Zephr is a server, not a plugin. Every client above talks to the same stdio JSON-RPC process, and every capture is an explicit tool call the agent chose to make — there is no background indexer and no editor-state scraper.
That distinction matters most for Cursor, where the adapter ships as a first-party mapper package rather than something the editor bundles. An operator wires it into the process that brokers tool calls, and Zephr still never reads private editor state.
Claude Code
Adapter shippedThe deepest integration. ClaudeCodeAdapter prefers the admitted scope snapshot, so every tool call is bound to the worktree the launcher admitted.
Cursor
Library, not an editor integration@zephr/adapter-cursor is a scope-bound mapper you wire into whatever process brokers Cursor’s tool calls. Cursor does not consume the package automatically, and Zephr never reads private editor state.
Any MCP client
Protocol stableZephr speaks stdio JSON-RPC MCP. Any consumer that respects the eight-tool contract can connect using the same configuration shape.
How retrieval and trust fit together.
Every design decision has a written ADR. The summaries below link to the source documents in the repository.
Retrieval and trust are separate concerns that meet at recall. Lexical and semantic search each produce a ranking; reciprocal rank fusion combines them. The trust layer then decides whether the fused result is answerable at all — and abstains when the evidence is missing, stale, or contradictory.
Because the two layers are separate, a retrieval improvement can never quietly weaken an abstention rule, and an abstention rule can never be satisfied by ranking a weak result higher.
Hybrid retrieval
SQLite with FTS5 for lexical search and sqlite-vec for semantic retrieval, fused by reciprocal rank (RRF).
Provenance chain
Every recalled belief carries a full provenance chain and bi-temporal recording — recall abstains rather than guessing.
Separated capabilities
The store, the read view, and the admin capability are separated per ADR-Z-02; destructive operations need a minted capability.
Scoped by worktree
One SQLite file holds a project → repository → worktree hierarchy. The launcher admits a connection to one worktree before any tool call.
What is not shipped yet.
Documentation that hides its gaps is not documentation. These are the constraints that apply to Zephr today.
Each constraint above is a present-tense fact, not a roadmap apology. They are listed here because a reader deciding whether to adopt Zephr needs them before the install step, not after it.
When one of these changes, the badge changes with it — and the change lands in the changelog with a real date and SHA.
npm distribution
Not shippedZephr is not published to npm. There is no working npx one-liner and no global install — build from a clone.
Platform support
Linux x64 onlyLinux x64 is the only CI-proven platform. Windows and macOS are not claimed supported yet.
Managed cloud
PlannedHosted sync across machines is planned. Today the working path is the local, single-file store.
Cursor integration
Library only@zephr/adapter-cursor is a first-party mapper library. It is not bundled into the editor and requires the operator to wire it in.
Walk the whole journey.
The step-by-step guide takes you from a clone to a signed handoff, and the trust page shows the evidence behind every claim on this site.