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.

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

What differs

deja-vuSpecStory
How sessions are capturedreads 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 installindexed on the first runonly sessions recorded while the extension or wrapper was active (or manually imported)
Files added to your git reponone by default (optional .deja/memory.jsonl for curated decisions only).specstory/history/*.md in each workspace
Supported harnesses43 CLI, IDE and desktop agentsCursor, 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 hooksfocused on Markdown archival, search, and cloud sharing
Diff & line attributiondeja blame file:line and deja review cross-reference git diffs against past session edits and failuresfile-level Markdown transcripts
Installsingle 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.