skillfed
REPO

akitaonrails/ai-memory

The core problem ai-memory solves is embarrassingly simple to state: LLM coding agents forget everything when a session ends. You quit Claude Code, come back in Codex, and spend the first twenty minutes re-explaining what you were doing, what you tried, and what failed. ai-memory attacks this by running a persistent MCP/HTTP server that hooks into agent lifecycle events - session start, session end, tool calls, compaction checkpoints - and compiles those observations into a git-versioned markdown wiki. The next agent gets a bounded handoff before its first prompt.

The design choice that makes this interesting is what it explicitly refuses to be. There is no vector database to operate, no write_note ceremony, no manual context-loading. The wiki is plain markdown files in a git repo - greppable, openable in Obsidian, backed up with rsync. LLM consolidation is opt-in; without any API key, you still get FTS5 search, rule-based summarization, and entity-match retrieval. The system degrades gracefully rather than failing closed when you don't want to pay for another LLM call.

The support matrix is genuinely wide. Claude Code, Codex, Cursor, Gemini CLI, Devin CLI, OpenCode, Kiro CLI, Grok Build CLI, Kimi Code, and a dozen others are listed as supported, each with their own hook installation path. The managed workstream feature - ai-memory run claude, then ai-memory run codex --yolo - goes further than just handoffs: it maintains a portable visible-event ledger and native per-harness session resume across harness switches. That's a meaningful distinction from a simple summary handoff.

The retrieval architecture layers several signals: FTS5, entity-match RRF (up to 10 specific nouns extracted per page into frontmatter), graph-neighbor expansion, and optional vector RRF when an embedding provider is configured. Before truncation, a bounded adjustment favors maintained rules, decisions, procedures, and gotchas pages over episodic session evidence - but the README is careful to note this affects retrieval provenance only, and retrieved text remains untrusted historical evidence regardless of its namespace or rank. That's a sensible epistemic boundary.

The security model is honest about its defaults. Loopback-only with no auth is the starting point, explicitly called safe for a single-user laptop. Non-loopback without auth now fails closed. TLS is deliberately not handled by the binary itself - the README points to Caddy and Cloudflare Tunnel compose templates instead, which is the right call.

Built in Rust, requiring 1.95+, with Docker images for amd64 and arm64. The acknowledgement section credits Claude Code (Anthropic Claude Opus 4.7) as a collaborative builder, which is either a charming bit of self-reference or a useful data point about the project's own dogfooding, depending on your disposition.

The scope has grown considerably - the support matrix alone spans more than thirty rows. Whether that breadth is a strength or a maintenance liability depends on how actively each harness integration is tested. The README notes that native Windows support is experimental and that some agents like Grok and Zero silently discard SessionStart stdout, requiring manual handoff recovery via MCP. These are honest disclosures, not buried caveats.

A Rust MCP server that turns agent lifecycle hooks into a persistent, grep-able markdown wiki - no vector DB required, LLM consolidation optional.

Sources & links