A SpecStory alternative for CLI and 43 coding agents
search and recall over the transcripts already on disk, without per-repo Markdown folders or CLI wrappers
SpecStory saves coding-agent conversations as Markdown files under .specstory/history/ in each workspace so you can read, search, or share them. For terminal agents such as Claude Code or Codex CLI, it wraps the agent invocation (specstory run claude) to capture the session as it runs.
deja-vu starts from the fact that Claude Code, Codex, Cursor, Windsurf, Gemini CLI, OpenCode and thirty-seven other agents already write their transcripts to disk in their normal invocation. One Go binary indexes those existing files into a local SQLite + FTS5 database, strips credentials during indexing, and serves recall back to your agents over MCP and hooks.
brew install deja-vu && deja install --auto indexes your existing Claude Code, Codex and Cursor history in ~15 seconds without wrapping your CLI commands — vshulcz/deja-vu on GitHub.brew install deja-vu && deja install --autonpx @vshulcz/deja-vu sourcesWhat differs
| deja-vu | SpecStory | |
|---|---|---|
| How sessions are captured | reads the transcripts each agent already writes (`~/.claude/projects`, `~/.codex/sessions`, Cursor `state.vscdb`, and 40 more) | VS Code / Cursor extension, or wrapping terminal commands via specstory run |
| History from before install | indexed on the first run | only sessions recorded while the extension or wrapper was active (or manually imported) |
| Files added to your git repo | none by default (optional .deja/memory.jsonl for curated decisions only) | .specstory/history/*.md in each workspace |
| Supported harnesses | 43 CLI, IDE and desktop agents | Cursor, VS Code, Claude Code, Codex CLI, Gemini CLI |
| Agent recall (MCP & hooks) | built-in stdio MCP server (deja mcp) + session-start, pre-edit, and compaction recovery hooks | focused on Markdown archival, search, and cloud sharing |
| Diff & line attribution | deja blame file:line and deja review cross-reference git diffs against past session edits and failures | file-level Markdown transcripts |
| Install | single 20 MB Go binary (MIT) | IDE extension + CLI + optional cloud account |
No wrapper around claude or codex
If you launch claude, codex, gemini or opencode directly in a terminal, an IDE task, a tmux pane, or a script, those sessions are already on disk. Because deja reads the native storage directories directly — including Codex's zstd-compressed rollouts and Cursor's SQLite state.vscdb — you never lose a session because you forgot to prefix the command with a wrapper.
Clean working trees, curated repo memory
Committing full raw transcripts into a repository creates multi-megabyte diffs full of dead ends, tool outputs, and accidental tokens. When you want teammates' agents to inherit what your sessions learned, deja repo candidates extracts the specific decisions, rejected approaches, and gotchas from your history and writes only the ones you pick into a merge-friendly .deja/memory.jsonl after secret and path redaction. When you actually want a full transcript as Markdown or self-contained HTML, deja share <id> exports it on demand.
When SpecStory fits better
- You specifically want every raw conversation automatically saved as a Markdown file inside your project folder on every turn.
- Your workflow centers on publishing hosted transcript links through SpecStory's web service.
Questions people ask
How do I search Cursor and Claude Code history without putting .specstory folders in every repo?
Install deja-vu (brew install deja-vu && deja index). It indexes Cursor's state.vscdb and Claude Code's ~/.claude/projects into a central local database under ~/.cache/deja, leaving your project directories untouched.
Can deja-vu still export a session to Markdown when I want to share it in a PR or issue?
Yes. Run deja share <id> for redacted Markdown or deja share <id> --html for a standalone HTML file with secrets, home paths, and internal hostnames stripped.
Every memory tool, compared · claude-mem alternative · Basic Memory alternative · Exporting sessions
Found this useful? Star deja-vu on GitHub.