A metalmind for Claude. Store decisions in copper. Tap them when you need them. Claude never meets you cold again.
Every claude invocation is a first meeting. Yesterday's architectural call, the reason you rejected that library, the 40-minute debug you just finished — gone by tomorrow. metalmind is the place Claude stores things, and the way Claude gets them back — without burning context tokens on tool schemas to do it.
Website: metalmind.mzyx.dev
-
Persistent memory across sessions.
metalmind store copper "<insight>"(alias:save) deposits a decision into your local Obsidian vault. metalmind proposes the path, wikilinks, and frontmatter; you approve; it writes. Tomorrow's session recalls it as if yesterday never ended. -
Recall without the MCP token tax.
metalmind tap copper "<query>"(alias:recall) is a Bash call, not an MCP tool. Zero schema bloat per session — most memory tools silently inject 3-5 tool schemas into every Claude Code session before you've typed a prompt. We stamp the command into yourCLAUDE.mdso Claude reaches for it naturally.--deepescalates with backlink-walks;--expandreturns hits plus the surrounding graph. -
Sight across repos, not just one.
metalmind burn bronze "<query>"(alias:graph) queries a code graph of every repo in your forge. HTTP-route-match edges connect caller → handler across services. Every inferred edge carriesINFERRED_NAME/INFERRED_ROUTEprovenance so Claude can trust-grade what it reads. -
Reversible to zero.
metalmind uninstallstops containers, unloads the watcher service, restores your prior output style, clears the settings we changed, and removes shell aliases. It never touches your notes.
Most memory tools register themselves as MCP servers. That design injects a handful of tool schemas (search_memory, recall, store, …) into every Claude session before you prompt anything. Those schemas eat context tokens you could be using for the actual task.
metalmind takes the opposite bet: the recall surface is a CLI, Claude learns the command once from your stamped CLAUDE.md, and every session starts with a clean context. The watcher, indexer, and embedding stack still live locally — they just don't live in Claude's tool registry.
Today — from source:
git clone https://github.com/Nikitzu/metalmind.git
cd metalmind/cli
pnpm install && pnpm build && pnpm link --global
metalmind initSoon — via npm:
npm install -g metalmind
metalmind initThe wizard walks six steps: prereq check, vault scaffold, Python engines via uv tool install, Docker stack, watcher service (launchd on macOS, systemd on Linux), MCP registration, optional memory routing. See the install-flow diagram for what each step does.
- macOS or Linux (WSL2 works; native Windows not supported)
- Claude Code CLI v2.1+
- Docker running
- Python 3.10+, uv, git, Node 20+
Run metalmind pulse (alias: doctor) any time to check environment + install state.
Every themed (Scadrial) verb has a classic alias. Both always resolve — theming is cosmetic.
| Scadrial | Classic | What it does |
|---|---|---|
metalmind init |
metalmind init |
Interactive setup wizard |
metalmind pulse |
metalmind doctor |
Verify install state |
metalmind store copper <insight> |
metalmind save <insight> |
Deposit a decision into the vault |
metalmind tap copper "<query>" |
metalmind recall "<query>" |
Recall — add --deep or --expand for more depth |
metalmind burn bronze "<query>" |
metalmind graph "<query>" |
Code-graph query |
metalmind burn iron <symbol> |
metalmind symbol <symbol> |
Pull a symbol + neighbors |
metalmind burn steel <old> <new> |
metalmind rename <old> <new> |
Coordinated rename |
metalmind burn zinc "<bug>" |
metalmind debug "<bug>" |
Dispatch /team-debug |
metalmind burn pewter |
metalmind reindex |
Rebuild code graph |
metalmind forge <…> |
metalmind group <…> |
Cross-repo graph groups |
metalmind burn aluminum |
metalmind wipe |
Uninstall alias |
Pick a flavor during init — it only changes which variant your stamped CLAUDE.md recommends to Claude. The CLI always accepts both.
One verb, one job. Each engine is swappable:
| Concern | Engine |
|---|---|
| Semantic recall | Ollama + Qdrant, nomic-embed-text, all local |
| Vault | Obsidian at ~/Knowledge/ |
| Symbol navigation + rename | Serena (LSP-backed) |
| Code graph + cross-repo edges | graphify |
| Incremental indexing | watchfiles + launchd / systemd |
| Forge (cross-repo merge) | metalmind itself — HTTP-route match + name-match edges with provenance |
Your notes, embeddings, and code graphs never leave your machine. The only network calls metalmind makes are the ones you already make to Claude Code's own API.
metalmind uninstallStops and removes the Docker containers, unloads the watcher service, strips MCP entries, clears CLAUDE_CODE_DISABLE_AUTO_MEMORY from settings, restores your prior output-style, removes shell aliases. Python tools stay unless you pass --remove-serena --remove-graphify --remove-vault-rag.
Never touches your notes.
docs/prerequisites.md— what to install beforemetalmind initdocs/post-install.md— verification + troubleshootingdocs/customization.md— swapping embedding model, relocating vault, etc.docs/plugins.md— recommended Claude Code pluginsdocs/teams.md— the experimental agent-teams feature
Dev setup lives in cli/README.md.
MIT — see LICENSE. Inspired by Brandon Sanderson's Mistborn Era 1 novels. Not affiliated.