Your agents already solved this.
deja finds it.

Claude Code, Codex and opencode forget everything between sessions — but the solutions are still on your disk. deja indexes those histories and serves them back, to you and to the agent.

$ curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja
deja demo: searching agent session history from the terminal

Memory your agent actually uses

After deja install --all, every agent on your machine gets a recall tool over MCP.

you
have we dealt with jwt refresh rotation before? check your memory
AI
→ recall("jwt refresh rotation")
Yes — three weeks ago in the api-gateway project (a Codex session). Login broke after key rotation: the jwks cache wasn't reloaded after rotateKey. You fixed it by reloading the cache and adding a clock-skew test. Want me to apply the same pattern here?

Agent memory via MCP

Two tools — recall and recall_context — answers stay under ~4KB, cheap on context. One command wires it into Claude Code, Codex and opencode.

One index, every harness

All your harnesses write session logs to disk. deja indexes them together — a fix found in Codex is recalled inside Claude Code.

Local and private

No network code exists in the tool. Local files in, local cache out. A single Go binary with zero dependencies.

7–9 mswarm search over ~3.3GB
~10 scold index, once
~2.4%index size vs corpus
0runtime dependencies

Install

Pick one, then run deja install --all to wire up your agents.

curl
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
Homebrew
brew install vshulcz/tap/deja-vu
Go
go install github.com/vshulcz/deja-vu/cmd/deja@latest
npm
npx @vshulcz/deja-vu "your query"

How it works

deja parses the local history stores each harness already writes (~/.claude/projects, ~/.codex/sessions, opencode's SQLite db) into an incremental inverted index in ~/.cache/deja. Only changed files are re-read on each run. The MCP server exposes the same index to agents. Details in ARCHITECTURE.md — adding a harness is one parser file.