A Claude Code usage dashboard: options and what to put on it

A dashboard is only worth building if someone looks at it. That constraint knocks out most of the elaborate options and leaves five that survive contact with a real week, two of which already exist and cost nothing.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

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.

What you need to know
  • 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.

RouteSetupUpkeepTeam viewPer repoLive quota
First-party dashboardNoneNoneYesNoNo
Desktop appAn installNonePer machineYesYes
Grafana via OpenTelemetryHalf a dayA collector to runYesNoNo
ccusage into a sheetTen minutesA cron jobManualPartlyNo
Custom web appDaysForeverYesIf you build itIf 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.

PlanURLWho can open itShows
Claude for Teams or Enterpriseclaude.ai/analytics/claude-codeAdmins and OwnersDaily active users, sessions, accepted lines, suggestion accept rate, PR contribution metrics, leaderboard, CSV export
Claude Console (API)platform.claude.com/claude-codeAnyone with UsageViewAccepted 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

  1. Quota headroom now, both windows. The only panel with a deadline attached, and the only one that needs to be visible without opening anything.
  2. Spend by day, last 30. The trend, and the spikes worth asking about.
  3. Spend by repo, top ten. The most actionable cut, because an expensive repo is a fixable repo.
  4. Spend by model. Almost always reveals more Opus than anyone expected.
  5. Top ten sessions by cost. Where the money actually went.
  6. 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.

Daily append to CSV, then chart it in whatever you already use.
#!/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.

DefaultSymptomFix
session.id on metricsThousands of new series a week; Prometheus slows, a hosted vendor billsOTEL_METRICS_INCLUDE_SESSION_ID=false
Delta temporalityMetrics arrive, every rate() reads flat or zeroSet 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.

  1. Claude Code: track team usage with analytics
  2. Claude Code: manage costs effectively
  3. Claude Code: monitoring with OpenTelemetry
  4. ccusage on GitHub
Try it

The dashboard,
already populated.

Continuum reads history that is already on disk, so the first launch shows you months you did not know you had, plus the quota panel nothing else can fill.

free app · your subscriptions · local-first