AgentsSession capture

30 — jackin❯ Fit and the Déjà Vu Delta

jackin❯ has host-side foundations for Déjà Vu but lacks provider adapters, Amp stream capture, and a purge-surviving archive.

Summary

Maps session-capture evidence to jackin foundations, provider gaps, implementation options, and unresolved Déjà Vu questions. Verification cutoff: 2026-07-03. This chapter maps evidence onto jackin without making design decisions; feature shape belongs to the Déjà Vu conversation-capture design, which this session-capture dossier underpins.

Question and scope

How does the session-capture evidence map onto current jackin foundations, gaps, and design choices?

Method

The fit analysis combines repository touchpoints with the agent-store, SpecStory, and comparison findings; it records design implications rather than delivery status.

Findings

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. The evidence confirms Déjà Vu's core bets and identifies four additional inputs.

Findings supported by the evidence

  • 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

SpecStory v2.0.0 (2026-06-29) provides 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 treats as future work. Reusable details include FlattenSessionData, 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 runs six agents — the Agent enum (crates/jackin-core/src/agent.rs) is Claude, Codex, Amp, Kimi, Opencode, Grok. SpecStory's providers (claude, cursor, codex, gemini, droid, deepseek) overlap this 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. Agent session stores records the established Grok evidence and the facts that still require live container verification.

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 the AgentStatePaths contract (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/prune reclaims the per-instance dir. Raw PTY bytes in the capsule are parsed into the DamageGrid and dropped (crates/jackin-capsule/src/session.rs) — no lossless replay source exists, exactly as Déjà Vu states.
  • Adjacent machinery to reuse: explicit test-only PTY capture (crates/jackin-xtask/src/pty_fixture.rs) as the replay-fixture pattern; the Turso/SQLite usage snapshot store (crates/jackin-usage/src/usage_snapshot_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

AgentNative store (details: 10)Existing ecosystem to lean onDifficulty signal
Claude CodeJSONL, richest schema, on host alreadyLargest OSS tool belt; SpecStory provider (Apache-2.0)Lowest
Codexrollout JSONL, vendor calls format unstableSpecStory provider; thin viewer long tailLow, needs hedge
OpenCodeJSON store (mid JSON→SQLite migration) + serve HTTP/SSENo SpecStory provider; SDK existsMedium
Kimi (kimi-code)wire.jsonl per agent per sessionNothing found — jackin would be firstMedium, verify live
Ampno durable local file — server-side threads--stream-json capture only; native cloud sharingHighest (live-capture only)
Groksee 10Nothing foundVerify live

Option map (not decisions)

  1. 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.
  2. Vendor-blessed side channels as hedges, per Déjà Vu's own ranking: Codex --json/notify, OpenCode serve, hooks where present. SpecStory's issue history quantifies why the hedge matters.
  3. Amp stays the special case — live --stream-json capture at launch, exactly as Déjà Vu already concluded; nothing in the market changes that.
  4. 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.
  5. 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 for Déjà Vu

QuestionWhy it's now live
Verify Grok and Kimi store layouts inside real jackin containersOnly 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 spotsGrok 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

Implications for jackin

Preserve host ownership and purge-independent retention while adding provider adapters, explicit completeness signals, and a separate searchable archive.

Limitations and unknowns

The mapping does not replace provider-format verification or settle unresolved retention, privacy, and resume semantics.

Sources

On this page