Memory tools that wait for a `remember` call collect what you thought to save, which is rarely what you needed. Hanging the work on lifecycle hooks means the context appears before you ask, and the compaction handover covers the one gap that hurts most — everything you explained in the first hour, gone at the compact. Local storage keeps it free and private; the trade is that the quality of what gets injected depends on the classifier, so expect to prune occasionally.
A local memory server for coding agents, paired with five lifecycle hooks that do the remembering automatically. On session start it injects the project state, recent sessions, commits and decisions; on compaction it writes a handover; on exit it extracts commits, decisions and error-fix pairs from the transcript. Claude Code, Codex CLI and Gemini CLI share one local database, so context carries between them.
- Automatic injection rather than a `remember` call — the `SessionStart`, `UserPromptSubmit`, `PostToolUse`, `PreCompact` and `Stop` hooks each do one job, and none of them need a command from you
- A compaction handover: before the context is compressed, the working state, hot files and last build status are carried across
- Session tools for when you want them — `session_start`, `session_end`, `session_history` and `search_sessions` for semantic search over past work
- A classified memory store — `memory_store` tags each entry as observation, decision, learning, error or pattern; `memory_search` returns an index first and `memory_get` fetches the body, so a large store does not flood the context
- A knowledge graph over those memories — `graph_connect` links two with a typed relation such as solves or causes, `graph_explore` walks it, `memory_related` mixes graph and semantic neighbours
- An error archive that fills itself: `solution_record`, `solution_find` and `solution_suggest`, fed automatically when a Bash command fails and is later fixed
- Task tracking and verification — `task_add`, `task_update`, `task_list`, `task_suggest` from TODO comments, plus `verify_build`, `verify_test` and `verify_all`
- Feature toggles in a plain JSON config, with an environment override per feature for one-off runs
Node.js and a global install of the npm package `passbaton`, version 2.1.3, which registers the MCP server and the hooks for whichever agents it finds. `WORKSPACE_ROOT` is required; `MCP_HOOKS_DISABLED`, `LOG_LEVEL` and `LOG_FILE` are optional. Everything is stored in a local SQLite database with a full-text index and local embeddings — no API key, no network call, no per-token cost. Codex file-change tracking is not wired yet, and Gemini's session-start injection is advisory in the upstream CLI, so on that client the continuity comes from saved history rather than injected context.
One command — npm install -g passbaton
