Tags: Avijit07x/claude-db
Tags
feat: persistent memory for Claude Code, backed by any database Records why decisions were made across sessions and injects them back automatically, so architecture and rationale never need re-explaining. Capture reads Claude Code's session transcripts rather than watching tool calls. A hook sees a file path; the transcript has the prompt and the agent's reasoning, which is the part worth remembering. Observation ids are derived from content (session + turn timestamp + prompt), so reprocessing rewrites a row instead of duplicating it. That makes flushing idempotent, which is what allows memory to be written on every prompt rather than only at SessionEnd. A byte cursor per session means each flush parses only the new tail. Recall is not left to the model. SessionStart injects recent summaries and UserPromptSubmit injects the best match in full, so reasoning is in context before the agent decides anything. Storage is one MemoryStore interface with three adapters; the connection string picks the backend. SQLite via Node's builtin node:sqlite, so there is no native build step. Includes MCP tools with three-layer progressive disclosure, hybrid search fused by reciprocal rank, a zero-dependency local embedder, secret redaction, GitHub Actions CI and release automation, and 87 tests.