Documentation

Install, usage, what each panel shows, and how ccstatusboard treats your data.

Install

Pick npm or a standalone binary. Both give you the same ccstatusboard command.

  1. Pick a method

    Use npm if you have Node 22 or newer. Otherwise use the standalone binary, which needs no Node.

  2. Run it

    npm (Node 22+)

    • sudo npm i -g ccstatusboard

      install globally. If your Node comes from nvm, fnm, Volta or Homebrew, leave out sudo: your global directory is already user-owned, and sudo may not find npm.

    • ccstatusboard

      after a global install

    • npx ccstatusboard

      or try it without installing

    Standalone binary

    curl -fsSL https://raw.githubusercontent.com/areimel/ccstatusboard/main/install.sh | sh

    The script downloads the binary for your platform from the latest GitHub Release, verifies its SHA-256 checksum, and installs it to ~/.local/bin. Make sure that directory is on your PATH.

    Override the defaults with environment variables:

    VariableMeaningDefault
    CCSTATUSBOARD_VERSION Release tag to install (for example v0.2.0) latest release
    CCSTATUSBOARD_INSTALL_DIR Directory to install the binary into ~/.local/bin

    Example:

    curl -fsSL https://raw.githubusercontent.com/areimel/ccstatusboard/main/install.sh | CCSTATUSBOARD_INSTALL_DIR=$HOME/bin sh
  3. Launch it

    Run ccstatusboard in any terminal. To start with a different theme, add --theme:

    ccstatusboard --theme nord

Platforms

  • Linux x64
  • macOS Apple Silicon (arm64)
  • macOS Intel (x64)
  • ccstatusboard runs on Linux or macOS. Windows is not supported.
  • Linux arm64 users should install with npm instead.
Update

npm

sudo npm i -g ccstatusboard@latest

standalone binary (re-run the same curl command)

curl -fsSL https://raw.githubusercontent.com/areimel/ccstatusboard/main/install.sh | sh
Uninstall

npm

sudo npm rm -g ccstatusboard

standalone binary (respects CCSTATUSBOARD_INSTALL_DIR; or just delete the file)

curl -fsSL https://raw.githubusercontent.com/areimel/ccstatusboard/main/install.sh | sh -s -- --uninstall

Usage

Run it with no arguments, or pass any of these flags.

ccstatusboard [options]

Flags

FlagWhat it does
--theme <name>Start theme; t / T cycle and save it (see below)
--refresh <ms>UI refresh interval (default 1000, minimum 250)
--ended-hours <n>Keep ended sessions for n hours (default 0: removed when they exit)
--sort <key>project (default), status, activity, cost, ctx or name
--claude-dir <path>Claude Code config dir (default $CLAUDE_CONFIG_DIR, else ~/.claude)
--no-usage-apiDo not call the Anthropic usage API (limits show "disabled")
--config <path>Config file path (default ~/.config/ccstatusboard/config.json)
-v, --versionPrint version
-h, --helpPrint help

Keys

  • ↑↓jk Move selection
  • gG Top / bottom
  • Enter Toggle detail pane
  • s Cycle sort: project, status, activity, cost, ctx, name
  • tT Next / previous theme (saved to the config file)
  • f Filter: all / live only
  • / Search by name or cwd (Enter keeps, Esc clears)
  • Esc Options menu (when not searching, see below)
  • ?F1 Toggle help
  • qCtrl-C Quit

Status glyphs

  • waiting
  • busy
  • idle
  • ended

Themes

Press t or T to cycle themes. Your choice is saved to the config file. Or start with --theme <name>.

  • default
  • mono
  • dracula
  • solarized
  • solarized-light
  • monokai
  • gruvbox
  • nord
  • tokyonight
  • catppuccin
  • onedark
  • cyberpunk

Options menu

Press Esc outside search to open it. Use ↑ ↓ to move, ← → to change a value, Enter to edit numbers and column visibility, and Esc to close. Changes apply immediately and are written to ~/.config/ccstatusboard/config.json.

OptionConfig keyDefault
Themethemedefault
Subscription price (per month, for plan ratio)subscriptionUSDunset
Sortsortproject
Detail paneshowDetailon
System panelshowSystemon
System metricssystemMetricsall groups
Columnscolumnsall but branch
Dim idle afteridleCutoffMinutes60 min (1h)
Keep exitedendedWindowHours0 (removed on exit)
RefreshrefreshMs1000 ms
Usage pollusagePollSeconds60 s

The full config reference is in the README on GitHub.

Panels

Each panel of the board, with what it shows and the details behind it.

Usage limits

Shows how much of your 5-hour and weekly Claude usage you have used, and when each limit resets.

5h    [||||||||||||        ] 58%  resets 2h14m
Week  [||||||              ] 31%  resets Thu 09:00
  • The current 5-hour block percentage.
  • The weekly percentage and the per-model weekly percentage.
  • Reset countdowns for each limit.
  • Same source as Claude Code's /usage.

Burn rate

Projects where each limit will end up at its reset.

5h    NEAR LIMIT  92% at reset  hits n/a
Week  OVER        108% at reset  hits Wed
  • The estimate blends two speeds, weighted 60% recent and 40% average.
  • Average: percent used so far, divided by the time elapsed in the window.
  • Recent: a least-squares slope over the last 45 minutes (block) or 12 hours (week), so a sudden change in pace shows up quickly.
  • Bands: UNDER below 85%; NEAR LIMIT from 85% up to and including 100%; OVER above 100% up to 125%; CRITICAL above 125%.
  • If 100% is reached before reset, the row shows when (hits HH:MM, or a weekday for the week) and what share of the window that is. Otherwise it shows hits n/a.
  • The numbers are estimates from the usage samples seen so far, so they are most reliable once a few minutes of data exist.

Estimated cost

Shows estimated spend in USD for the current block, today, this week and this month.

block $12.40  week $96.10  month $412.75
burn  $4.10/h  24h ▁▂▃▅▇▆▅▃▂▃▅▆▇▅▃▂▁▁▂▃▅▆▇▆
  • Totals in USD for the current block, today, this week and this month.
  • Burn rate in $/h, with a 24-hour sparkline.
  • Optional plan row: this month's API-equivalent cost divided by your subscriptionUSD. It appears only when a subscription price is set, and turns green at 1× or more.
  • Costs are estimates based on API list prices. On a Pro/Max subscription you are not billed these amounts.

Sessions

Lists every Claude Code session on this machine, grouped by project.

── ccstatusboard (1) ──────────────────
◐  ccstatusboard  opus-5.5  ███████░░░ 61%  $4.20  now
  ├─ Explore                          12s
○  power-tools     sonnet    ██░░░░░░░░ 22%  $1.10  3m
  • Grouped by project (the git repo name), so worktrees and subfolders of one repo share a group, under ── <project> (n) ── header rows.
  • Each row shows status (waiting and why, working, or idle), model, context-window fill, CPU and memory of the session's process, cost, last activity and uptime.
  • The git branch is hidden by default. Turn it on under Options → Columns.
  • Live sessions idle past the cutoff (idleCutoffMinutes, default 1h) are dimmed.
  • Exited sessions are removed at once unless endedWindowHours keeps them.
  • Subagent tree: active subagents appear as tree rows (├─ / └─) under their parent session, with the agent type and last activity.
  • Group headers and subagent rows cannot be selected: j / k move between sessions.

System

Shows CPU, memory, swap and disk usage, plus network activity, at a glance.

cpu [|||||||             ] 34%  mem [||||||||||          ] 52%
net ▁▂▃▅▂▁▁▃▅▇▅▃ down  ▁▁▂▁▁▂▁▃▁▁▂▁ up
  • CPU, memory, swap and disk meters.
  • Network download and upload sparklines, and a per-core strip.
  • On Linux: temperatures, battery, CPU and GPU detail, stall pressure, disk speeds and network link details, each with its own toggle.
  • Sampled every 2 s, with 60 points of history for the sparklines.
  • Hidden on terminals shorter than 30 rows, or when showSystem is false.

Detail pane

Shows the full details for the selected session.

tokens in 182k  out 41k  cache 1.9M
cost   opus-5.5 $4.20
agents Explore  cwd ~/code/ccstatusboard
  • Toggle it with Enter.
  • Token breakdown and per-model cost.
  • Active agents, cwd, permission mode and Claude Code version.

Privacy and safety

ccstatusboard runs locally. It makes two kinds of network request, and you can switch the usage one off with --no-usage-api.

  • api.anthropic.com usage
  • raw.githubusercontent.com LiteLLM prices
Read-only towards Claude Code
ccstatusboard never writes inside ~/.claude. Its writes are its own caches in $XDG_CACHE_HOME/ccstatusboard/ if XDG_CACHE_HOME is set, otherwise ~/.cache/ccstatusboard/ on Linux and ~/Library/Caches/ccstatusboard/ on macOS, and the config file, which changes only when you edit an option or press t / T.
OAuth token
It reads your Claude Code OAuth access token (from ~/.claude/.credentials.json, or on macOS the Keychain entry Claude Code-credentials) only to call Anthropic's usage endpoint. It never refreshes, stores or sends the token anywhere else. Use --no-usage-api to turn this off.
Session key files
It never opens the per-session *.key files.
Network requests
The only network requests are to api.anthropic.com (usage) and raw.githubusercontent.com (LiteLLM prices).
Undocumented internals
The session registry, transcript format and usage endpoint are undocumented Claude Code internals, verified against Claude Code 2.1.x. A future Claude Code release may change them. ccstatusboard skips records it can't parse and shows ⚠ untested Claude Code vX when it sees an unverified version. Please open an issue if something looks wrong.
Costs are estimates
Costs are based on API list prices. On a Pro/Max subscription you are not billed these amounts.

Where the data comes from

DataSource
Running sessions and status~/.claude/sessions/<pid>.json, checked against the live process table
Project namegit rev-parse --git-common-dir in each session's cwd (read-only; falls back to the folder name outside a git repo)
SubagentsThe session's subagents/ folder: agent transcripts, and which agents wrote recently (active ones only)
Tokens, model, branch, contextSession transcripts in ~/.claude/projects/**/*.jsonl (tailed incrementally)
Today / week / month totalsA startup scan of transcripts from the last 35 days, cached in ccstatusboard's cache dir
5h / weekly limitsAnthropic's OAuth usage endpoint (as used by Claude Code's /usage), polled every 60 s
PricesLiteLLM's pricing table (https://github.com/BerriAI/litellm), cached for 24 h
CPU, memory, swap, disk, net, load/proc on Linux, sysctl and netstat on macOS; disk via statfs. Sampled every 2 s, with 60 points of history for the sparklines
Per-session CPU and memory/proc/<pid>/stat and statm on Linux; ps on macOS, for the live session processes only