$git clone https://github.com/vshulcz/deja-vuClaude Code, Codex, opencode, aider, Gemini CLI, Cursor, Antigravity, Grok Build, Qwen Code, Kimi Code, pi and Copilot CLI write every conversation to local files — gigabytes of debugged problems and design decisions you can't search. deja is a zero-dependency binary that turns t
| 1 | <p align="center"><img src="assets/logo.svg" width="340" alt="deja-vu"></p> |
| 2 | |
| 3 | <p align="center"><strong>Your agents already solved this. deja finds it.</strong><br>Memory tools start empty and record forward. deja starts full: it indexes the sessions your coding agents already wrote to disk — months of history from before you installed it — searches 3.3 GB in ~12 ms, serves it back to any agent over MCP, and moves with you between machines over SSH. One zero-dependency binary, fully local.</p> |
| 4 | |
| 5 | <p align="center"><a href="https://vshulcz.github.io/deja-vu/">vshulcz.github.io/deja-vu</a></p> |
| 6 | |
| 7 | <p align="center"> |
| 8 | <a href="https://github.com/vshulcz/deja-vu/actions/workflows/ci.yml"><img src="https://github.com/vshulcz/deja-vu/actions/workflows/ci.yml/badge.svg" alt="CI"></a> |
| 9 | <a href="https://github.com/vshulcz/deja-vu/releases"><img src="https://img.shields.io/github/v/release/vshulcz/deja-vu" alt="Release"></a> |
| 10 | <a href="https://www.npmjs.com/package/@vshulcz/deja-vu"><img src="https://img.shields.io/npm/v/%40vshulcz%2Fdeja-vu?label=npm" alt="npm"></a> |
| 11 | <a href="https://scorecard.dev/viewer/?uri=github.com/vshulcz/deja-vu"><img src="https://api.scorecard.dev/projects/github.com/vshulcz/deja-vu/badge" alt="OpenSSF Scorecard"></a> |
| 12 | <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a> |
| 13 | </p> |
| 14 | |
| 15 | <p align="center"><img src="assets/demo.gif" alt="deja demo"></p> |
| 16 | |
| 17 | Claude Code, Codex, opencode, aider, Gemini CLI, Cursor, Antigravity, Grok Build, Qwen Code, Kimi Code, pi and Copilot CLI write every conversation to local files — gigabytes of debugged problems and design decisions you can't search. deja is a zero-dependency binary that turns those histories into a memory layer: |
| 18 | |
| 19 | | Feature | What it does | |
| 20 | | --- | --- | |
| 21 | | **Search** | `deja "connection pool exhausted"` — ~12 ms over gigabytes, retroactive: months of logs from before you installed it | |
| 22 | | **Agent recall** | MCP `recall` tool — the agent answers *"we fixed this three weeks ago"* instead of re-debugging, across harnesses: solve it in Codex, Claude remembers | |
| 23 | | **Sync** | `deja sync ssh laptop` — your memory follows you between machines, append-only, idempotent, no cloud in the middle | |
| 24 | | **Handoff** | `deja handoff --to codex` — stuck in one agent? package the live context and continue in another: `codex "$(deja handoff --to codex)"` | |
| 25 | | **Auto-recall** | `install --auto` adds a SessionStart hook: relevant memory lands in context before you ask — ranked by the files your repo is touching, ~120 ms on a 1000-session index; Claude Code also captures the current transcript before compaction | |
| 26 | | **Déjà vu moments** | When a prompt matches work your history already answered, deja announces it — *you have been here* — with the session and its age, and counts the moment in `deja stats` | |
| 27 | | **Redaction** | API keys, JWTs, private keys are stripped at index time — the cache is safe to keep | |
| 28 | | **Stats** | `deja stats` — your agent work, wrapped; `--impact` reports only counted numbers: recalls served, session starts that began with memory, served-vs-raw ratio | |
| 29 | | **Promote** | `deja promote <id>` — distill a session into a curated note with provenance and a lifecycle state (accepted / rejected / superseded / stale); notes outrank raw transcripts | |
| 30 | | **Trust scopes** | `policy.json` decides what memory activates where: search / MCP / auto × local / imported / per-peer; receipts and `deja log` name the rule | |
| 31 | | **Deep verify** | `deja doctor --deep` proves the index against the sources — re-parses a sample, resolves postings, separates staleness from drift | |
| 32 | | **Share** | `deja share <id>` — hand a colleague a sanitized digest of a session, secrets already scrubbed | |
| 33 | | **Remember** | `deja remember "text"` or MCP `remember` — keep durable decisions and conclusions | |
| 34 | | **Blame** | `deja blame <path>` — which sessions touched this file, what was decided and why | |
| 35 | | **Semantic** | optional: point `deja embed` at a local |