Harnesses

deja indexes sixteen coding-agent histories into one retroactive index. A fix found in one agent is recalled inside another.

HarnessStoreMCP recallAuto-recallResumeHandoffNeeds
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
/saoudrizwan.claude-dev/tasks/*/api_conversation_history.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}
pastesqlite3
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/rooveterinaryinc.roo-cline/tasks/*/api_conversation_history.json
${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.