Cadora · cost attribution
Cadora prices every node it runs — tokens and dollars — and rolls the total up four ways: by model, by executor, by funding source, and by day. This is the journey from a run that just spent money to a signed pack that can prove, to the cent, where it went.
Every node Cadora drives carries its own cost and tokens. The run detail canvas is a cost map: each box shows the dollars that node spent and the context tokens it moved. Add them up and you have the run — nothing is pooled into an unattributable total.
Claude Code reports dollars directly. A backend that reports only tokens — Codex — is priced from the public rate table and flagged as estimated, so an estimate never masquerades as a billed figure.
Open the dashboard home and the top row answers it at a glance. Four metric tiles — a muted label over one large number — total the whole archive: how many runs, the generation tokens, the context tokens, and the cost in dollars to four places.
Two token totals, never collapsed into one: generation is input + output; context adds cache creation and cache reads. The gap between 26.0k and 990.8k is the cache doing its job.
Below the tiles, the FinOps panel slices the same spend three ways: by model, by executor (the backend that ran the node), and by funding. Each row is a label, a cost bar, and tokens / $cost. One run on one backend: the same $1.9895 appears under all three lenses — the same money, read three ways.
Fan a run across backends and every lens splits. Route construction to Codex and by executor gains a codex row and by funding a metered row — each priced on its own line. Rows sort by context, so the heaviest spend sits on top.
The top of the FinOps panel keeps two blocks side by side. The token split separates input, output, and cache — the number that matters for a cached backend is how little you paid in fresh output against a wall of cache. Beside it, cost by day plots the archive as a small bar trend.
The all / 30d / 7d toggle narrows every block at once. The window is applied server-side over the archive — the same filter as cadora usage --since.
You don't need the browser. cadora usage prints the identical aggregation in the terminal — totals, the token split spelled out, and the by-model breakdown — with a --since window and a --json mode for piping into anything else.
$ cadora usage --archive-dir runs --since 7d usage since 2026-07-10T09:00:00+00:00: 7 run(s), 12 node(s) tokens: input=6.4k output=19.6k cache_create=118.4k cache_read=846.4k totals: generation=26.0k context=990.8k cost=$1.9895 by model: claude-opus-4-7[1m] 990.8k context $1.9895
A Codex node would add a line here too — priced from the public table and marked est. — plus a note counting the estimated nodes, so the dollars stay legible as billed versus computed.
The per-node cost isn't only for the dashboard. It's written into the run's manifest, and the evidence pack hashes and signs that manifest. So the cost and duration you read here are the same numbers a verifier recomputes — provable after the pack leaves your machine.
$ cadora verify pr7-claims evidence pack pr7-claims: hashes 14 file(s) OK signature VALID — Yves Eychenne · ssh-ed25519 => VERIFIED
Honest duration, on purpose (fix W5): the 18m 40s a reviewer spent deliberating is recorded as review_wait_seconds but subtracted from the signed duration_seconds — a gate held open twenty minutes never signs a twenty-minute node.
The screens above reproduce the live Cadora FinOps panel exactly — the metric tiles, the breakdown rows, the token split, and the daily trend — rendered as editable HTML rather than raster captures, so they lift straight into Figma. Every dollar is attributed to a node, rolled up four ways, and sealed into a pack that proves the number.