Skip to content

How it works

~/.claude/projects/**/*.jsonl
│
▼ finops/etl.py stream-parse, normalize, roll up
~/.claude-finops/data/finops.db SQLite warehouse
│
▼ finops/analytics.py KPIs · burn · forecast · waste · anomalies · scorecard
finops/api.py stdlib HTTP: JSON API + static files (127.0.0.1 only)
│
▼ web/ vanilla JS, inline-SVG charts, no build step

The warehouse nests projects → sessions → prompts → requests (one row per usage event) → tool_calls, with files_touched alongside. Each request stores the full token split (input, output, thinking, cache read, and cache writes at 5-minute and 1-hour TTLs). It also stores the derived billable_tokens and context_tokens, the estimated cost, the uncached counterfactual cost, and the measured latency.

If a new version changes the warehouse schema, the dashboard detects this on first launch and rebuilds the warehouse from your transcripts automatically. You don’t need to run --rebuild yourself.