cyboflow Home Features Docs Blog Changelog Download

Insights and telemetry.

Your agents have been filing findings, spending tokens, and leaving a quality record. Read it back here: what they found, what the runs cost, where quality is trending, which flow variant wins, and what telemetry leaves your machine.

01The Insights view

Insights sits in the left rail under the subtitle Findings · stats · quality, with a badge counting pending findings. The chips in its header scroll you to one of four numbered sections.

01 FindingsA triage inbox for what your agents filed, ending in a seeded Compound run.
02 StatisticsTokens, cache, cost, and an error rate per flow, broken down by flow, step, and model.
03 Code qualityWhere each finding was caught: inside the flow, at verification, or after the merge.
04 ExperimentsVariant tables, rotation status, past experiments, and the head-to-head comparison view.

A project picker in the header scopes the sections, and it opens on All projects. The Randomized rotations list is the exception: it is cross-project whatever the picker says.

Note The rail badge is a different count. It reports pending findings for the project whose review inbox you opened last, so it reads 0 on a fresh launch.

02Findings triage

The section is headed 01 Findings, over three counters: pending, resolved, and dismissed.

What lands here is narrower than everything your agents wrote. A finding reaches triage only once its run’s session delivered the work: merged, integrated, marked complete, or a PR opened. Work that was thrown away never appears: if no run in the session carries a delivered outcome, its findings stay out of triage.

Findings an agent addressed to a machine audience are left out too. A blocking finding is listed like any other.

  1. Untriaged

    The top five untriaged findings, each row carrying Approve, Modify, and Dismiss, with a Show N more untriaged toggle beneath. Approving a finding you never tagged files it as a Quick fix.

    Modify opens a drawer with two rows. Re-tag → takes Quick fix, Documentation update, or Task candidate. Priority → takes P0, P1, or P2.

  2. Ready to compound

    Approved findings land here, bucketed Quick fix, then Documentation update, then Task candidate, in that fixed order. Five rows show across all three buckets, with a Show N more toggle, a checkbox per row, and Select all. Selecting one finding locks the surface to that finding’s project, because a Compound run covers one project.

03From findings to a Compound run

A sticky tray carries the tally and a Run compounding session (N) → button. It opens the launch wizard on its Configure step, with Compound preselected, the project pinned, and your selection attached.

A seeded run skips one gate, not both. The approve-learnings gate is gone. The terminal Approve compound gate over the committed diff still runs.

The bucket decides how each finding resolves.

Quick fixThe change is applied in the run, and the finding resolves as fixed.
Documentation updateThe docs edit lands, and the finding resolves as triaged.
Task candidateA new backlog task is created, and the finding resolves as promoted against that task id.

A finding the write-back agent reports as skipped is left unresolved on purpose. Anything still unresolved when the run ends is deselected and returns to Ready to compound, where you decide whether it goes into the next run.

04Statistics

The section is headed 02 Statistics. It opens on Token use · last 30 days, a stacked column chart split per model.

Below the chart, one card per flow, highest spend first. A card carries total tokens, an · avg Nk figure per run, a + Nk cache line, a sparkline, and a meta line reading error X% · runs N · cost $Y. Runs an app restart killed are counted as interrupted and kept out of the error rate.

Selecting a card swaps the Token by flow panel for Token by step, computed over that flow’s last 20 runs.

Version history sits beside that panel whenever a flow has saved revisions, the selected one or, with nothing selected, the flow with the most runs. Each revision gets a success figure reading N% ok, average tokens, and a delta against the previous revision. A LIVE badge marks the revision a new run would freeze.

  • Breakdowns are by flow, by flow step, and by model per day. There is no per-agent breakdown, and project scopes the whole view instead of splitting it.
  • Cost is tallied per session segment, so resuming a run does not count it twice. Subagent tokens are folded into the run that spawned them.
  • The eval jury’s own spend is not counted here.

05Code quality

The section is headed 03 Code quality, and the body is three columns.

In-workflowEverything a flow filed while it was still doing the work.
Found during verificationFindings whose producing step was a verify, review, or test step.
Post-mergeFindings marked as post-merge bugs, or raised after the run merged. Those rows carry the lag, such as 2d after merge.

Each row shows a severity dot, a status chip, and a meta line of file path, source step, and flow name. The chip reads Open, Dismissed, Fixed, Triaged, Promoted, or Resolved, which is how you see what a Compound run has already acted on.

Limit Each column reads at most the 100 most recent findings for the scope you have selected, so it is a recent window and older findings drop off.

06Experiments

The header reads 04 Experiments. Each flow with variants gets its own table, a row per variant across nine columns: Variant, Runs, Success, Avg duration, Avg tokens, Avg cost, Avg eval, Findings, and Post-merge bugs. A flow with no variants shows no table.

A row with fewer than five runs is annotated n<5, provisional. A variant you deleted keeps its row, suffixed (deleted).

Under the table sit a rotation line naming the active variants and their weights, a Randomized rotations list, and a Past experiments list grouped by series with a Show abandoned toggle. Variants covers how an experiment gets set up.

A row in Randomized rotations or Past experiments opens the comparison view. Its Pairwise verdict card holds three samples with the two arms in randomized positions, graded by the same jury shape as the eval below: two Opus judges and one Codex judge. Each sample gets a chip, the card gets an overall confidence percentage, and Re-run comparison grades it again.

The verdict runs once both arms settle, and only while Code Review Eval and its Auto-grade variant & experiment runs sub-toggle are both on.

Beneath it, Which version wins? offers Promote A, Promote B, Run another experiment…, and Switch to randomized. All four wait until the experiment settles. While it is unsettled, Cancel experiment tears it down.

Promoting, switching to rotation, and canceling each ask you to confirm. Run another experiment… opens a panel where you can attach a seed idea first. Switch to randomized is unavailable when one arm is a quick session.

07Code review eval

Sprint and Ship grade their own output by default. At the human-review step the run’s diff is frozen, and a three-slot jury reads it: two Opus judges and one Codex judge, scoring against rubric v1.2 (8 dimensions).

Compound and Verify Setup are exempt. An A/B-tagged run of a flow that has no human-review step is graded when it settles instead.

The verdict renders in the run summary as Score summary with the rubric version, deterministic gate chips, a band, a confidence interval, and a toggle onto the per-dimension breakdown and the findings. Bands are Excellent at 90 and above, Good 70–89, Fair 40–69, and Poor 0–39.

The panel names its own jury: graded by Opus ×2 + Codex. When the Codex slot does not report, the panel reads Codex juror unavailable, or Codex juror failed if it started and broke, followed by scored on Claude only and the captured reason. On a Claude-only install that is the ordinary reading, not a fault.

  • Each judge writes findings for the issues it sees, tagged with the rubric dimension they came from. Those are merged across the three samples, deduped against what the run’s own reviewers already filed, kept only when net-new, and capped at 10 advisory findings per eval.
  • A catastrophic-class issue that a majority of the jury confirms caps the overall score at 69 and files a blocking review item.
  • Each gate chip names its gate, with a status dot beside it. The dot is grey for unknown, which is what most runs show, because build, test, typecheck, and lint results are rarely recorded. A failed gate shows GATED in place of a score.
  • A low score on its own files nothing.

The eval is on by default at Settings → AI → Session settings → Code Review Eval. A sub-toggle, Auto-grade variant & experiment runs, is also on. It extends the jury to rotation and A/B arms. Both are read when a run reaches its grading point, so a change also lands on runs already in flight that have not been graded yet.

Per run, Quality eval in the launch wizard’s Advanced options takes Use global setting, On, or Off.

An agent can also ask for an eval of the current working-tree diff. The verdict lands as an Eval report artifact tab plus a non-blocking item on the review queue. It is refused on an A/B-tagged run, on a run that already has its automatic eval, and when there is no diff.

08Telemetry and privacy

Two channels, and no others: Sentry for crash and error reports, Aptabase for usage metrics. The switches read Send anonymized crash & error reports and Send anonymized feature usage metrics. They live at Settings → General → Privacy & Telemetry, and a change takes effect on the next launch.

A downloaded build ships with both on, so telemetry is opt-out. An unpackaged development build ships with both off.

Never sentSource code, prompts, file paths, and repo names.
IdentityNo install id rides on an error or a usage event. The random install id is attached to in-app bug reports only.

09Report a bug

Report a bug sits in the sidebar footer. The dialog asks what happened, the steps to reproduce, and what you expected. It takes an optional email address.

A read-only panel shows exactly what it will attach: version, platform, Electron version, build, install id, and recent recorded errors. Include recent session logs (prompts and file contents excluded) starts off, and you can preview the log tail before you send.

The dialog is not gated on the two telemetry switches, so turning both off stops the automatic channels and leaves this one.

Limit One report every 30 seconds and 10 per hour, 5,000 characters per field, and 128 KB of attached log text. A report that cannot reach the network is queued on disk.