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.

Try it on your existing transcripts: 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 --auto
$npx @vshulcz/deja-vu sources
deja-vu on GitHubQuick start →

What differs

deja-vuBasic Memory
Where memory comes fromthe session transcripts 43 coding agents already write to disk, plus optional deja remember notes and .deja/memory.jsonlMarkdown files written explicitly by you or by the model calling write_note
First-day recallmonths of prior sessions are searchable immediately after deja indexstarts empty unless you point it at an existing Markdown vault
What survives in the indexexact error messages, shell commands that fixed a failure, file diffs, and session decisionsstructured summaries and observations the model chose to record
Proactive hookssession-start brief, prompt recall, pre-edit file history, failed-command fix lookup, and compaction recoveryon-demand MCP tool calls
MCP token footprint1 tool (deja with modes), ~477 tokensmultiple note read/write/search/canvas tools
Runtimesingle 20 MB Go binaryPython (uvx basic-memory)
LicenseMITAGPL-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.