perseus vault

by perseus-computing-llc

Not rated
GitHub

About

Perseus Vault is a single Rust binary that gives AI agents durable memory across sessions. One binary. One file. No Docker. No Postgres. No cloud. Just persistent memory that works with any MCP host.

Details

Author
perseus-computing-llc
Categories
AI, Knowledge Base, Other

Setup

Install perseus vault in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/perseus-computing-llc/perseus-vault

Follow the installation instructions in the repository README, then restart your MCP client.

Persistent, encrypted memory for AI agents. One Rust binary, one file, no cloud.

Published onOfficial MCP Registry·Glama·mcpservers.org·Lulu MCPs·Docker (GHCR)

Give your agents memory that survives the session, so they stop re-deriving what they already learned and stop repeating past mistakes. Hybrid recall (BM25 + dense + RRF), bi-temporal history, andAES-256-GCMat rest, exposed as169 canonical MCP toolsthat work with any host. Legacymimir_/mneme_aliases were removed in the 2026-27 major release and are not counted separately.73.8% on LongMemEval's official harness(vs Zep 63.8%, Mem0 49.0%).One binary. One file. No Docker. No Postgres. No cloud.Local-first, air-gap ready, MIT.

curl -sSf https://raw.githubusercontent.com/Perseus-Computing-LLC/perseus-vault/main/scripts/install.sh | sh

That's it. Perseus Vault is installed to~/.local/bin/perseus-vault. Start it:

perseus-vault serve --db ~/.perseus-vault/data/perseus-vault.db

Encryption is enabled automatically for the default installation.The first run creates~/.perseus-vault/secret.keywith owner-only permissions and an encrypted database canary. Back up that key: it cannot be recovered. Explicit--encryption-keypaths remain supported, and existing plaintext databases are preserved for migration withperseus-vault init --rekey. Usedoctorto inspect the actual on-disk state.

macOS note (Apple Silicon).A freshly built or copied binary is SIGKILLed on first run (Killed: 9, no other output) by the OS binary policy — even with no quarantine attribute. The one-line installer and thebootstrap.shbuild-from-source installer ad-hoc code-sign Perseus Vault for you. If you build the binary yourself, sign it onceafter each rebuild:

cargo build --release cp target/release/perseus-vault ~/.local/bin/perseus-vault codesign --force --sign - ~/.local/bin/perseus-vault # required on Apple Silicon; fixes "Killed: 9"

--forcere-signs an already-signed binary (needed after every rebuild); the step is harmless on Intel macOS and unnecessary on Linux/Windows.

Then wire your MCP client(s) — and the full recall/capture loop — in one command:

perseus-vault install-client --hooks --rules

This autodetects Claude Code / Codex / Cursor (pass--client <name>for claude-desktop, hermes, windsurf, vscode, zed, or generic;--all-detectedwires every detected client), merges the MCP server registration into the client's config without clobbering anything (a.bak-perseusbackup is written first), points every client atone shared memory database, registers the session lifecycle hooks (recall injection on SessionStart, hygiene on session end — thedocs/lifecycle-hooks.mdcontract), and appends the memory usage rules toCLAUDE.md/AGENTS.md. Re-running is a no-op; add--dry-runto preview every file it would touch.

Or connect any MCP host by hand (Claude Desktop, Cursor, Hermes Agent, Perseus, etc.):

{ "mcpServers": { "perseus-vault": { "command": "perseus-vault", "args": ["serve", "--db", "~/.perseus-vault/data/perseus-vault.db"] } } }

When the primary consumer is an agent, the interface isMCP— the agent adopts the Vault through its MCP client, and no per-machine CLI install is needed beyond running the server itself:

# 1. Run the server (one line) perseus-vault serve --db ~/.perseus-vault/data/perseus-vault.db & # 2. Register it in the agent's MCP client config # { "mcpServers": { "perseus-vault": { # "command": "perseus-vault", # "args": ["serve", "--db", "~/.perseus-vault/data/perseus-vault.db"] } } } # 3. Verify the agent-facing surface perseus-vault doctor

perseus-vault install-client --hooks --ruleswires the whole recall/capture loop for Claude Code / Codex / Cursor / Hermes in one command. For the agent-facing capability map — which tool does which job, and the planning-boundary pattern — seedocs/integration/agent-adoption.md.

# Start Perseus Vault perseus-vault serve --db memory.db & sleep 1 # Remember a fact (via MCP JSON-RPC on stdio) echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"perseus_vault_remember","arguments":{"category":"demo","key":"hello","body_json":"{\"text\":\"Hello from Perseus Vault!\"}"}}}' | perseus-vault serve --db memory.db # Search for it echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"perseus_vault_recall","arguments":{"query":"Hello"}}}' | perseus-vault serve --db memory.db

Perseus Vault keeps three planes distinct:

- Implicit working contextis the host's current prompt, transcript, and any context block a client chooses to inject. It is ephemeral and host-owned; it is not persisted merely because Vault returned it.
- Explicit durable memoryis written by an explicitperseus_vault_remember,perseus_vault_capture,write, orcaptureoperation. The Vault server owns the SQLite record, history, journal, decay, archive, and purge lifecycle.
- Derived projectionsinclude consolidated or synthesized records and exported Markdown. They carry provenance, but they are not a replacement for the durable source records and may need separate cleanup.

perseus-vault prepareandperseus_vault_contextread durable records to produce a bounded, task-relevantactive working context. This is a rolling snapshot, not a background write or a promise that the client will retain it: refresh it when the task changes, and do not treat prompt text as durable memory unless an explicit capture/write operation succeeds. Recall-first output is budgeted (1500 characters by default, 6000 for large-window hosts, or an explicitmax_context_chars); thealways_onset is capped at five. Seeretention and context semantics.

Lifecycle hooks and client installers are optional orchestration. They request server-owned recall, capture, maintenance, and refresh work; they do not become a second store or change retention policy. If the server or a hook is unavailable, continue the task without injected memory and surface the degraded state. A host integration may have an explicitly configured local fallback, but that fallback must be labeled local-only and must not be presented as durable Vault recall; a failed explicit write must never be reported as persisted. For upgrade/recovery steps, use theupgrade and migration playbook.

Perseus Vault is a standard MCPstdioserver — the sameperseus-vault servecommand works everywhere. Runperseus-vault doctorto validate your install and print this matrix locally.

Copy-paste config snippets for each:docs/clients/.

Then wire therecall → work → capture → consolidateloop to your client's session events (SessionStart/Stop hooks for Claude Code, Codex, and Cursor, plus a portable AGENTS.md fallback):docs/lifecycle-hooks.md.

Composing with a memory washer (CoalWash) and a runtime output compactor (Noisegate) for end-to-end context-budget control:[docs/integration/context-budget-stack.md.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.