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.
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.
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.
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.
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.
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.
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.
- `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.
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.
- 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
- Anyone losing detail to context compaction — deja hands back the 99.8% of commands compaction drops
- Engineers joining a project who need to find how a specific error was previously solved on this machine, including pre-install history
- Privacy-sensitive teams who refuse to send session data to the cloud: indexing, search and redaction are all local
- People sharing a session conclusion with a colleague via deja share, which produces a secrets-scrubbed digest
What are this agent's strengths and limitations?
- 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
- 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 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.
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.