There are two first-party dashboards, and most people looking for this do not know they exist: claude.ai/analytics/claude-code for Claude for Teams and Enterprise, and platform.claude.com/claude-code for Console customers. Neither shows a repository or a live quota. The other three routes are a desktop app that parses the local session files, a Grafana board fed by the OpenTelemetry exporter, and a scheduled ccusage export into a spreadsheet. Pick on upkeep, not features.
- Two first-party dashboards already exist and are free. Check them first.
- Neither first-party view has a repository dimension or live quota.
- For one person, a desktop app wins: nothing to run, nothing to break.
- For a team already running Grafana, OpenTelemetry is the right answer.
- Six panels is the ceiling. Past that nobody reads the first one.
The five routes
Ranked by what it costs you to keep it working. Verified August 2026.
| Route | Setup | Upkeep | Team view | Per repo | Live quota |
|---|---|---|---|---|---|
| First-party dashboard | None | None | Yes | No | No |
| Desktop app | An install | None | Per machine | Yes | Yes |
| Grafana via OpenTelemetry | Half a day | A collector to run | Yes | No | No |
| ccusage into a sheet | Ten minutes | A cron job | Manual | Partly | No |
| Custom web app | Days | Forever | Yes | If you build it | If you build it |
Start with the two that already exist
Most searches for this land on tool roundups without checking whether Anthropic already ships the view. As of August 2026 it ships two, and which one you get depends on how your organisation signs in rather than on which you prefer.
The first-party dashboards.
| Plan | URL | Who can open it | Shows |
|---|---|---|---|
| Claude for Teams or Enterprise | claude.ai/analytics/claude-code | Admins and Owners | Daily active users, sessions, accepted lines, suggestion accept rate, PR contribution metrics, leaderboard, CSV export |
| Claude Console (API) | platform.claude.com/claude-code | Anyone with UsageView | Accepted lines, accept rate, daily users and sessions, daily spend, per-member spend this month |
What both are missing is the same pair of things every third-party tool exists to supply: which repository the spend happened in, and how much quota is left right now. Neither dimension is in the data those dashboards are built from.
The six panels
- Quota headroom now, both windows. The only panel with a deadline attached, and the only one that needs to be visible without opening anything.
- Spend by day, last 30. The trend, and the spikes worth asking about.
- Spend by repo, top ten. The most actionable cut, because an expensive repo is a fixable repo.
- Spend by model. Almost always reveals more Opus than anyone expected.
- Top ten sessions by cost. Where the money actually went.
- Cache hit ratio, trended. The health metric for session hygiene.
The ten-minute version
If you want something today, this is genuinely enough for one person or a small team, and it covers panels two through six.
#!/usr/bin/env bash
set -euo pipefail
OUT="$HOME/claude-usage.csv"
[ -f "$OUT" ] || echo "date,cost,input,output,cache_read" > "$OUT"
npx ccusage@latest daily --json \
| jq -r '.daily[]
| [.date, .totalCost, .inputTokens, .outputTokens, .cacheReadTokens]
| @csv' \
> "$OUT.tmp"
head -1 "$OUT" > "$OUT.new"
cat "$OUT.tmp" >> "$OUT.new"
mv "$OUT.new" "$OUT"
rm -f "$OUT.tmp"
Run it from cron once a day. It gives you the trend, the spikes, and a file you can hand to anyone. As of August 2026 ccusage reads more than a dozen agent CLIs, not just Claude Code, so the same job can cover Codex and the rest of your fleet.
The Grafana route
If you already operate a metrics stack, enable the OpenTelemetry exporter and Claude Code becomes another service in dashboards you already look at. That is a genuine advantage over any standalone tool, and it is the only route that works on every deployment including the cloud providers.
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://collector:4317
# the two settings people miss
export OTEL_METRICS_INCLUDE_SESSION_ID=false
export OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=cumulative
The two defaults that break this route, and what each looks like when it bites.
| Default | Symptom | Fix |
|---|---|---|
session.id on metrics | Thousands of new series a week; Prometheus slows, a hosted vendor bills | OTEL_METRICS_INCLUDE_SESSION_ID=false |
| Delta temporality | Metrics arrive, every rate() reads flat or zero | Set the preference to cumulative, or run deltatocumulative |
What this route cannot give you is panel one. Live quota headroom is reported in rate-limit response headers, never in exported metrics, so the urgent panel has to come from somewhere else no matter how good the board is.
The no-setup route
The honest comparison: if you are one person, this is strictly less work than any other option on the page. If you are an organisation that needs central per-user reporting, open the first-party dashboard for adoption and pair it with the Analytics API for programmatic pulls, because no local tool can see machines it is not installed on.
Questions people ask
Yes, two. Claude for Teams and Enterprise organisations get claude.ai/analytics/claude-code, viewable by Admins and Owners. Console customers get platform.claude.com/claude-code, viewable by anyone with the UsageView permission. Neither shows per-repository cost or live quota.
Fastest path is exporting ccusage JSON to CSV on a cron and charting it. For a team already running Grafana, enable the OpenTelemetry exporter. For one person, a desktop app that parses the session files needs no setup at all and adds live quota.
Only if it reads rate-limit response headers. Anything built on session files, OpenTelemetry metrics, or the Analytics API can show consumption but never remaining allowance, because quota state is not in any of those sources.
Quota headroom, spend by day, spend by repo, spend by model, the top ten sessions by cost, and cache hit ratio. Six panels is the practical ceiling; past that the urgent one stops being read.
Almost certainly temporality. Claude Code exports delta by default and Prometheus is cumulative. Set OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=cumulative, or run the deltatocumulative processor in your collector.
Yes, if it implements a parser per provider, because each CLI writes its own session format. As of August 2026 ccusage reads more than a dozen agent CLIs including Codex, and desktop monitors that cover several agents do the same thing internally.
The first version is an afternoon and the maintenance is permanent: an undocumented format that changes, new models to price, and deduplication edge cases that surface after a month. Build it if the exercise is the point, not if the dashboard is.
No. Anthropic labels the spend figures there as estimates for analytics purposes. For actual costs, use the billing page.
Sources
Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.