clidash
One dashboard for your AI coding CLIs — token usage, estimated cost, and every logged-in account, right in your terminal.

You run Claude Code and Codex CLI all day. Nobody knows what either one spent today. clidash scans the session logs already sitting on your disk, aggregates them per day and per model, and estimates cost from public list prices. No daemons, no cloud, no telemetry — just go run.
┌ clidash ────────────────────────────────────────────────────────────────┐
│ claude 948K tok / $57.99 codex 9.5M tok / $27.54 total $85.53 │
│ [1] Usage [2] Accounts [3] Help │
│ Date Tool Model In Out Cost │
│ 2026-08-23 codex gpt-5-codex 936,204 83,202 $2.37 │
│ 2026-08-23 claude claude-opus-4-1 2,989 795 $1.59 │
│ 2026-08-22 claude claude-sonnet-4-5 18,709 5,191 $0.61 │
│ … │
└────────────────────────────────────────────────────────────────────────┘
Web mode (clidash -web) — same data, zero-dependency HTML dashboard (screenshot uses generated demo data):

Install
From source (Go 1.25+):
go install github.com/ihopenre-eng/clidash@latest
Prebuilt binaries: grab a clidash-<os>-<arch> (or .exe) asset from
Releases — Windows, macOS and Linux, amd64 + arm64, no cgo, single static file.
Quickstart
clidash # TUI (default)
clidash -web # web dashboard on http://localhost:7747
clidash -port 8080 -web
clidash -sessions # list recent sessions in the terminal
clidash -sessions -days 30
clidash -sidebar # narrow live panel, for a split pane
clidash -sidebar -open # split this Windows Terminal window and run it there
clidash -sidebar -budget 40
clidash -statusline # one-line summary, for a CLI status bar
clidash -dir D:\data # scan an alternate home directory
Status line
⧗ 52.4M $94.01 · cx 7d █░░░░░░░ 7% · 7d $365.20 · 13 sessions
One line, meters included: today's tokens and spend, the Codex plan window, the
trailing week, and how many sessions have been active today.
Point Claude Code at it in ~/.claude/settings.json. If a status line command is
already configured, hand it to -wrap and its output is kept in front rather
than replaced:
{
"statusLine": {
"type": "command",
"command": "clidash -statusline -gap 1 -wrap \"your-existing-command\"",
"refreshInterval": 2
}
}
Options: -budget 100 adds a meter for today against that target, -bar-width
sets how many cells each meter takes, and -gap 1 prints a blank line afterwards
so the line does not crowd whatever the host draws underneath it.
Claude Code reports its own context and five-hour window, so clidash does not
repeat them. The Codex meter earns its place for the opposite reason: Codex has
no status line that can carry a custom figure, so this is the only place it
shows up.
Install it once and it is there from then on:
clidash -install # docks to the right edge, starts at every logon
clidash -install -budget 40
clidash -uninstall # take it back out
The docked window parks against the screen edge, stays above the window it sits
beside, and keeps out of the taskbar and alt-tab list. It shows itself when
Claude Code or Codex starts and hides again when the last one exits, so it is
only on screen while it is telling you something. -always keeps it up
regardless, -no-topmost lets other windows cover it, -dock left moves it, and
-dock-width sets the pixel width.
This is the mode to use when Claude Code runs as a desktop app rather than inside
a terminal: there is no pane to split and no shell to hook, so a window of its
own is the only surface that works.
Inside a terminal there are two lighter options:
clidash -sidebar # run it in a pane you split yourself
clidash -sidebar -open # split the current Windows Terminal window
The panel adapts to whatever width and height it is given, down to 22 columns.
clidash CODEX 7D
─────────────────── █░░░░░░░░░░░░░░░░░░ 7%
resets 4d 8h
TODAY
$68.76 CONTEXT
38.3M tok cc ████████████░░░░ 61%
budget $40.00 304.1K / 500K
cc ███████████████████████░ cx █░░░░░░░░░░░░░░░ 7%
cx █░░░░░░░░░░░░░░░░░░░░░░░ 18.4K / 258.4K
BURN (1h) CACHE HIT
$60.83/h 99%
7 DAYS TODAY BY DIR 13
$339.95 cc myapp $67.71
▁▁▁▁▁▁▁▁▃▃▃▃████▃▃▃▃ cx scripts $0.67
M T W T F S S cx docs $0.32
-budget 40 turns today's total amber at 80% and red at the limit.
Two figures are worth explaining. Burn is spend per hour over the last hour,
prorated across each session's span, so a long session does not dump its whole
cost into the final minute. Context is the size of the last prompt each CLI
sent. Codex reports its window directly; Claude Code never does, so the limit is
inferred from the largest prompt that model has been seen to accept, rounded up
to the nearest standard tier.
Features
- Today / last 7 days at a glance — every view leads with the current day and the rolling week, not just an all-time total.
- Per-session breakdown — every conversation with its project, model, turn count, tokens and cost, most recently active first.
- Claude Code usage — parses
~/.claude/projects/**/*.jsonl, aggregates input / output / cache-read / cache-write tokens per day and model.
- Codex CLI usage — parses
~/.codex/sessions/**/rollout-*.jsonl (token_count events), found via recursive JSON search so format tweaks don't break it.
- Cost estimation — configurable pricing tables (
claude.PricingTable, codex.PricingTable); cache reads and cache writes priced separately.
- Account overview — Claude OAuth account, Codex login (decoded JWT email claim or "api-key configured"), every git identity in
~/.gitconfig including [includeIf] includes, active gh CLI account.
- TUI + web mode — bubbletea terminal UI by default, or
-web for a zero-dependency HTML chart page.
- Sidebar —
-sidebar runs a live panel sized for a split pane beside your CLI: today and the week, spend per hour, the Codex plan meter with its reset countdown, a context gauge per active session, cache hit rate, and today's spend grouped by directory. Sections drop in priority order when the pane is short.
- Status line —
-statusline prints one line for a CLI status bar, with meters drawn inline: the Codex plan window, and today's spend against -budget when you set one. -wrap keeps whatever command was there before. Recent-window scanning plus a cached background rescan keeps a two-second redraw cheap.
- Zero telemetry — nothing is collected, nothing is uploaded. The web server binds to
127.0.0.1 only.
- Privacy-first parsing — clidash reads usage counters and account metadata only. API keys, OAuth tokens and credential files are never displayed or stored.
- Windows-first, cross-platform — built with
os.UserHomeDir + filepath, pure Go, no cgo.
FAQ
Where does the data come from?
Claude Code and Codex CLI already write JSONL session logs under ~/.claude and ~/.codex. clidash reads those files read-only and aggregates them locally. Account info comes from ~/.claude.json (OAuth email/org), ~/.codex/auth.json (only the decoded JWT email claim), ~/.gitconfig, and gh auth status.
Are the costs exact?
No — they are estimates from public list prices ($/MTok), with fallback rates for unknown models. Override the exported pricing tables if you're on different rates or want your negotiated prices.
Does it phone home?
Never. There is no telemetry, no update check, no network calls except the optional local web server listening on localhost.
How does clidash avoid double counting?
Two things would inflate the numbers if left alone. Codex token_count events carry the running session total, so summing them grows with the square of the turn count — clidash counts the per-turn last_token_usage delta instead. And Claude Code writes a sub-agent turn to both the parent and the child transcript, and replays history when a session is resumed, so clidash bills each requestId once.
Why is the cached-token share so large?
That is real. Every turn re-reads the whole conversation prefix, and both CLIs report those reads as input tokens. They are billed at a fraction of the fresh rate — 10% for Anthropic cache reads, and $0.125/MTok for gpt-5 cached input — which clidash prices separately. Codex reports input_tokens as a superset of cached_input_tokens, so only the difference is charged at the full rate.
These are list prices — is that what I actually paid?
Only if you are on the API. On a Claude Code or ChatGPT subscription you paid the subscription fee; the figure here is what the same traffic would have cost at public list prices.
Does it work on macOS / Linux?
Yes. Windows-first, but everything is stdlib + bubbletea, so all three platforms build in CI.
Roadmap
- Gemini CLI support
- GitHub Copilot CLI support
- Per-session breakdown
- CSV / JSON export
- Budget alerts
License
MIT © 2026 Lee Seonghyeon (ihopenre-eng)