vshulcz/deja-vu
This server lets you search and retrieve past coding-agent session histories (Claude Code, Codex, opencode) stored locally on your machine via two tools:
recall: Search indexed sessions using specific tokens like error strings, function names, or flags. Returns the best matching snippets as dense text under ~4KB. Supports filtering byharness(claude, codex, or opencode) and setting alimiton results. Multiple search words are ANDed together. Useful before debugging or re-implementing something, as prior sessions often contain the exact fix or command.recall_context: Returns a full markdown digest (~8KB) of the single best-matching session, including the complete problem/solution arc rather than just snippets. Use this afterrecallidentifies a relevant session and you need deeper detail.
Install
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --autoTen seconds to install, about ten to index, and it is useful. The second command wires MCP recall into every agent it finds, turns on session-start recall where the agent supports it, and builds the first index so the next session does not pay for it.
Start a new agent session and ask it something you worked on months ago:
have we dealt with jwt refresh rotation before? check your memory
It does not have to be asked, either — with auto-recall the agent already knows what you solved in that project when the session opens.
brew install deja-vu, go install github.com/vshulcz/deja-vu/cmd/deja@latest,
or npx @vshulcz/deja-vu "query" to try it without installing anything. Desktop apps that
take MCP servers as bundles can open the .mcpb from the
latest release; it carries the binary.
Claude Code, Codex, Cursor, Qwen, OpenClaw and Copilot can take the same plugin bundle from their own marketplaces instead:
claude plugin marketplace add vshulcz/deja-vu && claude plugin install deja-vu@deja-vuOn Windows the install script exits with unsupported OS — it is a shell script. Use
Scoop instead, from the main bucket every Scoop install already has:
scoop install deja-vuOr take deja-vu_<version>_windows_amd64.zip from the
latest release and put deja.exe on
your PATH, e.g. in %USERPROFILE%\.local\bin.
The binary alone is a complete install for searching: index, search, show, ctx, blame,
--json and redaction need nothing else. deja install is what wires MCP into your agents
and turns on session-start recall — worth having, and optional. On a binary-only setup
deja doctor reports every MCP target as not-wired, which is that setup working as
intended. deja warmup also leaves a skill at ~/.agents/skills/deja-search/SKILL.md
that teaches an agent the CLI contract — deja search --json, ctx, blame, how to read
tier and total — so it knows history is searchable without MCP. The copy in the repo is
skills/deja-search/SKILL.md.
deja install --all is --auto without the session-start recall: agents answer from memory
when they decide to call it, rather than starting each session with it. The
agent setup guide covers what each
harness supports, aider's read-only context file, and the Windows cmd /c deja mcp wrapper.
Install also writes user-level guidance for the harnesses it detects: Claude Code, Codex, opencode, Gemini CLI, Antigravity, Qwen, Kimi Code, pi, Copilot, VS Code Copilot Chat, Cursor, Goose, OpenClaw, Hermes, Roo Code, omp, Amp, prime-agent, DeepSeek Harness, Continue, Crush and Zed each get it in their own guidance file (or under the configured XDG_CONFIG_HOME). Re-run rewrites deja's skill or marked block without changing surrounding user content. Use deja install --all --no-guidance to opt out; Grok Build gets the shared skill in ~/.agents/skills, which is what it reads; the ~/.grok/GROK.md written beside it is for the unrelated community CLI that shares that directory. Cursor has no user-level instructions file, so it gets the shared skill in ~/.agents/skills — one of the four places Cursor reads skills from — read only when something looks relevant rather than every session.
Related MCP server: ctx-memory
What you get
Solve it in Codex. Claude remembers. Twenty-five coding agents write every conversation to local files, and deja turns those files into one memory layer all of them read.
Retroactive search |
|
Cross-agent recall | The MCP |
It survives compaction | Measured over 43 compactions: the summary keeps 77% of the decisions and 0.2% of the commands you ran. deja hands back the other 99.8%. |
Recall at the point of action | Before an agent edits a file or runs a command, deja names that file's prior decision or that command's working invocation, from a |
It indexes the work, not just the talk | The files each turn opened, the commands that ran with their exit status, and the exact spans an edit replaced. That is the part every summary throws away. |
It knows what held |
|
It says when the ground moved | A hit reports 4 files this session touched have changed since, and says nothing when it cannot tell. It never claims anything is unchanged. |
Sync and handoff |
|
Redaction | Keys, tokens, JWTs and private key blocks are stripped at index time, so the cache is safe to keep. |
Your own work, wrapped
deja stats --card draws it in the terminal; give it a filename and it writes an
SVG for a profile README. To post it anywhere else, turn it into a
PNG — that page converts it in your own
browser.
The full feature reference lives in the docs.
Privacy
Indexing and search are local. The network is used only by deja update, deja sync ssh,
and the version check in deja doctor.
Credentials are redacted at index time: AWS keys, api_key= and token= assignments,
bearer tokens and raw JWTs, PEM private key blocks, provider tokens, scheme://user:pass@host
URLs, and high-entropy values for shapes no pattern knows. The value becomes
[redacted:<kind>] and the surrounding text stays searchable. deja share and
deja sync export re-apply redaction on the way out.
deja forget removes sessions from a rebuilt index and writes tombstones, so a later
deja index cannot restore them from the source history. --unforget lifts a tombstone.
Project exclusions are one pattern per line in ~/.config/deja/exclude.
The security model documents data flows, redaction limits, trust assumptions and release verification.
CLI
$ deja "jwt refresh token"
[claude] api · Jul 8 · 8f31c0a9 — 2 matches
login started failing after refresh token rotation; jwt kid mismatch in tests
fixed by reloading jwks cache after rotateKey and adding a clock-skew test
[codex] web · Jul 1 · b77d91e2 — 1 match
refresh token cookie needed SameSite=Lax in local callback flowAsk your history
Command | What it does |
| Search every history. Multi-word is AND and quoted phrases require contiguous text; a query with no exact match then tries word forms and close spellings, which is where a substring reaches its word ( |
| With an index and a terminal: today's sessions, recalls served, a question you asked in more than one session, and a wall your agents keep hitting. |
| Which sessions discussed a file, what was decided, and why. |
| The other direction: which files the work on a subject actually touched. |
| How this machine actually runs a thing, with the real flags, from what agents ran before. |
| What this machine ran after that same error before, when the error did not come back. |
| Errors that hit three or more separate sessions, with the harnesses named. |
Use what it finds
Command | What it does |
| Markdown digest of the best match, ready to pipe into a prompt. |
| Reopen a found session in its native harness. |
| Hand back a span an agent replaced, from the |
| Distill a session into a curated note with provenance, tags and a lifecycle state. Notes outrank raw transcripts. |
| A sanitized session digest for a colleague, with secrets already scrubbed. |
Move it and check it
Command | What it does |
| Move memory between machines. Watermarked, append-only, idempotent. |
| Your whole memory as one local HTML file. No server, nothing leaves the machine. |
| Your agent work, wrapped. |
| Self-diagnosis, and with |
| The stdio MCP server, which is what |
Full reference: commands and JSON output.
MCP tools
The server exposes one tool, deja, with a mode. deja install wires it in, so
this is only needed to configure an agent by hand. The six older tool names
(recall, recall_context, blame, fix, how, remember) still answer for
anything already wired to them.
Tool | Arguments | Returns |
|
| Depends on the mode, below. |
Mode | Arguments it reads | Returns |
|
| Dense matching snippets, capped at 4KB. |
|
| Markdown digest of the best-matching session. |
|
| Sessions that discussed a file. |
|
| What this machine ran, or changed, after that same error before. |
|
| The real invocation, from what agents ran here. |
|
| Stores a durable decision for later recall. |
Supported harnesses
aider · Amp · Antigravity · Claude Code · Cline · Codex CLI · Copilot CLI · VS Code Copilot Chat · Cursor · DeepSeek Harness · Gemini CLI · Goose · Grok Build · Hermes · Kimi Code · omp (Oh My Pi) · OpenClaw · opencode · Continue · Crush · pi · prime-agent (PrimeIntellect) · Qwen Code · Roo Code · Zed.
Harness | MCP recall | Auto-recall | Skill | Command | Resume | Handoff | Needs |
aider | ⚠ | ✅ | ✕ | ⚠ | ✕ | ✅ | deja aider |
Amp | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Antigravity | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Claude Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Cline | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Codex CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Copilot CLI | ✅ | ✕ | ✅ | ✅ | ✅ | ✅ | — |
VS Code Copilot Chat | ✅ | ✕ | ✅ | — | ✕ | paste | — |
Cursor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | sqlite3 (IDE chats) |
DeepSeek Harness | ✅ | ✅ | ✅ | ✅ | ✕ | paste | zstd |
Gemini CLI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Goose | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | deja goose |
Grok Build | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | sqlite3 (grok-dev store) |
Hermes | ✅ | ✅ | ✅ | ✅ | ✅ | paste | sqlite3 |
Kimi Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
omp (Oh My Pi) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
OpenClaw | ✅ | ✅ | ✅ | ✅ | ✅ | paste | — |
opencode | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | sqlite3 |
Continue | ✅ | ⚠ | ✅ | ✅ | — | paste | — |
Crush | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | sqlite3 |
pi | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
prime-agent (PrimeIntellect) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Qwen Code | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
Roo Code | ✅ | ⚠ | ✅ | ✅ | ✅ | paste | roo CLI (editor tasks reopen in the editor) |
Zed | ✅ | ✕ | ✅ | ✅ | ✕ | paste | sqlite3 + zstd |
✅ works · — possible, not built yet · ✕ the harness has no such mechanism · ⚠ blocked by an upstream bug · ? not investigated
Custom store locations go through DEJA_*_ROOT variables, and each agent's own relocation
variable is honored too. The
session format registry documents
the observed paths, record schemas and role mapping per harness, with synthetic fixtures
keeping those descriptions checked against the parsers.
Harnesses with a package of their own
deja install --auto wires all six of these like every other harness, and
that stays the shortest path. They also have a package in their own ecosystem,
for people who install extensions there rather than from a CLI:
Harness | Package | Install |
opencode | npm |
|
DeepSeek Harness | npm |
|
Zed |
| Zed → Extensions → deja |
Kimi Code | plugin |
|
Codex CLI | plugin |
|
Grok Build | plugin |
|
Either path is enough on its own, and having both is not a problem: the
opencode, dsh, Kimi, Grok and Codex packages read what deja install wrote and
contribute only what is missing, and in Zed both halves use one server id, so
there is nothing to have twice whichever order you install in.
Each uses the deja you already have; the copy it bundles is only the fallback.
The same search is also a skill, for any agent that loads a SKILL.md:
npx skills add https://github.com/vshulcz/deja-vu --skill deja-search # skills CLI: Claude Code, Cursor, Goose, Copilot…
openclaw skills install @vshulcz/deja-search # ClawHub
hermes skills install vshulcz/deja-vu/skills/deja-search # HermesThe skill drives the deja binary from the install step above; it does not bundle one.
Semantic recall (optional)
Point deja embed at a local Ollama, LM Studio or OpenAI-compatible endpoint with
DEJA_EMBED_URL and rephrased queries still hit. Without a reachable runtime, lexical
search and MCP recall continue unchanged. OpenAI Platform works with its standard key:
export OPENAI_API_KEY='sk-...'
export DEJA_EMBED_URL='https://api.openai.com/v1/embeddings'
export DEJA_EMBED_MODEL='text-embedding-3-small'
deja embedWith no DEJA_EMBED_URL set, deja probes localhost:11434 and localhost:1234,
so a machine already running Ollama or LM Studio is picked up without being asked.
DEJA_EMBED_OFF=1, or DEJA_EMBED_URL=off, turns that probe off — any other
configured DEJA_EMBED_URL still wins.
For another authenticated OpenAI-compatible endpoint, set DEJA_EMBED_KEY explicitly:
export DEJA_EMBED_URL='https://example.com/v1/embeddings'
export DEJA_EMBED_MODEL='embedding-model'
export DEJA_EMBED_KEY='...'
deja embedDEJA_EMBED_KEY takes precedence. OPENAI_API_KEY is used automatically only for an
HTTPS api.openai.com URL; it is never implicitly sent to local or third-party endpoints.
The sidecar sits beside the index as .vectors.bin, not inside index.db. Float32 vectors
cost roughly 4 MB per 1k messages for a 1,024 dimension model. A remote endpoint receives
the redacted indexed text, truncated to about 2k characters, but never raw source files.
With Ollama or LM Studio, embedding stays local and needs no key.
Proof
deja bench recall # ranking regression floor, CI fails if recall drops
deja bench context # 30 seeded task chains plus five negative controls
deja bench block # does the answer survive into what deja hands overbench block asks the question the other three cannot: with the right session in
hand, does the block carry what that session settled. Eight sessions discuss each
subject and one of them settles it, in the middle of its own transcript rather
than at the end — so the baseline arm, the newest turns of the top hit, scores
zero and an arm above zero had to choose.
Arm | Carries the answer | Median tokens |
| 1.00 | 665 |
| 1.00 | 1656 |
| 0.00 | 289 |
| 0.00 | 0 |
The context experiment compares deja-recall against full-history, naive grep and cold context. With the default seed:
Arm | Median tokens | Median coverage | Negative-control tokens |
deja-recall | 286 | 1.00 | 0 |
full-history | 16,919 | 1.00 | 14,920 |
naive-grep | 57,489 | 1.00 | 0 |
cold | 0 | 0.00 | 0 |
Same fact coverage as grepping the raw logs for about 200x fewer tokens, and about 60x fewer than replaying the matched sessions in full, while injecting nothing on the chains where no prior fact is relevant. The corpus generator and the relevance labels are ordinary reviewed Go. Audit what "relevant" means before trusting any figure, ours included.
Measured on a real store of 1,551 sessions and 143k messages — 5.2 GB across nine harnesses:
Measurement | Result |
Lookup, in process | ~0.4 ms median ( |
| ~0.2 s median on that store: process start, the freshness check over every store, ranking, printing |
Freshness check alone | ~30 ms when nothing changed |
Index size | 160 MB, ~3% of corpus |
The index is incremental. When a session file grows, only that file is re-read.
How it works
Local inverted index in ~/.cache/deja: parse the JSONL and SQLite stores, redact
credentials, write records.bin plus token buckets, and track per-file state in
manifest.gob so repeat runs only ingest what changed. The MCP server, stats, share and
sync all read that one index. Details in docs/ARCHITECTURE.md.
FAQ
Does anything leave my machine? No, unless you ask it to. See the data flows.
What about secrets already in my logs? They stay in the original harness files, which
are your agent's data. Known shapes — AWS keys, api_key=/token= assignments, bearer
tokens and bare JWTs, PEM blocks, provider tokens, high-entropy values — are stripped as
the index is built, so they do not reach digests, shares or sync exports. Pattern matching
is not secret detection: a shape it does not know can pass through. See the
security model.
Will it slow my agent down? A recall is a lexical lookup against a local index: ~0.4 ms median, and nothing waits on a model. A hook adds the process start and a freshness check over your stores on top of that — tens of milliseconds on a store of a few gigabytes.
Do I have to change how I work? No. The agent calls recall itself, and with auto-recall it already knows the project's prior decisions when the session opens.
How is this different from the other memory tools?
deja | Memory platforms(Mem0, Letta, memU) | Session search(cass) | |
Knows work from before you installed it | yes | no | yes |
Capture step | none, the transcripts are the memory | the agent or your code writes facts | none |
Needs an LLM or embedding key | no | yes | optional |
Recalls without being asked | at session start and before a tool runs | no | no |
engram is the strongest of the record-forward tools and worth your time if that model fits you; it still starts empty and knows only what an agent chose to save. The full comparison covers eleven of them.
Where is Claude Code session history stored, and can I search it? Under
~/.claude/projects, one JSONL file per session; Codex keeps ~/.codex/sessions, Cursor a
SQLite state.vscdb. deja search reads them all in place, deja last lists the recent
sessions of every agent, and deja view opens the whole history as one local page. Paths
for each agent: where sessions are stored.
My Claude Code session history disappeared. Is it gone? Claude Code deletes transcripts
older than 30 days (cleanupPeriodDays in ~/.claude/settings.json), and claude --resume lists
only what is left. A session deja indexed before the cleanup stays searchable after the
file is gone. Details: session files on disk.
What about Windows? Builds exist and CI runs the suite there. macOS and Linux are the battle-tested paths. Field reports welcome in #9.
How do I wipe everything?
deja uninstall --all
rm -rf ~/.cache/dejaGuides
Written for the situation rather than the feature:
Does your agent remember previous conversations? — what each agent keeps between sessions, and what it drops
Session files on disk — how big
~/.claude/projectsgets, and what deleting it costsThe agent lost the context you had — after a crash, a clear, or a session that came back empty
The context window is full — what compaction keeps, measured, and what to do instead
Resuming yesterday's session — find it across every agent, reopen it in the one that owns it
Why agents forget between sessions · Where each agent keeps its history
What compaction drops · Switching agents · Auditing an agent · Exporting a conversation · Across machines · What memory costs
Per harness: opencode · DeepSeek Harness · Kimi Code · Zed · Grok Build · Gemini CLI · Qwen Code · OpenClaw · Goose · Cline · pi and omp · Hermes
Try it on your own history
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
deja install --autoTen seconds to install, about ten to index. The next session your agent opens, it already knows what you solved in that project — including everything from before you installed this.
Contributing
make build test lint, then CONTRIBUTING.md. Adding a harness starts in
the parser registry. Priorities and non-goals are in
ROADMAP.md. Good first issues are labeled.
License
MIT © Vladislav Shulcz
Available Tools
1 tooldejaA
This user's own past coding sessions, across every AI tool they use (Claude Code, Codex, Cursor, opencode, aider, gemini and others). Not general knowledge and not library docs — only what happened on this machine. Pick a mode:
recall: search past sessions. The moment the user implies work already happened ("didn't we fix this?", "what was that error", "what did we decide about X"), and always before debugging an error or re-implementing something. An exact error string, function name or path is the strongest query; a question in your own words works too.
context: the full story of the single best-matching session — problem, decisions, outcome — when a recall hit is not enough.
blame: why a file is the way it is, before you edit, refactor or delete it. Session history, not git authorship.
fix: you just hit an error. What this machine ran, or changed, after that same error before. Pass the failing output verbatim.
how: the real command with the real flags this user runs for a thing — build, test, deploy — instead of a guessed one.
remember: store one durable decision so a later session can recall it. Only after something is settled. A bracketed marker on a result is the user's own later judgement on that session; act on what it says. When a result genuinely helps, tell the user in one short line at the start of your reply: "déjà vu: — (deja:)". Say nothing about recalls that did not help.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | blame: every project, not just this one. | |
| mode | Yes | Which capability to use. | |
| path | No | blame: absolute, relative, or bare filename. | |
| tags | No | remember: optional navigation tags, searchable as #tag. | |
| text | No | remember: one durable fact, decision or conclusion. | |
| what | No | how: tool or target, e.g. 'go test', 'docker compose', a script name. | |
| error | No | fix: the failing output, verbatim. Multi-line pastes are fine. | |
| limit | No | Max results. | |
| query | No | recall and context: an exact token — error string, function name, flag — or the question in your own words. | |
| since | No | blame: age such as 30d or 24h. | |
| offset | No | recall: skip this many ranked matches, to page without re-ranking. | |
| harness | No | Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 21 more — `deja sources` lists them. | |
| project | No | Optional project filter; for remember, where the note is filed (default notes). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only openWorldHint), so the description carries the disclosure burden, and it largely succeeds. It explains the bracketed marker semantics (the user's later judgement that must be acted on), the 'déjà vu' citation format with session id, and the instruction to stay silent about unhelpful recalls. The remember mode's persistence side effect is disclosed ('store one durable decision so a later session can recall it'). Minor gap: no disclosure of retention limits or whether remember can overwrite prior notes, but no destructive behavior exists to warn about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but earns every sentence — for a six-mode, thirteen-parameter tool this density is justified. It is front-loaded with the core purpose and scope, then organized as a scannable mode list, then closes with result-handling behavior. No filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool of this complexity, the description is remarkably complete. Every mode has a trigger, query semantics, parameter mapping, and result-handling protocol. It even covers the citation/acknowledgment behavior and the silent-failure rule, which an agent needs to interact correctly. No output schema exists, so the description appropriately covers result interpretation via the marker and citation guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine value by mapping parameters to modes ('fix: the failing output, verbatim', 'how: tool or target', 'remember: one durable fact') and by giving query-strength guidance. The 'deja sources' reference for the harness enum and the note on multi-line error pastes go beyond the schema's terse descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States precisely what the tool does: search a user's own past coding sessions across all their AI tools. It explicitly scopes itself against general knowledge and library docs ('only what happened on this machine'), which removes any ambiguity about what corpus is being searched. Each of the six modes is named and given a one-line definition, so an agent understands the full capability surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use triggers for every mode: 'always before debugging an error or re-implementing something' for recall, 'when a recall hit is not enough' for context, 'before you edit, refactor or delete' for blame, 'you just hit an error' for fix, and 'Only after something is settled' for remember. The strongest query type is also specified ('an exact error string, function name or path is the strongest query'). No agent has to infer when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.19.5- Changed
deja1 field changed- changed
Input schema / properties / harness / descriptionPrevious value: -"Optional filter: claude, codex, opencode, aider, gemini, cursor, antigravity, grok or qwen."New value: +"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 21 more — `deja sources` lists them."
7 tool updates
v0.19.3- Removed
blame - Added
deja - Removed
fix - Removed
how - Removed
recall - Removed
recall_context - Removed
remember
1 tool update
v0.19.1- Changed
recall1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Search terms; specific tokens (error strings, function names, flags) match best. Multiple words are ANDed."New value: +"An exact token — error string, function name, flag — matches strongest. Failing that, the question in your own words; several words are tried together first and then ranked, so a phrase still finds things."
2 tool updates
v0.17.0- Added
fix - Added
how
1 tool update
v0.16.9- Changed
remember1 field changed- added
Input schema / properties / tagsAdded value: +{ + "description": "Optional navigation tags, searchable as #tag.", + "items": { + "type": "string" + }, + "type": "array" +}
2 tool updates
v0.16.1- Added
recall - Added
recall_context
1 tool update
v0.15.7- Removed
recall_context
1 tool update
v0.15.6- Removed
recall
4 tool updates
v0.15.5- Added
blame - Changed
recall2 fields changed- changed
Input schema / properties / harness / descriptionPrevious value: -"Optional filter: claude, codex, opencode, aider, gemini, cursor, antigravity or grok."New value: +"Optional filter: claude, codex, opencode, aider, gemini, cursor, antigravity, grok or qwen." - added
Input schema / properties / offsetAdded value: +{ + "description": "Skip this many ranked matches — page through results without re-ranking.", + "type": "number" +}
- Changed
recall_context1 field changed- added
Input schema / properties / harnessAdded value: +{ + "description": "Optional harness filter.", + "type": "string" +}
- Added
remember
1 tool update
v0.11.0- Changed
recall1 field changed- changed
Input schema / properties / harness / descriptionPrevious value: -"Optional filter: claude, codex or opencode."New value: +"Optional filter: claude, codex, opencode, aider, gemini, cursor, antigravity or grok."
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of selecting the wrong tool. The internal modes are clearly described with specific triggers and use cases.
With a single tool named 'deja', there is no naming convention to violate. The name is short, memorable, and fits the server's purpose.
One monolithic tool is too few for the broad scope advertised—search, context, blame, fix, how-to, and memory storage are all crammed into a single tool. Separating these into distinct tools would make the surface clearer and more flexible.
The tool covers the full lifecycle of personal coding session memory: search (recall), deep-dive (context), historical reasoning (blame), error recovery (fix), command lookup (how), and durable storage (remember). No obvious gaps exist for the stated domain.
Maintenance
Related MCP Connectors
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Persistent cross-session memory shared by Codex, Claude Code, ChatGPT, and other AI agents.
Project memory, semantic code search, and grounded agent context.
Related MCP Servers
- AlicenseAqualityAmaintenancePersistent local memory for Claude Code that indexes every session's JSONL file verbatim into SQLite + ChromaDB. Exposes 17 MCP tools for semantic recall, deterministic file replay, and fuzzy "do you remember when..." queries across your entire session history — no API calls, nothing leaves the machine.1713MIT
- AlicenseBqualityBmaintenanceA fully local persistent memory layer for LLM coding agents (Claude Code, Codex, Gemini CLI, OpenCode). A shell wrapper intercepts tool invocations, fires hooks on every tool call, then runs a 3-layer pipeline (extract → compress to ≤500-token digest → merge into project memory doc) at session end. The next session gets prior context injected automatically.616MIT
- AlicenseAqualityBmaintenancePersistent memory + FTS5 full-text search for Claude Code conversation history. Indexes ~/.claude/projects/ JSONL into SQLite, exposes 10 MCP tools (store/recall/search memories, browse sessions, get summaries) plus prompts. Includes a web UI for visual exploration104293MIT
- AlicenseNot gradedqualityDmaintenanceLocal memory search for Codex and Claude Code conversations. It keeps history on your machine, builds a local graph index, and returns compact evidence from past sessions.5MIT