Harnesses
deja indexes sixteen coding-agent histories into one retroactive index. A fix found in one agent is recalled inside another.
| Harness | Store | MCP recall | Auto-recall | Resume | Handoff | Needs |
|---|---|---|---|---|---|---|
| Claude Code | ${CLAUDE_CONFIG_DIR:-~/.claude}/projects/**/*.jsonl${DEJA_CLAUDE_ROOT}/**/*.jsonl | ✅ | ✅ | ✅ | ✅ | — |
| Cline | ${CLINE_SESSION_DATA_DIR:-${CLINE_DATA_DIR:-${CLINE_DIR:-~/.cline}/data}/sessions}/*/*.messages.json${DEJA_CLINE_ROOT}/*/*.messages.json${DEJA_CLINE_ROOTS}/tasks/*/api_conversation_history.json | ✅ | — | ✅ | paste | — |
| Codex CLI | ${CODEX_HOME:-~/.codex}/sessions/**/rollout-*.jsonl${CODEX_HOME:-~/.codex}/history.jsonl${DEJA_CODEX_ROOT}/sessions/**/rollout-*.jsonl | ✅ | ✅ | ✅ | ✅ | — |
| opencode | ~/.local/share/opencode/opencode.db${XDG_DATA_HOME}/opencode/opencode.db${DEJA_OPENCODE_DB} | ✅ | ✅ | ✅ | ✅ | sqlite3 |
| aider | ~/.aider.chat.history.md${AIDER_CHAT_HISTORY_FILE}${DEJA_AIDER_ROOTS}/**/.aider.chat.history.md | — | — | — | ✅ | — |
| Gemini CLI | ${GEMINI_CLI_HOME:-~}/.gemini/tmp/*/chats/**/*.{json,jsonl}${DEJA_GEMINI_ROOT}/tmp/*/chats/**/*.{json,jsonl} | ✅ | — | — | ✅ | — |
| Cursor | ~/Library/Application Support/Cursor/User/{globalStorage,workspaceStorage/*}/state.vscdb~/.config/Cursor/User/{globalStorage,workspaceStorage/*}/state.vscdb${CURSOR_CONFIG_DIR:-~/.cursor}/projects/**/agent-transcripts/**/*.jsonl${DEJA_CURSOR_ROOT}${DEJA_CURSOR_CLI_ROOT} | ✅ | — | — | ✅ | sqlite3 (IDE chats) |
| Antigravity | ~/.gemini/antigravity*/brain/*/.system_generated/logs/transcript.jsonl${DEJA_ANTIGRAVITY_ROOT}/brain/*/.system_generated/logs/transcript.jsonl | ✅ | — | ✅ | paste | — |
| Grok Build | ${GROK_HOME:-~/.grok}/sessions/**/updates.jsonl${DEJA_GROK_ROOT}/sessions/**/updates.jsonl | ✅ | — | — | ✅ | — |
| Goose | ~/.local/share/goose/sessions/*.jsonl~/.local/share/goose/sessions/sessions.db${XDG_DATA_HOME}/goose/sessions/*.jsonl${XDG_DATA_HOME}/goose/sessions/sessions.db${DEJA_GOOSE_ROOT}/sessions/*.jsonl${DEJA_GOOSE_ROOT}/sessions/sessions.db${DEJA_GOOSE_DB} | — | — | ✅ | paste | sqlite3 |
| Qwen Code | ${DEJA_QWEN_ROOT:-~/.qwen}/projects/*/chats/*.jsonl | ✅ | — | — | ✅ | — |
| Kimi Code | ${KIMI_CODE_HOME:-~/.kimi-code}/sessions/*/*/agents/main/wire.jsonl${DEJA_KIMI_ROOT}/sessions/*/*/agents/main/wire.jsonl | ✅ | — | ✅ | paste | — |
| pi | ${DEJA_PI_ROOT:-~/.pi/agent/sessions}/**/*.jsonl | ✅ | — | ✅ | ✅ | — |
| OpenClaw | ${OPENCLAW_STATE_DIR:-~/.openclaw}/agents/*/sessions/*.jsonl${DEJA_OPENCLAW_ROOT}/*/sessions/*.jsonl | ✅ | — | — | paste | — |
| Copilot CLI | ${DEJA_COPILOT_ROOT:-~/.copilot/session-state}/*/events.jsonl | ✅ | — | ✅ | ✅ | — |
| Roo Code | ${DEJA_ROO_ROOTS}/tasks/*/api_conversation_history.json | — | — | — | paste | — |
Each format is documented in the session format registry, with synthetic fixtures and a conformance test that catches upstream drift.
Adding a harness
A new parser is one file in internal/sources/ modeled on an existing one, plus wiring at the discovery, doctor, install and registry points. See the open harness issues on GitHub if you'd like to add yours.