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 stepData model
Section titled “Data model”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.
Upgrades
Section titled “Upgrades”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.