# Memory System — Documentation Set

A personal, cross-project memory system for Claude Code: lightweight, fast, tag-organized,
self-evolving, local-fast with lazy remote sync. Built for a multi-client freelancer who
wants the AI to learn things once and reuse them everywhere, without bloating project repos.

## Read in this order

1. **[01-video-synthesis.md](01-video-synthesis.md)** — Synthesis of the "6 Levels of Claude
   Code Memory" video. What each level/tool is, where memory lives, how it's retrieved, and
   the author's recommendations. Background reading; the source of many ideas below.
2. **[02-system-design.md](02-system-design.md)** — The architecture we settled on. Three
   layers (episodic / knowledge / deferred-semantic), the knowledge-layer internals, data
   model, hooks, sync, and guardrails. **Start here if you only read one.**
3. **[03-architecture-decisions.md](03-architecture-decisions.md)** — ADR log. Every decision
   and *why*, including what we rejected and why (MemPalace, OpenBrain/Mem0, Postgres,
   Recall/LightRAG) and what we deferred (semantic search over the vault).
4. **[04-build-plan.md](04-build-plan.md)** — How a human builds this, step by step. The
   scripts, the hooks, the CRUD lifecycle, the AI's write/query conventions, and the
   Claude Code plugin + skills that package it for global install.

## One-paragraph summary

Two complementary memory types kept as **separate systems**: **episodic** ("what happened,
when") handled by **memsearch** (Milvus Lite, embedded, auto-captured session/journal notes),
and **semantic/knowledge** ("how do we…") handled by a **flat Obsidian markdown vault** that
is the single source of truth. Every note carries **`summary` + namespaced tags** (`tool/`,
`client/`, `domain/`, `convention/`, `scope/`) as first-class metadata — the human-written
router hint and the cross-cutting filters that organize the vault without folders. The vault is
made queryable by a **Graphify knowledge graph** (local Ollama SLM extracts entities/relations
from the notes; free tree-sitter AST builds a code graph per project). Retrieval is
**hook-injected and on-demand** so project repos stay thin. Freshness is **lazy** (a write-time
hook plus a session-start reconcile — no daemon, no cron). Everything is markdown-as-truth and
syncs to a VPS via **git/Syncthing**; the graphs are disposable and rebuilt per machine. The
whole thing ships as a **global Claude Code plugin with skills** so every project knows how to
use it.

_Last updated: 2026-06-04 · knowledge layer = Graphify knowledge graph (supersedes the earlier
Ruby tag-index CLI; metadata frontmatter retained)_
