Four layers of memory, from scratch-pad ephemera to shared system knowledge.
Claude has no built-in memory. Every conversation starts blank. The context window holds the current conversation, but when the session ends, everything in it is gone. ClaudeOS solves this with four layers of persistence, each serving a different purpose and timescale.
The critical insight: JSONL and SQLite are not mirrors. JSONL is the event log — append-only, what happened. SQLite is the knowledge base — curated, what's true now. They serve different functions and should never be treated as duplicates of each other.
When a Claude role starts a session, it reads its handbook (30–50 lines of navigation). If it needs context, it queries its SQLite database. If it needs history, it reads its JSONL log. If it needs to know what another role did, it reads the shared project databases.
At the end of a session, significant events get appended to JSONL. Knowledge that should persist gets written to SQLite. Session worknotes get overwritten next time. The cycle continues.
The three memory roles — mnemos (architect), tagger (taxonomy), and claudegit (version control) — maintain the system itself. They don't store domain knowledge; they maintain the infrastructure that domain roles use to store theirs.