deja-vu

One shared memory for Claude Code, Codex, Cursor and 23 coding agents, indexed from the session history already on your disk — no LLM, just one local Go binary.

Source repo
vshulcz/deja-vu
Stars
★ 1.3k
Last updated
today
License
MIT
Primary language
Go

At a glance

How it runs
CLIMCP serverAgent plugin / skill
Works with
Universal · cross-platformCodex · Claude Code
Cost
Free, no paid service needed
Setup effort
Low · running in minutes
You'll need
Go binary (local)optional: sqlite3, zstd for some harnessesShell / CLILocal filesystem
Typical use
Developers running several coding agents (e.g. Claude Code plus Codex) who want a fix found in one to surface automatically when another agent opens a session
Not a fit if
  • Users who need semantic recall but won't run a local Ollama/LM Studio or embedding endpoint
  • Windows-only teams needing the same battle-tested path as macOS/Linux
  • Users of Cursor, Zed or opencode integrations who won't install sqlite3/zstd
Source review
75/100 · Good

What does this agent do, and when should you use it?

deja-vu is a local Go tool that parses the session files coding agents already write to disk — JSONL stores like Claude Code's, Codex's sessions directory, Cursor's SQLite database — and builds an incremental local inverted index that all agents can query through an MCP server, hooks, and a CLI. Its defining property is retroactivity: from the first run you can search months of history, including sessions from before you installed it, unlike record-forward memory tools such as Mem0 or Letta that start empty. Recall fires automatically at session start, before file edits and command runs (PreToolUse), and after command failures (PostToolUse). Credentials are redacted at index time, and indexing and search stay entirely local. It reports 85.3% hit@1 on LongMemEval-S and ~0.4 ms median lookups over a real 5.2 GB, 143k-message store, with the index at roughly 3% of corpus size.

deja parses each harness's session storage (~/.claude/projects JSONL, ~/.codex/sessions, Cursor's state.vscdb, etc.) into a local inverted index in ~/.cache/deja (records.bin, token buckets, manifest.gob), redacting AWS keys, api_key=/token= assignments, bearer tokens, JWTs, PEM blocks and high-entropy values as it goes. The CLI offers deja <query> full-text search, deja blame <path> for a file's decision history, deja fix <error> for what worked after a past error, deja how <tool> for real invocations, deja ctx for Markdown digests, deja promote for curated decision notes, deja sync for append-only machine-to-machine transfer, and deja forget with tombstones. deja install --auto wires the MCP server (deja mcp, one tool with modes: recall/context/blame/fix/how/remember), session-start recall, and PreToolUse/PostToolUse hooks into every detected harness. Optional deja embed adds semantic recall via a local Ollama/LM Studio or OpenAI-compatible endpoint.

  1. Developers running several coding agents (e.g. Claude Code plus Codex) who want a fix found in one to surface automatically when another agent opens a session
  2. Anyone losing detail to context compaction — deja hands back the 99.8% of commands compaction drops
  3. Engineers joining a project who need to find how a specific error was previously solved on this machine, including pre-install history
  4. Privacy-sensitive teams who refuse to send session data to the cloud: indexing, search and redaction are all local
  5. People sharing a session conclusion with a colleague via deja share, which produces a secrets-scrubbed digest

How do you install or deploy this agent?

macOS/Linux: curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh && deja install --auto (~10s install, ~10s first index). Alternatives: brew install deja-vu; go install github.com/vshulcz/deja-vu/cmd/deja@latest; npx @vshulcz/deja-vu "query" to try without installing; Windows via scoop install deja-vu or downloading deja.exe from GitHub Releases onto PATH. Claude Code also supports: claude plugin marketplace add vshulcz/deja-vu && claude plugin install deja-vu@deja-vu.

How do you use this agent?

After install, open a new agent session and ask about past work (e.g. "have we dealt with jwt refresh rotation before?"); with auto-recall the answer arrives at session start unprompted. Key CLI commands: deja "query" searches all history; deja blame <path> shows sessions discussing a file; deja fix <error> shows what worked after that error before; deja ctx <query> emits a Markdown digest for prompts; deja doctor self-checks (--deep verifies the index); uninstall with deja uninstall --all && rm -rf ~/.cache/deja. Binary-only installs have MCP unwired; configure deja mcp manually if needed.

What are this agent's strengths and limitations?

Pros
  • Retroactive memory: indexes and searches pre-install history immediately, where Mem0/Letta/engram-style record-forward tools start empty
  • No LLM or embedding key required: purely local lexical index with ~0.4 ms median lookups, negligible agent latency
  • Automatic redaction: AWS keys, JWTs, PEM blocks etc. become [redacted:<kind>] at index time, so digests and exports are safe to share
  • Comprehensive recall points: session start, PreToolUse, and PostToolUse (after failures) all deliver prior decisions
  • Reproducible benchmarks: the repo ships its own LongMemEval-S and LoCoMo harnesses, so the 85.3% hit@1 claim can be verified
Limitations
  • Default lexical search can miss rephrased queries; semantic recall requires configuring a local Ollama/LM Studio or OpenAI-compatible endpoint
  • Some integrations carry external dependencies: Cursor, Zed and opencode need sqlite3; Zed and DeepSeek Harness also need zstd
  • Windows builds exist but macOS/Linux are the battle-tested paths, per the README
  • Pattern matching is not secret detection — secrets in unrecognized shapes can pass through the index
  • Some harness features are blocked by upstream bugs (marked ⚠), e.g. aider MCP recall and Roo Code auto-recall

How does this agent compare with similar options?

The README directly contrasts three families: memory platforms (Mem0, Letta, memU) need an LLM/embedding key and only record facts going forward; session search (cass) is also retroactive but never recalls unprompted; engram is called the strongest record-forward tool but still only knows what an agent chose to save. deja's differentiators: no capture step, no LLM dependency, and automatic recall at session start and around tool calls.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
deja-vu This agent 75 · Good CLIFree ★ 1.3k today Go Codex · Claude Code
Emulo 78 · Good Agent plugin / skillFree + model costs ★ 299 12d ago HTML Codex · Claude Code
Obsidian Mind 79 · Good CLIFree ★ 5.4k 7d ago TypeScript Codex · Claude Code
Compartment 76 · Good CLIFree ★ 577 4d ago Python Codex · Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Good
75/ 100 5-point scale 3.8 / 5
This review covers the source as of Sep 08, 2026. The project has shipped 16 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 21/29
Reliability 9/14
Adaptability 16/18
Convention 16/18
Effectiveness 9/13
Verifiability 4/8
Why each dimension lost points
Trust21 / 29 · 3.6/5

Evidence shows: local index, no network listener, network only for update/sync/version check; SECURITY.md and a referenced security model document data flows and trust assumptions; go.mod declares no third-party dependencies, and CI runs govulncheck, go mod verify, and CodeQL. Deductions: the core Go source is not in the provided evidence, so 'no listener' is a documented assertion not statically verified; sensitive_data_handling stays at 2 because redaction is only visible as documentation, and the docs themselves state 'pattern matching is not secret detection'. user_confirmation gets 1: `deja install --auto` writes guidance into 22+ harness config files by default and the embed probe silently picks up localhost:11434/1234 — opt-outs exist (--no-guidance, DEJA_EMBED_OFF) but the default lacks per-target confirmation. external_effects 2: writes to many agent config files and injects PreToolUse/PostToolUse hooks — documented but broad. rollback 2: tombstones/--unforget/promote state changes provide memory rollback and cosign signing exists, but the client does not verify signatures by default (stated in SECURITY.md) and no automatic undo of config writes is shown. source_attribution 2: author named in LICENSE, per-harness source labels in search output; unverified publisher per rules is neither credited nor penalized.

Reliability9 / 14 · 3.2/5

Evidence shows: README is internally consistent (matrix, FAQ, benchmark numbers agree); CI enforces a recall regression floor and per-package coverage floors with a weekly canary; tests systematically pin edge cases (argv terminator, guarded registration, empty-answer retry bounds). Deductions: everything is static reading — no test or benchmark was executed; dependency_availability at 2 because external deps (sqlite3, zstd) are itemized per harness but failure paths are unverified; failure_messages at 2 since doctor/not-wired reporting is well designed but the binary's actual error output is not in evidence.

Adaptability16 / 18 · 4.4/5

Evidence shows: a 25-harness support matrix with per-capability marks, including ⚠ 'blocked by an upstream bug' — honest capability boundaries; many install paths (brew/go install/npx/scoop/mcpb/plugin marketplaces); Windows, XDG_CONFIG_HOME, DEJA_*_ROOT and each agent's relocation variable handled. Full marks for audience_and_scenarios, capability_boundaries, environment_fit. trigger_precision 2: auto-recall trigger points (session start, pre/post tool) are precisely described, but actual precision is runtime behavior unverifiable statically.

Convention16 / 18 · 4.4/5

Evidence shows: excellent information architecture (README → docs site → SECURITY-MODEL → JSON output docs); thorough install notes including the Windows exit message and alternatives; a direct FAQ on privacy, performance and differentiation; honest known-limitations coverage (redaction limits, ⚠ blocked items, CI comments documenting past incidents #1229/#838). license 3 (full MIT text). Deductions: naming_stability 2 — the six legacy tool names still answer (good backward compat) but a tool-consolidation migration is in flight; versioning_changelog 2 — package. 0.20.5 and a release badge exist but no CHANGELOG file appears in evidence; maintenance_responsibility 2 — 72-hour vulnerability response and clearly maintained CI are good, but only the latest release receives fixes and the maintainer is a single unverified individual.

Effectiveness9 / 13 · 3.5/5

Evidence shows: output is agent-usable by design (4KB cap, --, ctx Markdown digest, tier/total fields documented in SKILL.md); marginal_value rests on a clear differentiation claim (retroactive memory, no LLM required); cost_benefit cites concrete figures (~0.4 ms lookups, index ≈3% of corpus, ~200x token reduction vs grep). Deductions: all performance/recall numbers are author-reported; the bench harnesses ship in-repo but a static review cannot run them; output_usability 2 — the output contract is well documented but actual usability is unverified.

Verifiability4 / 8 · 2.5/5

Evidence shows: claim_traceability 2 — benchmark harnesses ship in the repo, CI pins recall and coverage floors, and the README invites auditing ('Audit what relevant means before trusting any figure, ours included'); fact_inference_separation 2 — docs distinguish measurements from design intent (CI comments say 'measured, not assumed') and redaction incompleteness is stated plainly. Deductions: cross_source_corroboration 1 — the 85.3%/69.6% external benchmark figures and the 1,551-session store measurements are single-source self-reports with no independent corroboration in the evidence; core code is absent, so many claims remain at the documentation level.

Risks and how to mitigate them
  • `deja install --auto` writes guidance into 20+ agents' user-level config files and injects hooks by default; confirm you accept that scope, or use `--no-guidance` / `--all` for finer control.
  • Redaction is index-time pattern matching; unknown secret shapes can pass through into the index, share and sync outputs — exclude sensitive projects via `~/.config/deja/exclude` first.
  • Semantic recall silently probes localhost:11434/1234 (Ollama/LM Studio); set DEJA_EMBED_OFF=1 if you do not want requests sent to endpoints you did not configure.
  • `deja update` checks sha256 only and does not verify the cosign signature; verify manually per SECURITY.md if supply-chain guarantees matter.
  • Publisher identity is unverified and only the latest release receives fixes; assess maintenance risk before production adoption.
Evidence confidence: Low Reviewed Sep 08, 2026 Reviewed revision 7aa3ed222dce New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. nightly Nightly 2026-10-24 Pre-release
    Release notes excerpt
    Built from db6bb255 on 2026-10-24. Unreleased code — use a tagged release unless you are testing something specific. Download with: gh release download nightly
    View on GitHub ↗
  2. v0.23.0
    Release notes excerpt
    Big stores are cheap to keep up to date. A pass that replaces a few sessions appends their records instead of writing the whole log again and reads only what changed: on a 40,000-session store 20 rewritten transcripts take 1.7 s instead of 24 s, and peak memory drops from 7 GB to under 1 GB. A search for a word most sessions hold answers in about a second instead of 24. Text taken out of a transcript leaves the index on the next pass. For busy machines there are DEJA_NO_AUTO_INDEX and DEJA_SEARCH_ONLY, and deja index exits 3 on a …
    View on GitHub ↗
  3. v0.22.2
    Release notes excerpt
    deja now reads Windsurf / Devin Desktop: Cascade's encrypted conversation files are decrypted, authenticated and indexed, and deja install windsurf adds the MCP server, a global rule, the skill and a /deja workflow. That makes 42 harnesses. Grok Build installs the plugin from this repository's own marketplace, and a Spec Kit extension ships with each release. The person sees more of what deja did: the first session names an error the machine keeps hitting, the weekly note names the session agents used, and dsh, Hermes, …
    View on GitHub ↗

FAQ

Does anything leave my machine?
No, by default. Indexing and search are local; the network is only used by deja update, deja sync ssh, and the version check in deja doctor. Even with embeddings configured, only redacted indexed text is sent, never raw source files.
What about secrets already in my logs?
Known shapes — AWS keys, api_key=/token= assignments, bearer tokens, JWTs, PEM blocks, high-entropy values — are stripped at index time, but pattern matching is not secret detection and unknown shapes can pass through.
Will it slow my agent down?
Recall is a lexical lookup against a local index at ~0.4 ms median; hooks add process start plus a freshness check, tens of milliseconds on multi-gigabyte stores.
Claude Code deleted sessions older than 30 days — are they gone?
If deja indexed them before cleanup, they stay searchable even after the source file is deleted, since the index is independent of the harness's own retention.
Can I use just the binary without deja install?
Yes. The binary alone covers indexing, search, show, ctx, blame, -- and redaction; deja install only wires MCP recall and session-start recall into your agents, which is optional.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents