← Back to directory
D

deja-vu

Community
One local memory shared by twenty-five coding agents, built from the session history already on disk.
Category
Dev Tools #12 of 438
Stars
★ 1.2k Very popular
Transport
stdio (local process)
Runtime
Node.js · Prebuilt binary · Go
Credentials
No credential needed
License
MIT
Last commit
Tools
1
72FMRS · B

deja-vu is a local-first agent-memory tool maintained by vshulcz (Vladislav Shulcz) under the MIT license; it is not an official project of any agent vendor. Its distinguishing claim is where memory comes from: it indexes the session histories already on disk, so it is useful immediately after install and can surface work done months before, rather than starting empty and recording forward. The README reports 85.3% hit@1 on LongMemEval-S, 69.6% on LoCoMo, and about 0.4 ms median in-process lookup over a 5.2 GB store of 1,551 sessions. On the MCP side it exposes one tool, deja, with a mode switching between six behaviors, and it also hooks into PreToolUse/PostToolUse for recall at the point of action. It suits developers running multiple coding agents who value local-only, LLM-free retrieval, and is a poor fit for those who need hosted shared memory or cannot accept the limits of pattern-based redaction.

Strongest · Documentation 18/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
14/20
Maintenance
15/20
Documentation
18/20
Setup experience
14/20
Why each score
Reliability 11/20
Static evidence supports credible reliability claims: the repo is said to ship two benchmark harnesses (LongMemEval-S, LoCoMo) plus deja bench recall/context/block, with a CI badge and an explicit 'CI fails if recall drops' regression gate; distribution is a single local Go binary over stdio, and the manifest's npx positional 'mcp' argument matches the README's `deja mcp` entry point, with the tool surface (one `deja` tool plus six legacy names) internally consistent. Per the static calibration, nothing was executed and only the README/manifest excerpts were available, so no actual workflow YAML, test file, or error-handling code was observed and 12 is the ceiling. Deductions: the MCP init/tools-list handshake is not evidenced by committed tests; the harness matrix contains ⚠ (blocked by upstream bugs) and external sqlite3/zstd dependencies whose failure and degradation paths are not documented.
Security and permissions 14/20
No red-line signal: indexing and search are local, and the network is used only by `deja update`, `deja sync ssh`, and the doctor version check, with authorization explicit (local stdio process, no implicit remote command execution). Credential handling is a strength with stated bounds: AWS keys, api_key=/token= assignments, bearer tokens and raw JWTs, PEM blocks, provider tokens, and high-entropy values are redacted at index time, share/sync export re-applies redaction on the way out, and `deja forget` writes tombstones so a rebuild cannot restore sessions, backed by a dedicated security-model document that honestly states 'pattern matching is not secret detection.' Deductions: the optional semantic-recall probe auto-contacts localhost:11434/1234 when DEJA_EMBED_URL is unset, so on a machine already running Ollama/LM Studio an implicit call happens by default (DEJA_EMBED_OFF exists but is opt-out, not least privilege); a remote embedding endpoint receives redacted text truncated to ~2k chars, which the user must accept; and the install path is curl | sh with no verification step shown. Overall no red line, hence not in the 0-4 band.
Maintenance 15/20
Evidence shows an actively maintained project: version 0.13.0, GitHub Releases, a CI workflow, CONTRIBUTING.md, ROADMAP.md, an .mcpb bundle, and broad multi-ecosystem distribution (npm opencode-deja/dsh-deja, a Zed extension, Kimi/Grok/Codex plugin marketplaces, Homebrew, Scoop, go install), plus a 25-harness parser registry kept honest with synthetic fixtures, implying a dense release cadence and clear ownership (MIT © Vladislav Shulcz, single author). Deductions: 796 stars and 31 open issues are given, but the material contains no evidence of issue-response latency, a security-response channel, or a dependency-update policy; governance is a single maintainer with no governance file; and Windows support is self-described as not battle-tested, deferred to issue #9. Hence 15, not higher.
Documentation 18/20
Documentation is notably above average: install paths (install.sh/brew/go/npx/mcpb/Scoop), manual MCP configuration, a tool parameter table (the `deja` tool with mode and query/path/error/what/text/tags/harness/project/since/limit/offset/all), return shapes, legacy-name compatibility, a per-harness capability matrix across 25 agents with a legend (✅/⚠/✕/—), per-harness extra requirements (sqlite3/zstd/roo CLI), privacy and redaction scope, measured performance and index size, three benchmark commands with result tables, and explicit limitations ('pattern matching is not secret detection', lexical fallback when semantic recall is unavailable, Windows CI-only maturity, Claude Code's 30-day transcript cleanup), all with reviewable links (ARCHITECTURE/SECURITY-MODEL/registry/json-output). Deductions: only README excerpts were supplied, so SECURITY-MODEL.md, ARCHITECTURE.md, and benchmark reproduction details are not directly visible, and several figures (85.3% hit@1, 5.2 GB / 1,551 sessions) rest on external pages, so full marks are not justified.
Setup experience 14/20
The install path is clear and short: `curl -fsSL .../install.sh | sh` plus `deja install --auto` gives indexing and multi-agent wiring in two steps, with brew, go install, a zero-install `npx` try, Scoop, a Windows zip, and a Releases .mcpb bundle as alternatives; six harnesses also have native-ecosystem packages that are individually sufficient and explicitly non-conflicting with the CLI path (shared server id, only additive contributions). The manifest's npm package carries runtimeHint npx and a positional 'mcp' argument, so hand configuration is unambiguous. Deductions: the static calibration caps this at 15, and installation depends on executing a shell script (Windows exits with 'unsupported OS', forcing Scoop/zip), while Cursor/opencode/Crush/Zed need system tools like sqlite3 and zstd; the auto installer also writes guidance files for roughly 22 harnesses plus ~/.agents/skills, opt-out only via --no-guidance, so ease of use is environment-dependent rather than frictionless.

Static review · not runListed 2026-09-10

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesWrites / deletes local filesRuns commands or code

Best for

  • Developers who run several coding agents (Claude Code, Codex, Cursor, Copilot CLI, OpenClaw, opencode, Gemini CLI, Qwen Code, Kimi Code, Zed and more) and want them to share one history
  • Users who want memory to stay entirely local, with no LLM or embedding key required for default search
  • Engineers who need to reach back into months-old sessions to reuse prior fixes and decisions

Not for

  • Users looking for a hosted or cloud knowledge base rather than local session history
  • Users unwilling to send (redacted, truncated) indexed text to a remote embedding endpoint, unless they configure a local Ollama or LM Studio runtime
  • Organizations that need a managed, multi-tenant, centrally administered memory service
  • Users expecting semantic recall with zero configuration, since it requires setting DEJA_EMBED_URL and related variables explicitly

Required permissions

  • Reads the session-history directories of the agents on this machine (for example Claude Code's `~/.claude/projects`, Codex's `~/.codex/sessions`, Cursor's state.vscdb)
  • Writes a local inverted index and vector sidecar (.vectors.bin) under `~/.cache/deja`
  • `deja install` writes user-level guidance files (or a marked block inside them) for each harness it detects; `--no-guidance` opts out
  • Some harness parsers rely on local tooling: Cursor, Grok Build, Hermes, opencode, Crush and Zed need sqlite3; DeepSeek Harness and Zed need zstd
  • Network access is used only by `deja update`, `deja sync ssh`, and the version check in `deja doctor`; a remote endpoint receives redacted indexed text only after DEJA_EMBED_URL is configured

Risks and side effects

  • Redaction is pattern matching, not secret detection: a shape it does not recognize can pass through into digests, share output or sync exports
  • Secrets already present in the original harness files stay in those files; deja-vu does not modify the sources
  • With a remote embedding endpoint configured, redacted indexed text (truncated to about 2k characters) leaves the machine; Ollama or LM Studio keeps embedding local
  • `deja forget` removes sessions from a rebuilt index and writes tombstones, but does not delete the underlying harness files
  • Session formats vary per harness and can change across versions, affecting parser completeness

Setup

Before you start

Runtime:Node.js · Prebuilt binary · Go

DEJA_EMBED_KEY optionalsecret Optional; explicit key for an authenticated third-party embeddings endpoint; takes precedence over OPENAI_API_KEY.
OPENAI_API_KEY optionalsecret Optional; used automatically only for HTTPS api.openai.com endpoints, never sent implicitly to local or third-party endpoints.
Other optional settings (3)
DEJA_EMBED_URL optional Optional; points at a local Ollama/LM Studio or OpenAI-compatible embeddings endpoint for semantic recall. Unset, deja probes localhost:11434 and localhost:1234.
DEJA_EMBED_MODEL optional Optional; the embedding model name, e.g. text-embedding-3-small.
DEJA_EMBED_OFF optional Optional; set to 1 to disable the local embeddings runtime probe.

1) Install: on macOS/Linux run curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh; alternatives are brew install deja-vu or go install github.com/vshulcz/deja-vu/cmd/deja@latest; on Windows use scoop install deja-vu (the install script exits with 'unsupported OS' there). 2) Run deja install --auto to wire MCP into every agent it detects, enable session-start recall where supported, and build the first index; add --all to skip session-start recall, or --no-guidance to avoid writing per-harness guidance files. 3) To configure MCP by hand, use the stdio command npx @vshulcz/deja-vu mcp, or invoke deja mcp directly. 4) Verify with deja doctor [--deep].

.mcp.json
{"mcpServers":{"deja-vu":{"command":"npx","args":["@vshulcz/deja-vu","mcp"]}}}

Shown for Claude Code. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "deja-vu": {
      "command": "npx",
      "args": [
        "@vshulcz/deja-vu",
        "mcp"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add deja-vu -- npx @vshulcz/deja-vu mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After running `deja install --auto`, start a new agent session and check that the `deja` MCP tool appears in the client's tool list; then ask something you solved months ago — a correct answer quoted from a prior session proves recall works.

Troubleshooting

  1. MCP not wired up: run `deja doctor`; the README notes that on a binary-only setup every MCP target reports `not-wired`, which is that setup working as intended, and `deja install --auto` rewires it
  2. On Windows the install script exits with `unsupported OS`: use Scoop instead, or take `deja-vu_<version>_windows_amd64.zip` from the latest release and put `deja.exe` on PATH (e.g. `%USERPROFILE%\.local\bin`)
  3. No results for a harness: check the required helper is present (sqlite3, zstd) and use the `DEJA_*_ROOT` variables for custom store locations
  4. Semantic recall not working: set `DEJA_EMBED_URL` (with it unset, deja probes localhost:11434 and localhost:1234), then run `deja embed`; `DEJA_EMBED_OFF=1` disables the probe
  5. Stale or incomplete index: re-run `deja index` (it is incremental) and use `deja doctor --deep` to check the index against the sources
  6. To wipe everything: `deja uninstall --all` followed by `rm -rf ~/.cache/deja`

Things to try

Once connected, you can ask your AI assistant things like:

  • have we dealt with jwt refresh rotation before? check your memory
  • we fixed this three weeks ago — recall how, in whichever agent solved it
  • how does this machine run the project's test suite, with the real flags?
  • what did we run last time this same connection pool error appeared?

Tools 1

deja read-only
The single MCP tool; its mode argument selects behavior: recall returns matching snippets; context returns a Markdown digest of the best-matching session; blame returns sessions that discussed a given file; fix returns what this machine ran or changed after the same error previously; how returns the real invocation this machine uses; remember stores a durable decision for later recall. Readable arguments include query, path, error, what, text, tags, harness, project, since, limit, offset, and all.

Use cases

Recall, in Claude Code, a fix that was originally worked out in Codex
Search sessions from before deja-vu was installed (an indexed session stays searchable after Claude Code deletes transcripts older than 30 days)
Surface a file's prior decisions or a command's working invocation before an agent edits that file or runs that command
Look up what this machine ran after the same command error previously, when the error did not come back
Read your whole memory as one local HTML file (deja view), or expose the same search as a SKILL.md under `~/.agents/skills` for agents without MCP
Move memory between machines with `deja sync ssh`, or package live context for another agent with `deja handoff --to codex`

Supported clients

Claude Code
Codex
Cursor
GitHub Copilot CLI
VS Code Copilot Chat
Gemini CLI
Qwen Code
OpenCode
Zed
Cline
Goose
Kimi Code
OpenClaw
Roo Code
Continue
Crush
aiderPartial support

Listed from the project's documentation, not tested by this site.

Overview

deja-vu is a local-first memory layer that indexes the session histories coding agents on your machine have already written to disk (Claude Code, Codex, Cursor, Copilot CLI, OpenClaw and roughly twenty others in total) and hands the relevant memory back to whichever agent asks. Nothing leaves the machine by default: indexing and search are local, and credentials are redacted at index time. Per the project's README, lexical retrieval needs no LLM and no embedding key; semantic recall is optional and requires pointing deja embed at a local Ollama/LM Studio instance or an OpenAI-compatible endpoint. It serves MCP over stdio and exposes a single tool named deja whose mode argument selects behavior (recall, context, blame, fix, how, remember); six older tool names (recall, recall_context, blame, fix, how, remember) still answer for existing wiring. Install paths include the install script, Homebrew, go install, Scoop, and npx @vshulcz/deja-vu, and deja install wires MCP recall into the agents it detects.

Similar servers

Context7 80 · B

Upstash's official server providing up-to-date third-party library docs for AI coding assistants

★ 63.3k · Tools 2 Compare with this →

Source revision e89e3d9df4bd Data synced 2026-10-19 Read the FMRS scoring method