A local, portable memory layer for AI conversations: SQLite underneath; sqlite-vec and FTS5 for retrieval (semantic search and keyword search, fused together); bi-temporal supersession, so nothing is ever overwritten; a human-approval write gate; and a six-tool MCP (Model Context Protocol — the standard Claude uses to call external tools) server running on a repurposed HP MicroServer. Built from June 2026 onward. Still evolving.
This is the reconstructed build history: what got decided, why, what got rejected along the way, and what’s still open. It draws on the full conversation record, the project’s own settled documentation (the decisions register, the as-built record, the gaps log), and the live mem-local store itself — checked against each other rather than any one of them taken as automatically right.
New to this project, or landing on one of these pages from somewhere else? Start with the glossary — it defines the jargon (FTS5, RRF, sqlite-vec, “the register”) and the one naming collision worth knowing about before Stage 2.
The timeline
- Origin & requirements — asking Claude what it lacked, before deciding anything
- Architecture decisions — eight decisions, four reversals, and two more that followed within the fortnight
- Research deep-dives — embeddings, entity resolution, and a fork base that failed inspection
- Build & setup — the practical, occasionally messy deployment
- Conventions & discipline — the small rules that keep the store honest
- Open questions / evolving edges — what’s still unresolved
Why X, not Y
Four standalone pieces on the decisions that most set this apart from other approaches — pulled together from across the timeline rather than repeated there.
- Why a graph-shaped store, not a vector dump
- Why a human-approval write gate, not auto-commit
- Why bi-temporal supersession, not delete-and-overwrite
- How this compares to the common personal-memory home-lab patterns
Roadmap & how it works
- Build roadmap — every stage the project has gone through, what’s live right now, and what’s still ahead, in one scannable list.
- How it works, as a diagram — the write/read cycle and what it runs on, in one picture.
- The graph shape — what a node and an edge actually carry, and a real corner of the graph pulled live from the store.
- A bi-temporal fact, traced — one real decision, reversed twice in a day, followed through the log to show why neither version gets deleted.
Reconstructed from the claude.ai conversation export, the project’s own artefacts, and live queries against mem-local itself.
