Repository navigation
0.16.0 — 2026-10-12 — every harness, every version, every affordance
Release Notes
cv now carries a corpus of real sessions written by 17 harnesses at the versions in use and their
latest releases, re-read by a golden test, so a format change shows up as a test diff and old
formats keep reading. Building it found sessions cv could not see at all (OpenCode 2.x, Qwen Code
0.25, the Cline CLI store) and data it silently dropped (OpenClaw 10's compressed events, kimi-cli's
rotated segments, Grok reasoning). On top of it, one vocabulary for what swarms run on: plans,
goals, schedules, background jobs, sub-agent spawns and returns, skills, hooks, questions, branches,
forks and model changes, queried the same way on every harness with cv show --kind <affordance>
and -q has:<affordance>.
What reads differently: turns that spawn a sub-agent are subagent_spawn (and synchronous
results subagent_return) where they were reply/tool_result; Claude task-notifications and
interrupt/meta rows are no longer prompt; Hermes and OpenClaw tool_call wrappers read as the
tool they call. --json consumers keying on those kinds should update.
Run cv index once after upgrading: it counts every session's affordances so has: answers
from the catalog (minutes on a large fleet, incremental after).
All changes
-
The
cvdandcv-mcpshims are gone, as 0.15 announced:cv archive|watch|serveandcv mcp. A launchd job or MCP registration that names them needs the new spelling. -
has:planand the other affordance flags answer from per-session counts in the catalog (filled bycv indexand any full read); only uncounted sessions are parsed. -
cv tools --timelineshows each call'stool_use_id(in--jsontoo), the idcv cat <session> <id>takes. -
cv tools --timelineshows one line per tool call, matchingcv toolscounts; a multi-file patch's other files are inmore_targets. -
cv port --harness qwenwrites Qwen Code 0.25 session JSONL under~/.qwen/projects; it wrote the gemini-cli shape 0.25 no longer reads. -
cv show <id> --kind plan,schedule,background_job,…(affordancesfor all) lists plans, goals, schedules, jobs, spawns, skills, hooks and forks across harnesses, side stores included. -
-q has:plan,has:schedule,has:background_job, …: select sessions by affordance on any harness (cv ls, MCP,cv serve). -
Turns that spawn a sub-agent are
subagent_spawn, and synchronous resultssubagent_return, in Claude, OpenCode, Hermes, OpenClaw, Goose, Grok, Kimi, Roo, Cline, Devin, Continue. -
Claude: task-notifications are
subagent_return(agents, workflows) orinjected_context(commands); interrupt markers andisMetarows areinjected_context, notprompt. -
Hermes and OpenClaw 10.1: a
tool_callreads as the tool it calls, namespacetool_call; their emitters wrap it back. -
Side stores read: Claude
tasks/, Grokplan.json, OpenCodetodo, Geminitracker/andplans/, Goose's todo extension, Hermes goals, loops and heartbeats. -
A reply that spawns a sub-agent counts as a turn and stays in
dataset,distilland lane message counts. -
The
compacthook names the command that reads back the session's plan, schedules and background jobs. -
Qwen Code 0.25: sessions in
~/.qwen/projects/*/chats/*.jsonland their sub-agent transcripts are read; cv previously found none. -
Gemini: tool results and thoughts no longer appear twice after a resume, and a resumed 0.46 session is no longer hidden by its empty twin.
-
Gemini: hook context is its own turn;
invoke_agentcalls are sub-agent spawns and returns. -
Gemini and Qwen corpus: real stores from Gemini CLI 0.46.0 and 0.63.0 and Qwen Code 0.25.1 in the golden test.
-
Codex 0.161/0.162:
turn_abortednotes keep the aborterrorandroot_turn_id;cv formatsnames carried recordsevent_msg.<type>as the manifest does. -
Codex corpus: real rollouts from Codex 0.161.0 and 0.162.1, re-read by a golden test so every recorded format keeps reading.
-
cv indexmerges its segments itself, by size, to completion: no more abandoned ~1 GB background merge on long runs. -
cv show --last Nandcv export --last Nread the session once instead of counting it first: about half the time. -
Kimi discovery reuses the scan cache: an unchanged transcript costs a stat, not a full read.
-
A follower of a Codex session holds only the new messages, not the whole parsed rollout (595 MB to 124 MB on a 708 MB rollout).
-
A
cv searchmiss checks index staleness against the catalog instead of rescanning every harness: 0.53 s to 0.21 s. -
cv ls --enrichkeeps only each session's user turns while reading it: 720 MB to 80 MB peak on the largest sessions. -
cv catstops reading at the tool call it prints instead of holding the whole session. -
OpenCode 2.x: sessions in its new
session_v2/session_messagetables are read (2.x databases looked empty before); a migrated 1.x database shows each session once. -
OpenCode corpus: real stores from 1.18.20 and 2.0.25, plus 2.0.25's migration of the 1.18.20 store.
-
kimi-cli: sessions read every
context_N.jsonlsegment, not just the live file;/clearis a branch;subagents/parse as child sessions. -
Kimi Code 2.x:
subagent.spawned/completedare spawn/return turns,/undois a branch,kimi forksetslineage.forked_from. -
Kimi corpus: real stores from kimi-cli 1.48.0/1.51.0, Kimi Code 0.39.1/2.1.1, and a 0.39.1 store reopened by 2.1.1.
-
Cline: sessions from the CLI 3.x and the 4.x extension (
~/.cline/data/sessions/) are read, including spawned sub-agents and teammates. -
Roo: Roo CLI tasks (
~/.vscode-mock/global-storage/tasks/) are found; reasoning blocks, condense summaries andnew_taskparents are read. -
Continue: the cn CLI's tool results (
toolCallStates) and per-turn usage and model are read; they were missing. -
Devin: a
run_subagentchild, which has nosubagent_headsrow, is listed as its own session. -
Corpora for Cline 3.0.70, Roo CLI 0.1.17, Continue cn 1.5.47 and Devin 3000.11.3; schema snapshots for Zed 1.16.1 and LM Studio 0.4.21.
-
Claude Code 2.1.296:
ScheduleWakeupturns read asorigin: scheduler; its corpus (18 sessions, 6 sub-agents, a workflow) joins the golden test. -
Grok 1.0.50: reasoning records read as thinking; forks and sub-agents carry their parent; its corpus joins the golden test.
-
Goose: a real compaction (agent-visibility flip plus agent-only summary) reads as a compaction boundary; delegate results keep the child session id.
-
Goose corpus: real stores from Goose 1.51.0 and 1.54.0, covering every persisted affordance a headless run can drive.
-
OpenClaw 2026.10: zstd-compressed transcript events are read; before, every event of 1 KiB or more (most tool results) was silently dropped.
-
OpenClaw: sub-agent sessions name their parent (
lineage.parent); cron and sub-agent prompts get scheduler/subagent origin; sub-agent announces aresubagent_return. -
OpenClaw corpus: real stores from 2026.1.29 (JSONL) and 2026.10.1 (sqlite), re-read by the golden test.
-
Hermes 0.21: a
failed_turnrow (a turn that got no reply) reads as an error; v29–v31 identity and source columns ride inextra.hermes. -
Hermes corpus: real
state.dbstores from Hermes 2026.8.31 and 0.21.6, re-read by the golden test.
Install clustervision 0.16.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/emberian/cv/releases/download/v0.16.0/clustervision-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/emberian/cv/releases/download/v0.16.0/clustervision-installer.ps1 | iex"Download clustervision 0.16.0
| File | Platform | Checksum |
|---|---|---|
| clustervision-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| clustervision-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| clustervision-i686-pc-windows-msvc.zip | x86 Windows | checksum |
| clustervision-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| clustervision-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| clustervision-i686-unknown-linux-gnu.tar.xz | x86 Linux | checksum |
| clustervision-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |