30 — jackin❯ Fit and the Déjà Vu Delta
30 — jackin❯ Fit and the Déjà Vu Delta
Research conducted: 2026-07-03. This chapter maps the evidence onto jackin❯. It makes no design decisions — feature shape belongs to a brainstorm run against Déjà Vu, which is the existing design proposal this dossier now underpins.
Where this dossier sits relative to Déjà Vu
Déjà Vu already proposes the capture-store-browse layer: per-agent providers → one normalized record → protobuf archive + SQLite index under ~/.jackin/data/deja-vu/ → TUI/CLI/MCP surfaces. This dossier is the market- and implementation-evidence layer under that design. Net result of the research: Déjà Vu's core bets are confirmed; four inputs are new.
Confirmed by this research
- Native-file reading is the winning vector. SpecStory's entire 58k-LOC implementation (02) and effectively every OSS tool in 11 read the agents' own stores; nobody PTY-scrapes; hooks and OTel appear only as liveness/metrics side channels. Déjà Vu's vector ranking (A first, F last) matches the market unanimously.
- The SPI shape is proven. SpecStory's provider interface (locate / parse / normalize / watch / reconstruct per agent, ~11 methods) is a production-tested template for Déjà Vu's provider layer, under a license (Apache-2.0) that permits studying and porting it.
- The gap is real. As of 2026-07-03 no product ships a cross-agent, host-side, purge-surviving archive (12): Mantra is closed and 3-agent, orchestrators keep history captive, vendor clouds are per-vendor silos. Déjà Vu's novelty claim survives contact with the market.
New input 1 — SpecStory v2.0.0 landed on Déjà Vu's roadmap first
Four days before this research (2026-06-29), SpecStory shipped cross-project cross-agent resume and indexed FTS search: it reconstructs a normalized session into the target agent's native format, writes it into the target's live store, and launches it (02 §cross-agent resume). That is a working implementation of the "resume a Claude session in Codex" experience Déjà Vu defers as future work ("cross-agent @thread injection" non-goal). Implementation details worth stealing rather than rediscovering: FlattenSessionData (collapse tool/thinking into role-tagged turns), the prepended MigrationNote turn, per-provider ReconstructSession/NativeSessionPath with ErrReconstructionUnsupported as the graceful floor, and the disposable size+mtime+version-fingerprinted index.
New input 2 — the roster drift: six agents, and two of six are SpecStory-covered
jackin❯ now runs six agents — the Agent enum (crates/jackin-core/src/agent.rs) is Claude, Codex, Amp, Kimi, Opencode, Grok — while Déjà Vu and several other surfaces still say five (stale spots found during recon: crates/jackin-core/src/agent/runtime.rs doc-comment, the Déjà Vu page itself, and the /jackin/{claude,codex,amp,kimi,opencode}/ credential-mount list in HOST_AND_CONTAINER.md). SpecStory's providers (claude, cursor, codex, gemini, droid, deepseek) overlap jackin❯'s roster on exactly two of six — Claude Code and Codex. Any "just run SpecStory" shortcut caps out there; Amp, Kimi, OpenCode, and Grok need jackin❯-owned providers regardless. Grok's session store was the one blank spot in all prior research; 10 records what could be established and what must be verified live in a container.
New input 3 — the provenance frontier is live
Two independent products now join conversation turns to code state: SpecStory's in-repo provenance engine (fsnotify + tool-use events correlated by path-suffix + ±5 s window; git-notes design recommended but unbuilt) and Mantra's per-turn git snapshots with diff/restore (12). Déjà Vu lists change attribution as a V1 non-goal — correctly, per this evidence — but the market signal is that attribution is the next competitive layer, and jackin❯ owns more of the substrate (workspace mounts, git materialization, container boundary) than either competitor.
New input 4 — field-tested failure modes to design against
From SpecStory's issue tracker (01): polling without debounce burns CPU (busy-wait 20–50% idle); silent incompleteness destroys trust faster than absence of the feature; transcripts landing un-gitignored in repos leak secrets (their #224 — and Lore v3.9.0 answered with redaction at the emit boundary); closed-store scraping (Cursor IDE) is a permanent breakage treadmill. None of these is hypothetical; all have issue numbers.
The substrate jackin❯ already has (recon findings)
- Histories already land on the host. Agent homes are bind-mounted and restored under
~/.jackin/data/<container>/—.claude/,.codex/,.local/share/amp/,.kimi-code/,.local/share/opencode/,.grok/per theAgentStatePathscontract (crates/jackin-core/src/agent/runtime.rs), which is explicitly the single source of truth for what jackin❯ mounts under the agent home — the natural hook point for a capture reader. For file-store agents the capture step is a host-side read of paths jackin❯ already owns. - Nothing reads them yet, and teardown deletes them. No conversation capture exists in the codebase today;
jackin eject/prunereclaims the per-instance dir. Raw PTY bytes in the capsule are parsed into theDamageGridand dropped (crates/jackin-capsule/src/session.rs) — no lossless replay source exists, exactly as Déjà Vu states. - Adjacent machinery to reuse: structured-JSONL launch diagnostics (
crates/jackin-diagnostics/src/run.rs) as the write-events-keyed-by-run pattern; the Turso/SQLite usage-telemetry store (crates/jackin-usage/src/telemetry_store.rs) as the persistent-store precedent; schema-version machinery (crates/jackin-config/src/versions.rs) for any new versioned artifact; the live session inventory (crates/jackin-runtime/src/runtime/attach.rs) and the capsule usage overlay as the closest existing TUI patterns a conversation browser would extend.
Per-agent coverage picture for jackin❯'s roster
| Agent | Native store (details: 10) | Existing ecosystem to lean on | Difficulty signal |
|---|---|---|---|
| Claude Code | JSONL, richest schema, on host already | Largest OSS tool belt; SpecStory provider (Apache-2.0) | Lowest |
| Codex | rollout JSONL, vendor calls format unstable | SpecStory provider; thin viewer long tail | Low, needs hedge |
| OpenCode | JSON store (mid JSON→SQLite migration) + serve HTTP/SSE | No SpecStory provider; SDK exists | Medium |
Kimi (kimi-code) | wire.jsonl per agent per session | Nothing found — jackin❯ would be first | Medium, verify live |
| Amp | no durable local file — server-side threads | --stream-json capture only; native cloud sharing | Highest (live-capture only) |
| Grok | see 10 | Nothing found | Verify live |
Option map (not decisions)
- Port the mechanism, not the binary. SpecStory's Go providers for Claude/Codex are Apache-2.0 reference implementations; Déjà Vu's Rust providers can mirror their parse rules (dedup by uuid, sidechain re-parenting, session_meta first-line contract) without running foreign binaries in the capsule. Covers 2/6 agents with high confidence.
- Vendor-blessed side channels as hedges, per Déjà Vu's own ranking: Codex
--json/notify, OpenCodeserve, hooks where present. SpecStory's issue history quantifies why the hedge matters. - Amp stays the special case — live
--stream-jsoncapture at launch, exactly as Déjà Vu already concluded; nothing in the market changes that. - The index/store patterns are settled questions in the wild: disposable fingerprinted SQLite index + FTS5 (SpecStory), full-rewrite idempotent rendering (SpecStory), content-addressed archive keyed by workspace (Déjà Vu's own design). Evidence supports Déjà Vu's storage shape; the protobuf-vs-JSONL ADR remains open there.
- Defensive defaults the evidence demands: gitignore/redaction posture decided up front (SpecStory #224 + Lore redaction), debounce discipline in any watcher, and "capture what the operator saw" as the completeness floor Déjà Vu already sets.
Open questions this research adds to Déjà Vu's list
| Question | Why it's now live |
|---|---|
| Verify Grok and Kimi store layouts inside real jackin❯ containers | Only roster members with no third-party evidence base; 10 records the best external knowledge |
| Does cross-agent resume (write into target store) enter the roadmap earlier than planned? | SpecStory v2.0.0 proves demand and mechanism; Déjà Vu currently defers it |
| Update Déjà Vu's five-agent framing and the stale six-agent drift spots | Grok exists in the enum; capture must cover six |
| Is turn↔git-state attribution a fast-follow rather than a distant non-goal? | Two competitors shipped/prototyped it; jackin❯ owns more substrate |