Skip to main content

Terminal-based Claude Code usage limit visualizer with real-time burn-up charts

Project description

🔥 ccburn

CI Release PyPI Python GitHub Release WinGet License

Burning tokens

Watch your tokens burn — before you get burned.

TUI and CLI for Claude Code usage limits — burn-up charts, compact mode for status bars, JSON for automation.

ccburn screenshot

Features

  • Real-time burn-up charts — Visualize session and weekly usage with live-updating terminal graphics
  • Pace indicators — 🧊 Cool. 🔥 On pace. 🚨 Too hot.
  • Multiple output modes — Full TUI, compact single-line for status bars, or JSON for scripting
  • Automatic data persistence — SQLite-backed history for trend analysis
  • Dynamic window title — Terminal tab shows current usage at a glance
  • Zoom views — Focus on recent activity with --since

Installation

Windows (WinGet) — pending approval

winget install JuanjoFuchs.ccburn

Cross-Platform (pip)

pip install ccburn

From Source

git clone https://github.com/JuanjoFuchs/ccburn.git
cd ccburn
pip install -e ".[dev]"

Quick Start

  1. Ensure Claude Code is installed — ccburn reads credentials from Claude Code's config
  2. Run ccburn:
    ccburn              # Session limit (default)
    ccburn weekly       # Weekly limit
    ccburn weekly-sonnet # Weekly Sonnet limit
    

Usage Examples

# Full TUI with burn-up chart (default)
ccburn

# Weekly usage view
ccburn weekly

# Compact output for tmux/status bars
ccburn --compact
# Output: Session: 🔥 45% (2h14m) | Weekly: 🧊 12% | Sonnet: 🧊 3%

# JSON output for scripting/automation
ccburn --json

# Zoom to last 30 minutes
ccburn --since 30m

# Single snapshot (no live updates)
ccburn --once

# Custom refresh interval (seconds)
ccburn --interval 10

Command Line Reference

Usage: ccburn [OPTIONS] [LIMIT]

Arguments:
  [LIMIT]  Which limit to display [default: session]
           Options: session, weekly, weekly-sonnet

Options:
  -i, --interval INTEGER  Refresh interval in seconds [default: 5/30]
  -s, --since TEXT        Only show data since (e.g., 30m, 2h, 1d)
  -j, --json              Output JSON and exit
  -o, --once              Print once and exit (no live updates)
  -c, --compact           Single-line output for status bars
  --debug                 Show debug information
  --version               Show version and exit
  --help                  Show this message and exit

Pace Indicators

Emoji Status Meaning
🧊 Behind pace Usage below expected budget — you have headroom
🔥 On pace Usage tracking with expected budget
🚨 Ahead of pace Usage above expected budget — slow down!

Requirements

  • Python 3.10+
  • Claude Code installed with valid credentials
  • Terminal with Unicode support (for charts and emojis)

How It Works

ccburn reads your Claude Code credentials and fetches usage data from the Anthropic API. It calculates:

  • Budget pace — Where you "should" be based on time elapsed in the window
  • Burn rate — How fast you're consuming your limit
  • Time to limit — Estimated time until you hit 100% (if current rate continues)

Data is stored locally in SQLite for historical analysis and to minimize API calls when running multiple instances.

Troubleshooting

"Credentials not found"

Ensure Claude Code is installed and you've logged in at least once:

claude  # This will prompt for login if needed

Chart not displaying correctly

Ensure your terminal supports Unicode and has a monospace font with emoji support. Recommended terminals:

  • Windows: Windows Terminal
  • macOS: iTerm2, Terminal.app
  • Linux: Kitty, Alacritty, GNOME Terminal

Stale data indicator

If you see "(stale)" in the header, ccburn couldn't reach the API. It will continue showing cached data and retry automatically.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Acknowledgments

  • Rich — Beautiful terminal formatting
  • Plotext — Terminal plotting
  • Typer — CLI framework

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccburn-0.1.2.tar.gz (33.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccburn-0.1.2-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

Details for the file ccburn-0.1.2.tar.gz.

File metadata

  • Download URL: ccburn-0.1.2.tar.gz
  • Upload date:
  • Size: 33.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ccburn-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3b5782b5d5d859b572c085c72e47e320e50db2298a0db6529e6a37067a74b377
MD5 8672b9561012c99f447afab8031c5112
BLAKE2b-256 33396984ca66a799bbc984d0dd5fb33c044f3bcf3df82c18165cd536c1d961ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccburn-0.1.2.tar.gz:

Publisher: release.yml on JuanjoFuchs/ccburn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ccburn-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ccburn-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 32.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ccburn-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4593ef9e8b2a4ca3fdff9c5621c5802ab34d21cb1acaf1f79ccb2cb87c6fa9f3
MD5 c18c339f87929dd087f08ba0dcb63b58
BLAKE2b-256 eaf1240539d92709deaf4c457fb918ebc71819f8db67b1e284506c81b01c8299

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccburn-0.1.2-py3-none-any.whl:

Publisher: release.yml on JuanjoFuchs/ccburn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page