Claude Pace
A lightweight Claude Code status line and rate limit tracker that shows your 5-hour and 7-day quota usage in real time. Pure Bash + jq, single file, zero npm.
If you are searching for a Claude Code statusline, a Claude Code quota monitor, or a Claude Code usage tracker, claude-pace is built for that narrow job. It shows not only how much quota you have used, but whether your current burn rate is sustainable before the window resets.

TL;DR
- Claude Code status line with
5h and 7d quota usage, reset countdowns, and pace delta
- Pace-aware rate limit tracking,
⇡15% means overspending, ⇣15% means headroom
- Pure Bash + jq, single file, no Node.js runtime and no lockfile churn
- Install as a Claude Code plugin, with
npx, or as a single script
Most statuslines show "you used 60%." That number means nothing without context. 60% with 30 minutes left? Fine, the window resets soon. 60% with 4 hours left? You are about to hit the wall. claude-pace compares your burn rate to the time remaining and shows the delta.
- ⇣15% green = you've used 15% less than expected. Headroom. Keep going.
- ⇡15% red = you're burning 15% faster than sustainable. Slow down.
- 15% / 20% = used in the 5h and 7d windows. 3h = resets in 3 hours.
- Top line: model, effort, project
(branch), 3f +24 -7 = git diff stats
Claude Code supports custom status lines through its statusLine setting and /statusline workflow in the official docs:
Table of Contents
Install This Claude Code Statusline
Requires jq.
Plugin (recommended):
Inside Claude Code:
/plugin marketplace add Astro-Han/claude-pace
/plugin install claude-pace
/reload-plugins
/claude-pace:setup
npx:
npx claude-pace
Restart Claude Code. Done.
Manual:
curl -o ~/.claude/statusline.sh \
https://raw.githubusercontent.com/Astro-Han/claude-pace/main/claude-pace.sh
chmod +x ~/.claude/statusline.sh
Add to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}
Restart Claude Code. Done.
To remove: delete the statusLine block from ~/.claude/settings.json.
Upgrade
- Plugin:
/claude-pace:setup (pulls the latest from GitHub)
- npx:
npx claude-pace@latest
- Manual: Re-run the
curl command above.
Release notifications: Watch this repo → Custom → Releases.
Claude Code Statusline Comparison
| claude-pace | claude-hud | CCometixLine | ccstatusline |
|---|
| Runtime | jq | Node.js 18+ / npm | Compiled (Rust) | Node.js / npm |
| Codebase | Single Bash file | 1000+ lines + node_modules | Compiled binary | 1000+ lines + node_modules |
| Rate limit tracking | 5h + 7d usage %, pace delta, reset countdown | Usage % | Usage % (planned) | None (formatting only) |
| Execution | ~10ms | ~90ms | ~5ms | ~90ms |
| Memory | ~2 MB | ~57 MB | ~3 MB | ~57 MB |
Execution and memory measured on Apple Silicon, 300 runs, same stdin JSON.
Need themes, powerline aesthetics, or TUI config? Try ccstatusline. The entire source of claude-pace is one file. Read it.
How Claude Pace Tracks Quota
Claude Code polls the statusline every ~300ms:
| Data | Source | Cache |
|---|
| Model, context, cost | stdin JSON (single jq call) | None needed |
| Quota (5h, 7d, pace) | stdin rate_limits; fallback to last-known private cache when rate_limits is absent | Private cache root, accepted only before cached reset |
| Git branch + diff | git commands | Private cache dir, 5s TTL |
Best experience is on Claude Code 2.1.80+, where rate_limits is available in statusline stdin. When a later statusline run omits rate_limits, claude-pace can reuse the last known stdin quota snapshot from its private cache until either cached reset time expires.
Cache files live in a private per-user directory ($XDG_RUNTIME_DIR/claude-pace or ~/.cache/claude-pace, mode 700). All cache reads are validated before use. No files are ever written to shared /tmp.
Claude Code Statusline FAQ
Does it need Node.js?
No. Only jq (available via brew install jq or your package manager). No npm, no node_modules, no lock files.