Getting started

install it, wire it in, ask your first question

deja is a single zero-dependency binary. It reads the session logs your coding agents already write, builds a local search index, and serves that memory back to the agents over MCP. Nothing leaves your machine.

deja demo: one question put to the same agent twice — without memory it has no record, with deja it answers with the decision from eight months earlier

the same question, the same agent, once without memory and once with deja — every line quoted from two real sessions

Install

curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
# or
brew install deja-vu
npm  install -g @vshulcz/deja-vu
go   install github.com/vshulcz/deja-vu/cmd/deja@latest

Desktop apps that install MCP servers as bundles take the .mcpb file published with every release — one per platform, carrying the binary, so nothing else is needed. Open it and the app installs the server. Terminal agents use deja install, described under harnesses.

On Windows the install script does not run — it is a shell script and exits with unsupported OS. Scoop is the short way, and it needs no bucket added first:

scoop install deja-vu

Otherwise take deja-vu_<version>_windows_amd64.zip from the latest release and put deja.exe on your PATH, for example in %USERPROFILE%\.local\bin.

The binary on its own is a complete install for searching your history: index, search, show, ctx, blame, --json and redaction all work without it. deja install is what wires MCP into your agents and turns on session-start recall — useful, and optional. deja doctor reporting every MCP target as not-wired is the expected state for that setup, not a fault. deja warmup leaves a skill at ~/.agents/skills/deja-search/SKILL.md teaching an agent the CLI contract, so it reaches for deja search --json on its own.

Search your history

Running deja on its own builds the index from every agent history it finds — retroactively, including sessions from before you installed it — and then shows what it found: the harnesses, the projects, and a question you have asked in more than one session. deja install does the same while wiring your agents, so the first agent turn is instant rather than paying for the build.

deja "connection pool exhausted"
deja "have we dealt with jwt refresh rotation before"
No deja index step is required — any search, recall, or install builds and refreshes the index as needed. Pass --no-index to deja install if you are scripting an install and want to defer the build.

Wire it into your agents

deja install --all      # MCP recall for every agent found on this machine
deja install --auto     # same, plus session-start auto-recall where supported

Six harnesses can pull deja straight from their own plugin registry instead — same wiring, no local step:

claude plugin marketplace add vshulcz/deja-vu && claude plugin install deja-vu@deja-vu
codex  plugin marketplace add vshulcz/deja-vu && codex plugin add deja-vu@deja-vu
cursor-agent plugin marketplace add https://github.com/vshulcz/deja-vu
qwen   extensions install https://github.com/vshulcz/deja-vu
openclaw plugins install ./deja-vu/claude-plugin
copilot plugin marketplace add vshulcz/deja-vu && copilot plugin install deja-vu@deja-vu
Cursor, Qwen, OpenClaw and Copilot read the Claude plugin format directly, so all six install from the one bundle in this repository, which carries the hooks, the /deja command and the MCP server. OpenClaw runs hooks only from its own packs — deja install openclaw-auto writes one — and Copilot runs the plugin hooks but drops their context, so recall there is MCP plus the skill. The plugin stands down if deja install already wired the same hooks, so having both does not recall twice.

Three more keep their extensions in an ecosystem of their own:

opencode plugin opencode-deja
dsh plugin --profile web add dsh-deja
# Zed: Extensions → deja
Either path is enough — deja install --auto wires all three as well. The opencode and dsh packages read what the installer wrote and contribute only what is missing, and in Zed both halves register under one server id, so having both never means two servers or a tool listed twice.

After that, an agent can call recall the moment you reference past work — see Agents & MCP. Confirm the wiring any time with deja doctor.

Optional: semantic recall

If you run a local embedding endpoint (Ollama, LM Studio), deja embed adds a vector sidecar so rephrased queries still match. Without one, deja works exactly as before. See Search.