The missing standard library
for your coding agent.
Seven modules. One vault. Memory that compounds across repos and knows when a decision has been superseded, code intelligence that crosses service boundaries without an indexer, guarded vault sync, daily routines that carry themselves forward - all sharing state, none paying the MCP-schema tax.
One library. Seven closed gaps.
Each module shares state through one vault, one CLI, one stamped CLAUDE.md rule. None registers an MCP tool schema. None duplicates a Claude Code primitive. Click any module below for the deep dive.
MemoryCopper
Recall, save, vault CRUD, temporal supersedes, code-ref validation, and native auto-memory ingest. The rest of the library compounds back into it.
recall --compacttap copper --compact note supersedescribe supersede recall --verify-codetap copper --verify-code ingest auto-memoryingest auto-memory Code intelligenceBronze
Cross-repo graph with HTTP-route and symbol-name edges, extracted from your source. No index step, no external tool.
forge queryforge query symbolburn iron renameburn steel Daily workflowAtium
Action items that carry themselves forward. One-shot archive. Mon-Fri EOD launchd routine.
daily newatium new scribe archivegold routine install eodroutine install eod DeliberationSteel
Seven-persona deliberative council, spawned in parallel, synthesized into a structured verdict.
synodsynod DesktopBrass
Banner / dialog / sticky notifications, wired into the EOD routine and the /save skill.
notify bannerflare banner notify dialogflare dialog notify stickyflare sticky Vault syncDuralumin
Commits and pushes the vault, then asks git whether the remote actually advanced. Refuses commits that would lose notes.
syncduralumin sync --dry-runduralumin --dry-run HealthIron
End-to-end install check: supersede links, code refs, dependency-shipped Intent skills, and leftovers from tools it replaced. The first memory tool that tells you when recall is failing you.
doctor --deeppulse --deep doctor --recall-auditpulse --recall-audit Three benches we keep honest.
Reproducible numbers from bench/ in the repo. Run them yourself.
First-turn token cost
Standing tool-schema tax on a cold session, before you've typed a prompt.
Recall quality at 50k notes
Hybrid retrieval, no rerank, on a corpus of 50,000 Hacker News comments. Zero misses at k=5, every scale.
| vault | hit@1 | hit@3 | p95 |
|---|---|---|---|
| 1,000 | 100% | 100% | 37 ms |
| 10,000 | 100% | 100% | 160 ms |
| 50,000 | 95% | 100% | 617 ms |
Head to head with qmd
hit@1 with rerank on the same fixture: hand-authored gold notes plus same-domain distractors.
| notes | metalmind | qmd 2.1.0 |
|---|---|---|
| 12 | 90% | 85% |
| 100 | 90% | 70% |
| 500 | 90% | 85% |
| 1,000 | 90% | 80% |
Cold session. Old decision. One bash call.
Fresh terminal. Claude has zero context. The stamped CLAUDE.md rule teaches it to reach for tap copper on its own - sub-100ms loopback HTTP, no MCP tool registered, the answer comes from your vault verbatim.
Different tools, different bets.
Native auto memory wins below ~50 notes in one repo - and stays in that repo, on that machine. metalmind earns its install cost once knowledge crosses repo or machine boundaries - and where you want the rest of the standard library too. metalmind ingest auto-memory bridges the two: native notes flow into the synced vault.
Honest read on standing tokens: our ~345 is one-time prose in CLAUDE.md that teaches Claude
when to recall - work that qmd skips. qmd wins the row, but the Scope and hit@1 rows above are
where metalmind earns it back. Pick whichever bet matches the work. Zep is omitted as a column: its temporal knowledge
graph is a hosted-service bet, the same trade the mem0 column already shows. Every competitor cell traces to that
tool's public docs; hit@1 is stated only for tools run on our own bench.
Five steps. A few minutes. Reversible to zero.
- 01 Prereq check - Python, uv, git, and at least one host: Claude Code, Codex CLI, or Cursor
- 02 Vault scaffold - at ~/Knowledge/ or wherever you point it
- 03 Python engines - sqlite-vec + fastembed via uv tool install
- 04 Watcher - launchd on macOS, systemd --user on Linux
- 05 Per-host stamping - multi-select the hosts it found, each gets recall wired in
Every command does one job.
Themed Scadrial verbs and classic aliases - both always resolve. Pick a flavor at init; theming is cosmetic.
Three patterns that compound.
The cookbook lives in the repo. Three highest-impact patterns first; the rest follows the same shape.
Write notes Claude finds
Frontmatter discipline first: project: is the strongest discoverability signal. Tags are cross-cutting themes, not categories. Use kind:slug shortcuts so renames don't break references. Recall before writing - duplicates are the most expensive mistake.
Recall hygiene
Default tap copper covers 90% of cases - start there. Escalate to --deep when one hit is right but you want adjacent context, --expand for broad research. If two rephrasings still miss, you genuinely don't have the note - write it.
What lives where
Plans/ for implementation plans (dated), Learnings/ for durable cross-session lessons, Work/ for project-scoped decisions. Daily/ is a logbook, not a knowledge base - promote insights to Learnings/ when you spot them.