Cost attribution and FinOps in Cadora: every node captures its cost and tokens, the dashboard rolls them up by model, executor, funding, and day, the same numbers are on the CLI, and per-node cost plus an honest duration land in the signed evidence pack.

Cadora · cost attribution

Following the money, one node at a time

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.

Surface · local dashboardPanel · FinOpsCaptured · run pr7-claims
01

A run spends

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.

localhost:8765/runs/pr7-claims
pr7-claimsclaude · aidlc · 3 nodes
completed
requirements · analyst
$0.4213210.4k ctx
design · architect
$0.6620330.6k ctx
construction · engineer
$0.9062449.8k ctx

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.

02

Where did the money go?

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.

localhost:8765/
Runs7
Generation Tokens26.0k
Context Tokens990.8k
Cost$1.9895

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.

03

Break it down

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.

localhost:8765/
FinOps
all30d7d
By model
claude-opus-4-7[1m]990.8k / $1.9895
By executor
claude990.8k / $1.9895
By funding
subscription990.8k / $1.9895

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.

04

The token split, and the trend

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.

localhost:8765/
Token split
in 6.4kout 19.6kcache 964.8k
Cost by day
07-11
07-12
07-13
07-14
07-15
07-16
07-17

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.

05

The same numbers, on the CLI

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.

zsh · cadora
$ 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.

06

It's audit-grade

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.

localhost:8765/runs/pr7-claims
signedconstruction · in the sealed pack
modelclaude-opus-4-7[1m]
backendclaude
cost$0.9062
duration41.2s
review wait18m 40s
fundingsubscription
$ 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.