Sessions
Every Claude Code, opencode, Cursor Agent, Antigravity, Codex, GitHub Copilot, Grok Build, and Muse Code session already on this machine becomes a session in threadle. Nothing is imported or rewritten for discovery. Provider storage is parsed read-only. (Pressing ▶ still creates new sessions through each tool’s CLI.)
Storage formats are undocumented and churn. See Providers · Tested against for versions recently exercised.
Discovery
Section titled “Discovery”| Provider | Storage read | Override |
|---|---|---|
| Claude Code | ~/.claude/projects/<slug>/<uuid>.jsonl | CLAUDE_CONFIG_DIR |
| opencode | ~/.local/share/opencode/opencode.db (session table) | OPENCODE_DATA_DIR |
| Cursor Agent | ~/.cursor/projects/<slug>/agent-transcripts/… + ~/.cursor/chats | CURSOR_CONFIG_DIR |
| Antigravity | ~/.gemini/antigravity-cli/brain/…/transcript_full.jsonl + summaries db | ANTIGRAVITY_HOME |
| Codex | ~/.codex/sessions/YYYY/MM/DD/rollout-*-<uuid>.jsonl | CODEX_HOME |
| GitHub Copilot | ~/.copilot/session-store.db + session-state/ | COPILOT_HOME |
| Grok Build | ~/.grok/sessions/<urlencoded-cwd>/<session-id>/ | GROK_HOME |
| Muse Code | ~/.local/share/muse/sessions/<id>/session.jsonl (+ index db) | MUSE_DATA_DIR / MUSE_HOME |
A provider is “available” when its storage exists (Cursor, Antigravity, Codex, Copilot, Grok, and Muse also count when only their CLI is present). Unavailable providers are skipped silently. A parser that throws on one session drops that session, never the list.
Claude transcripts are scanned in one streaming pass per file, cached by mtime + size, so relisting is cheap.
The Sessions view
Section titled “The Sessions view”
Every session on the machine in one list. Provider dot, title, agent, model, message count, status.
Rows are grouped by project directory, newest group first. Each group header carries two actions:
| Action | Effect |
|---|---|
| ⇓ bundle | Downloads a JSON bundle for every session in the project |
| → workflow | Seeds a workflow with those sessions and their subagents |
A session row shows, left to right: the provider dot, title (or short id), agent, model (last path segment), message count, relative update time, row actions (blueprint, open-in-editor, ⋯), and the status dot.
The ⋯ menu holds Convert to workflow and Download bundle.
Token counts, cache rate, and dollars are not on the row. They live in the detail aside and in Statistics.
For a spatial view of one project (sessions + contexts + workflows + agents/rules/skills), open ◈ Map. See Map.
Filters & sorting
Section titled “Filters & sorting”| Control | Values |
|---|---|
| Provider chips | all · claude · opencode · cursor · antigravity · codex |
| ● active | Sessions whose process is up. live, running, or waiting (count on the chip) |
| Sort | recent first · most messages · most output tokens · title A–Z |
| Filter box | Substring match on title, project dir, or agent |
The list-level GET /api/sessions also accepts provider, projectDir, and q (title / id / project dir) for scripted use.
Selecting a session
Section titled “Selecting a session”Clicking a row opens the detail aside and expands that session’s subagent runs underneath it. The aside offers (transcript first when available):
- ≡ transcript. Floating interactive message list (file viewer)
- ⌗ blueprint. The full session blueprint (topbar ↗ urls lists outbound http(s) from tool calls)
- growth. Context growth — context tokens across prompts, with cache and top-Δ lists
- → workflow. Seed a canvas with this session as a node
- ⇆ compare. Pick a second session to open a session diff
- ⇄ hand off. Distill and inject into another tool in one step (handoff)
Below the buttons sits the session info panel: identity and token rows, usage by model, context-window pressure, context handoffs, tools, skills, subagents, files, downloads, and ❯ resume in terminal (copies claude --resume / opencode -s / agent --resume / agy --conversation / codex exec resume, prefixed with cd <project>).
Subagent runs
Section titled “Subagent runs”Nested runs never appear in the top-level list. They are fetched per session and rendered as indented ⎇ rows.
| Provider | What a child is | Id shape |
|---|---|---|
| Claude Code | <project>/<sessionId>/subagents/agent-*.jsonl | <sessionId>/agent-<hex> composite |
| opencode | Rows with a parent_id | Normal session id |
| Cursor | Task-tool children linked at discovery | Normal chat id |
GET /api/sessions/instances returns every agent-tagged session plus these children, cached for 15 seconds. That’s what the Agents view counts.
Live status
Section titled “Live status”| Status | Meaning | How it’s determined |
|---|---|---|
| running | Generating right now | Claude: registry running + live pid · opencode: row touched in the last 45 s · Cursor: agent persist list or transcript mtime within ~90 s |
| waiting | Parked on you (input / approval) | Claude registry waiting (+ live pid) |
| live | Process up, not generating | Claude registry idle with a live pid (open terminal) |
| idle | Known, not active | Default when no liveness signal (or Codex. No live map yet) |
| unknown | Provider reports no status | Rare. Treated like idle in the UI |
● active and the footer ❯ N live count any session where isSessionLive is true. live | running | waiting. Stale Claude pid files are ignored (signal-0 probe).
Detail headers (Sessions aside, Agents runs, Inspector, Blueprint) show a SessionLivePill only for the busy states: running, or needs input when waiting. Open-but-idle (live) stays on the status dot alone.
File watchers push sessions.changed and live.status over /api/events. The canvas and transcript viewer refresh from those events. Per-provider quirks: Providers.
Activity · git ↔ session
Section titled “Activity · git ↔ session”Activity correlates files touched across sessions. It also has a possible sessions lookup: paste a git commit / rev (in a repo under the current project) and threadle ranks candidate sessions by time window, branch, and touched-file overlap.
API: GET /api/git/sessions?dir=<repo>&commit=<sha>. Results are heuristic only. Never treat the top hit as ground truth. See Blueprint.
Related
Section titled “Related”- Session blueprint. The per-session deep view
- Cross-tool handoff. Move context between tools
- Timeline, diff & stats. Analysis views
- Costs & billing. Tracked vs actual spend
- Providers. Adapter details