โญ +120 today Rust

akitaonrails/ai-memory

๐Ÿ”— https://github.com/akitaonrails/ai-memory โ†—

Long-term memory for AI coding agents. Quit Claude Code mid-task, start OpenAI Codex in the same directory, continue without re-explaining the architecture, the failed approaches, or the open questions. Why ai-memory Your coding agent already has a memory feature. Claude Code takes its own notes, Cursor remembers some things, and every platform is adding more. All of them share the same walls: the notes live on one machine, belong to one agent, and vanish from view the moment you switch tools โ€” or teammates. ai-memory is what's on the other side of those walls. It follows you across agents. Twenty-plus harnesses โ€” Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Grok, Devin, Kimi, Kiro, and more โ€” feed one shared memory. Quit Claude Code mid-task, open Codex in the same directory, and the next agent picks up a real handoff: where you left off, what failed, what's still open. Handoffs are a protocol here, not a convention โ€” typed, owned, claimed exactly once. It follows you across projects. A small profile of how you usually work โ€” your package manager, test layout, architecture habits โ€” reaches every new repository at session start, so you stop re-explaining yourself. It is a default below each repository's rules file, on by default for a single user and opt-in, private per person, on a shared server. See docs/cross-project-profile.md . It follows you across machines. Memory lives in a server you run โ€” on the same laptop, a homelab box, or wherever โ€” so the project you left on the desktop is the project you resume on the laptop. Same knowledge, same open questions. It works for a team. Point everyone at one server and what one person's sessions learn, everyone's agents can retrieve. Knowledge is shared per project; personal handoffs stay personal. Multi-user auth, per-person attribution, and an audit log are built in โ€” not a paid tier. Your memory is plain markdown. The source of truth is a git-backed wiki of ordinary .md files: grep it, open it in Obsidian, edit it by hand, rsync it. The database is a derived index that can always be rebuilt from the files. No vector store to babysit, nothing held hostage in a binary blob. It captures the work itself, silently. Lifecycle hooks record what actually happened โ€” prompts, tool calls, session boundaries โ€” sanitized at a typed privacy boundary before anything is stored, then consolidated into readable pages. No "remember this" ceremony. And the default path uses zero LLM calls : capture, search, and handoffs all work with no API key at all. It ages gracefully, without an LLM. Memory decays on a schedule you can tune per tier, and the memory you actually use decays slower โ€” open a page, search it, or reach it through a link and it earns its keep. When episodic notes go cold they can be compacted down to their durable facts (file paths, error codes, decisions) instead of dropped, near-duplicates collapse into one, and likely contradictions get flagged โ€” all with zero API calls . Nothing is hard-deleted: the original stays in git and the version chain ( restore-page brings it back). Access-weighted retention is always on because it can only ever keep memory longer ; the parts that rewrite or drop content (compaction, dedup, per-tier curves) stay off by default until you turn them on. And it can dream, if you let it. Point it at an LLM and an opt-in background pass will, while you're idle, rewrite whole clusters of cold notes into single coherent pages โ€” cancelling the moment you come back to work. It never deletes a source (the pre-merge versions stay reachable), it's off by default, and it's gated on a recall eval before it could ever become default behavior. The zero-LLM path above is what runs unless you ask for more. It tells you the truth about itself. One self-contained binary. Purge commands that say exactly what "deleted" means. A measured write ceiling (~700/s) instead of a guessed one. An audit log of every mutation. Boring, in the way infrastructure should be. How it works capture โ”€โ”€โ–ถ consolidate โ”€โ”€โ–ถ recall โ”€โ”€โ–ถ handoff hooks session-end search next agent, observe summaries as + brief any harness silently wiki pages injection Agents emit sanitized observations through lifecycle hooks as you work. At session end, observations become coherent markdown pages in the project's wiki (optionally LLM-written; useful even without). The next session โ€” any agent, any machine โ€” gets a bounded brief and can search everything: full-text, entities, links, and (optionally) vectors, fused into one ranking. Cross-agent handoffs carry the baton explicitly. The full design, including the invariants that keep multi-user and multi-session use safe, is in docs/ARCHITECTURE.md . Support matrix Every row below is a first-party integration โ€” MCP registration, lifecycle hooks, or both โ€” kept honest by CI. The full matrix with per-agent notes and caveats is in docs/support-matrix.md . Area Status Linux Supported NixOS module Supported macOS Supported Windows via WSL2 Supported Native Windows Experimental Claude Code Supported Codex Supported Command Code Supported Devin CLI Supported OpenCode (V1/V2 auto-detected) Supported OpenCode V2 compatibility aliases ( opencode2 , opencode-v2 , open-code2 ) Supported Cursor Supported Gemini CLI Supported Oh My Pi / OMP Supported Pi Supported Crush Managed-only Managed workstreams Opt-in Claude Desktop MCP-only OpenClaw Supported Antigravity CLI Supported Grok Build CLI Supported Swival CLI MCP-only Zero Supported ZCode Supported Kimi Code Supported Kiro CLI Supported Pool Hooks-only GitHub Copilot CLI Supported VS Code Copilot MCP-only Zed MCP-only Muse Code MCP-only Hermes Agent Supported GrizzyBot Supported LLM/auth providers Supported Embedding providers Supported Coming from another tool? Most agent-memory tools optimize one thing โ€” extracting atomic facts per turn, a temporal knowledge graph, an agent-editable memory OS, or a hosted context API. ai-memory optimizes something different: a git-backed markdown wiki as the source of truth , with a derived index for retrieval, captured automatically from lifecycle hooks, shared across agents, machines, and people, and working with zero LLM calls by default . Here's what carries over from each, and what you gain: Coming fromโ€ฆ What's similar What you gain Mem0 / fact extractors (LangMem) Automatic per-turn capture Memory compiles into readable pages you own and edit, not opaque fact rows; retrieval fuses FTS + entity + graph (+ optional vectors), not vector-only Zep / Graphiti (temporal KG) Temporal reasoning, typed relations Bi-temporal-lite ( as_of , version-filtered search) and typed edges without standing up a graph database โ€” on one binary mcp-memory-service (closest sibling) SQLite + local embeddings, hook capture, typed edges, honest numbers โ€” and, on 2.4, per-tier decay curves, extractive compression, DBSCAN cold-cluster dedup, access reinforcement, and contradiction flagging Human-editable markdown pages instead of fact-rows, cross-agent claim-once handoffs, and the same aging machinery done zero-LLM by default, reversibly (supersede-not-delete + restore-page ), and off by default basic-memory (file-first sibling) Markdown-on-disk as the source of truth Automatic lifecycle capture and a derived FTS/entity/graph index on top, cross-agent handoffs, and multi-user sharing built in Claude Code built-in memory "Remember my project" convenience, zero setup Synced across machines and agents, searchable, team-capable, and captures tool lifecycle โ€” not a per-laptop MEMORY.md Hindsight / OpenViking (hosted, LLM-required) Living pages / document memory with a background consolidation loop โ€” and, on 2.

ๅ…งๅฎน็‚บๆ”ถ้›†็•ถๆ—ฅๆŠ“ๅ–็š„ repo ๆ่ฟฐๅŽŸๆ–‡๏ผŒๅฎŒๆ•ด่ณ‡่จŠ่ซ‹่ฆ‹ GitHub ๅŽŸ้ ใ€‚