A Basic Memory alternative for coding agents
recall from the sessions your agents already ran, without maintaining a Markdown vault
Basic Memory is an MCP server that builds a local knowledge graph from Markdown files on disk, compatible with Obsidian. When an assistant calls its MCP tools to write or update a note, that note becomes searchable in future conversations.
deja-vu is built for software engineering sessions where nobody stopped to write a note. Every coding agent — Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Windsurf and thirty-seven others — already logs every prompt, file edit, shell command and exit code to disk. deja indexes those files as they are and hands the relevant history back over MCP and hooks.
brew install deja-vu && deja install --auto indexes your Claude Code, Codex and Cursor history in ~15 seconds with no Python runtime or manual note-taking — vshulcz/deja-vu on GitHub.brew install deja-vu && deja install --autonpx @vshulcz/deja-vu sourcesWhat differs
| deja-vu | Basic Memory | |
|---|---|---|
| Where memory comes from | the session transcripts 43 coding agents already write to disk, plus optional deja remember notes and .deja/memory.jsonl | Markdown files written explicitly by you or by the model calling write_note |
| First-day recall | months of prior sessions are searchable immediately after deja index | starts empty unless you point it at an existing Markdown vault |
| What survives in the index | exact error messages, shell commands that fixed a failure, file diffs, and session decisions | structured summaries and observations the model chose to record |
| Proactive hooks | session-start brief, prompt recall, pre-edit file history, failed-command fix lookup, and compaction recovery | on-demand MCP tool calls |
| MCP token footprint | 1 tool (deja with modes), ~477 tokens | multiple note read/write/search/canvas tools |
| Runtime | single 20 MB Go binary | Python (uvx basic-memory) |
| License | MIT | AGPL-3.0 |
Why coding sessions need transcript indexing, not just note-taking
When a build fails with a cryptic linker error or a migration breaks staging, the thing you need three weeks later is rarely a high-level note you remembered to ask the agent to save. It is the exact flag passed to the compiler, the environment variable that fixed the test, or the reason a seemingly obvious retry loop was reverted (repeated mistakes). Because deja indexes the transcript itself, deja fix "<error>" and deja blame path:line find those answers even when nobody wrote a summary.
When you do want explicit notes, deja has them without leaving the tool: deja remember "always run go generate before testing internal/schema" pins a project note, and deja repo add commits shared decisions into .deja/memory.jsonl so teammates get them on clone.
When Basic Memory fits better
- You maintain a personal Obsidian vault for general research or writing outside of coding agents and want Claude Desktop to read and edit those Markdown files directly.
Questions people ask
Can I use deja-vu alongside Basic Memory?
Yes. Basic Memory manages your Obsidian Markdown vault while deja-vu indexes your coding-agent transcripts across Claude Code, Codex, Cursor, and 40 other harnesses.
Does deja-vu support distilling standing rules from past sessions?
Yes. Run deja rules candidates to extract repeated corrections you gave your agents across sessions, or deja repo candidates to pick decisions and rejected approaches for the repository (one rules file).
Every memory tool, compared · claude-mem alternative · SpecStory alternative · Day zero benchmark
Found this useful? Star deja-vu on GitHub.