Symbol Resolver.
Three real ones.
rustc-driver for Rust, ts-server adapter for TypeScript,
Pylsp for Python. They take syntactic names and canonicalize them to
one logical symbol per name.
// Three names, one canonical symbol super::spawn(args) // → crate::manager::WorkerPool::spawn manager::WorkerPool::spawn(args) // → crate::manager::WorkerPool::spawn spawn(args) // in scope of `use crate::manager::*` → crate::manager::WorkerPool::spawn
Soft-Redirect Hooks.
Never blocking.
When the AI host calls Grep on something resolver-shaped, a PreToolUse
hook quietly injects a hint pointing at find_references. It's fail-open
— if Mneme isn't running, the original Grep goes through unchanged.
# Agent calls: claude> Grep "WorkerPool::spawn" ./src # Mneme hook injects: hint: mneme.find_references("WorkerPool::spawn") is structural & faster returning 12 exact callers, 5 deps, 3 tests instead of 47 regex hits.
Grep is how you find code. Mneme rewrites that habit without breaking the host. Three-layer hook architecture: PreToolUse for the hint, ledger for the decision, post-completion for telemetry.Vision SPA.
14 views.
Call graph, dependency mesh, force-directed galaxy, time-travel, treemap, sunburst, sankey, ProjectGalaxy3D (full 3D rotation), hierarchy tree, community clusters, more. All paint in under 500 ms on a 50k-node graph thanks to server-pre-computed layouts.
$ mneme view
→ Opening Vision SPA on http://127.0.0.1:7331
→ 14 views ready · 50k-node layout pre-computed
50 MCP Tools.
All local.
Every query the AI needs, exposed as standard MCP tools over stdio. Recall, blast radius, call graph, audit suite, refactor suggestions, drift detection. Local, deterministic, audited. Output schemas are honest.
// Sample call from an MCP-aware host tools/call: mneme_recall symbol: "WorkerPool::spawn" budget_tokens: 2000 // Returns structured response: callers: 12 · deps: 5 · tests: 3 files: [supervisor/src/health.rs, cli/src/commands/build.rs, ...] decisions_assumed: [idempotency, retry-policy]
Local-Only.
Zero outbound.
Daemon binds to 127.0.0.1 only. Embeddings via ONNX Runtime on your
CPU. Optional LLM via llama.cpp on your CPU/GPU. The graph lives in plain SQLite
under ~/.mneme. No telemetry. No cloud sync.
$ mneme doctor --network
✓ daemon socket: 127.0.0.1:7331 (origin-validated)
✓ outbound: 0 connections (default config)
✓ telemetry: not configured (never has been)
○ federation: disabled (opt-in only)
Hot Rebuild.
On every save.
The daemon watches your tree. Save a file and the affected slice of the graph re-builds in under a second. Not the whole project — just the symbols that depend on what changed.
$ mneme log
✓ supervisor/src/manager.rs · saved
✓ rebuilt: 14 symbols, 32 edges · 287 ms
✓ embeddings: 3 vectors refreshed
○ idle