Show HN: Claude Code Usage Monitor – real-time tracker to dodge usage cut-offs

1 week ago 1

Python Version  MIT PRs Welcome

A beautiful real-time terminal monitoring tool for Claude AI token usage. Track your token consumption, burn rate, and get predictions about when you'll run out of tokens.

Claude Token Monitor Screenshot



  • 🔄 Real-time monitoring - Updates every 3 seconds with smooth refresh
  • 📊 Visual progress bars - Beautiful color-coded token and time progress bars
  • 🔮 Smart predictions - Calculates when tokens will run out based on current burn rate
  • 🤖 Auto-detection - Automatically switches to custom max when Pro limit is exceeded
  • 📋 Multiple plan support - Works with Pro, Max5, Max20, and auto-detect plans
  • ⚠️ Warning system - Alerts when tokens exceed limits or will deplete before session reset
  • 💼 Professional UI - Clean, colorful terminal interface with emojis
  • ⏰ Customizable scheduling - Set your own reset times and timezones

For immediate testing (not recommended for regular use):

# Install dependencies npm install -g ccusage pip install pytz # Clone and run git clone https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor.git cd Claude-Code-Usage-Monitor python ccusage_monitor.py

🔒 Production Setup (Recommended)

  1. Python 3.6+ installed on your system
  2. Node.js for ccusage CLI tool

Virtual Environment Setup

Why Use Virtual Environment?

Using a virtual environment is strongly recommended because:

  • 🛡️ Isolation: Keeps your system Python clean and prevents dependency conflicts
  • 📦 Portability: Easy to replicate the exact environment on different machines
  • 🔄 Version Control: Lock specific versions of dependencies for stability
  • 🧹 Clean Uninstall: Simply delete the virtual environment folder to remove everything
  • 👥 Team Collaboration: Everyone uses the same Python and package versions

Installing virtualenv (if needed)

If you don't have venv module available:

# Ubuntu/Debian sudo apt-get update sudo apt-get install python3-venv # Fedora/RHEL/CentOS sudo dnf install python3-venv # macOS (usually comes with Python) # If not available, install Python via Homebrew: brew install python3 # Windows (usually comes with Python) # If not available, reinstall Python from python.org # Make sure to check "Add Python to PATH" during installation

Alternatively, use the virtualenv package:

# Install virtualenv via pip pip install virtualenv # Then create virtual environment with: virtualenv venv # instead of: python3 -m venv venv
# 1. Install ccusage globally npm install -g ccusage # 2. Clone the repository git clone https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor.git cd Claude-Code-Usage-Monitor # 3. Create virtual environment python3 -m venv venv # Or if using virtualenv package: # virtualenv venv # 4. Activate virtual environment # On Linux/Mac: source venv/bin/activate # On Windows: # venv\Scripts\activate # 5. Install Python dependencies pip install pytz # 6. Make script executable (Linux/Mac only) chmod +x ccusage_monitor.py # 7. Run the monitor python ccusage_monitor.py

After initial setup, you only need:

# Navigate to project directory cd Claude-Code-Usage-Monitor # Activate virtual environment source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows # Run monitor ./ccusage_monitor.py # Linux/Mac # python ccusage_monitor.py # Windows # When done, deactivate deactivate

Create an alias for quick access:

# Add to ~/.bashrc or ~/.zshrc alias claude-monitor='cd ~/Claude-Code-Usage-Monitor && source venv/bin/activate && ./ccusage_monitor.py' # Then just run: claude-monitor

# Default (Pro plan - 7,000 tokens) ./ccusage_monitor.py # Exit the monitor # Press Ctrl+C to gracefully exit
# Pro plan (~7,000 tokens) - Default ./ccusage_monitor.py --plan pro # Max5 plan (~35,000 tokens) ./ccusage_monitor.py --plan max5 # Max20 plan (~140,000 tokens) ./ccusage_monitor.py --plan max20 # Auto-detect from highest previous session ./ccusage_monitor.py --plan custom_max
# Reset at 3 AM ./ccusage_monitor.py --reset-hour 3 # Reset at 10 PM ./ccusage_monitor.py --reset-hour 22

The default timezone is Europe/Warsaw. Change it to any valid timezone:

# Use US Eastern Time ./ccusage_monitor.py --timezone US/Eastern # Use Tokyo time ./ccusage_monitor.py --timezone Asia/Tokyo # Use UTC ./ccusage_monitor.py --timezone UTC # Use London time ./ccusage_monitor.py --timezone Europe/London
Plan Token Limit Best For
pro ~7,000 Light usage, testing (default)
max5 ~35,000 Regular development
max20 ~140,000 Heavy usage, large projects
custom_max Auto-detect Uses highest from previous sessions

✨ Features & How It Works

  • Updates every 3 seconds with smooth refresh
  • No screen flicker - intelligent display updates
  • Live token consumption tracking across multiple sessions
  • Token Progress: Color-coded bars showing current usage vs limits
  • Time Progress: Visual countdown to next session reset
  • Burn Rate Indicator: Real-time consumption velocity
  • Calculates when tokens will run out based on current burn rate
  • Warns if tokens will deplete before next session reset
  • Analyzes usage patterns from the last hour
  • Smart Plan Switching: Automatically switches from Pro to custom_max when limits exceeded
  • Limit Discovery: Scans previous sessions to find your actual token limits
  • Intelligent Notifications: Shows when automatic switches occur

Understanding Claude Sessions

How Claude Code Sessions Work

Claude Code operates on a 5-hour rolling session window system:

  1. Session Start: Begins with your first message to Claude
  2. Session Duration: Lasts exactly 5 hours from that first message
  3. Token Limits: Apply within each 5-hour session window
  4. Multiple Sessions: Can have several active sessions simultaneously
  5. Rolling Windows: New sessions can start while others are still active

Default reference times (in your configured timezone):

  • 04:00, 09:00, 14:00, 18:00, 23:00

⚠️ Important: These are reference times for planning. Your actual token refresh happens exactly 5 hours after YOUR first message in each session.

Example Session Timeline:

10:30 AM - First message (Session A starts) 03:30 PM - Session A expires (5 hours later) 12:15 PM - First message (Session B starts) 05:15 PM - Session B expires (5 hours later)

The monitor calculates burn rate using sophisticated analysis:

  1. Data Collection: Gathers token usage from all sessions in the last hour
  2. Pattern Analysis: Identifies consumption trends across overlapping sessions
  3. Velocity Tracking: Calculates tokens consumed per minute
  4. Prediction Engine: Estimates when current session tokens will deplete
  5. Real-time Updates: Adjusts predictions as usage patterns change
Plan Approximate Limit Typical Usage
Claude Pro ~7,000 tokens Light coding, testing, learning
Claude Max5 ~35,000 tokens Regular development work
Claude Max20 ~140,000 tokens Heavy usage, large projects
Plan How It Works Best For
custom_max Scans all previous sessions, uses highest token count found Users with variable/unknown limits

When using the default Pro plan:

  1. Detection: Monitor notices token usage exceeding 7,000
  2. Analysis: Scans previous sessions for actual limits
  3. Switch: Automatically changes to custom_max mode
  4. Notification: Displays clear message about the change
  5. Continuation: Keeps monitoring with new, higher limit

The auto-detection system:

  1. Scans History: Examines all available session blocks
  2. Finds Peaks: Identifies highest token usage achieved
  3. Validates Data: Ensures data quality and recency
  4. Sets Limits: Uses discovered maximum as new limit
  5. Learns Patterns: Adapts to your actual usage capabilities

Scenario: You start work at 9 AM and want tokens to reset aligned with your schedule.

# Set custom reset time to 9 AM ./ccusage_monitor.py --reset-hour 9 # With your timezone ./ccusage_monitor.py --reset-hour 9 --timezone US/Eastern

Benefits:

  • Reset times align with your work schedule
  • Better planning for daily token allocation
  • Predictable session windows

Scenario: You often work past midnight and need flexible reset scheduling.

# Reset at midnight for clean daily boundaries ./ccusage_monitor.py --reset-hour 0 # Late evening reset (11 PM) ./ccusage_monitor.py --reset-hour 23

Strategy:

  • Plan heavy coding sessions around reset times
  • Use late resets to span midnight work sessions
  • Monitor burn rate during peak hours

🔄 Heavy User with Variable Limits

Scenario: Your token limits seem to change, and you're not sure of your exact plan.

# Auto-detect your highest previous usage ./ccusage_monitor.py --plan custom_max # Monitor with custom scheduling ./ccusage_monitor.py --plan custom_max --reset-hour 6

Approach:

  • Let auto-detection find your real limits
  • Monitor for a week to understand patterns
  • Note when limits change or reset

Scenario: You're working across different timezones or traveling.

# US East Coast ./ccusage_monitor.py --timezone America/New_York # Europe ./ccusage_monitor.py --timezone Europe/London # Asia Pacific ./ccusage_monitor.py --timezone Asia/Singapore # UTC for international team coordination ./ccusage_monitor.py --timezone UTC --reset-hour 12

Scenario: You just want to see current status without configuration.

# Just run it with defaults ./ccusage_monitor.py # Press Ctrl+C after checking status

Plan Selection Strategies

Start with Default (Recommended for New Users)

# Pro plan detection with auto-switching ./ccusage_monitor.py
  • Monitor will detect if you exceed Pro limits
  • Automatically switches to custom_max if needed
  • Shows notification when switching occurs

Known Subscription Users

# If you know you have Max5 ./ccusage_monitor.py --plan max5 # If you know you have Max20 ./ccusage_monitor.py --plan max20

Unknown Limits

# Auto-detect from previous usage ./ccusage_monitor.py --plan custom_max
  1. Start Early in Sessions

    # Begin monitoring when starting Claude work ./ccusage_monitor.py
    • Gives accurate session tracking from the start
    • Better burn rate calculations
    • Early warning for limit approaches
  2. Use Virtual Environment

    # Production setup with isolation python3 -m venv venv source venv/bin/activate pip install pytz
    • Prevents dependency conflicts
    • Clean uninstallation
    • Reproducible environments
  3. Custom Shell Alias

    # Add to ~/.bashrc or ~/.zshrc alias claude-monitor='cd ~/Claude-Code-Usage-Monitor && source venv/bin/activate && ./ccusage_monitor.py'
  1. Monitor Burn Rate Velocity

    • Watch for sudden spikes in token consumption
    • Adjust coding intensity based on remaining time
    • Plan big refactors around session resets
  2. Strategic Session Planning

    # Plan heavy usage around reset times ./ccusage_monitor.py --reset-hour 9
    • Schedule large tasks after resets
    • Use lighter tasks when approaching limits
    • Leverage multiple overlapping sessions
  3. Timezone Awareness

    # Always use your actual timezone ./ccusage_monitor.py --timezone Europe/Warsaw
    • Accurate reset time predictions
    • Better planning for work schedules
    • Correct session expiration estimates
  1. Terminal Setup

    • Use terminals with at least 80 character width
    • Enable color support for better visual feedback
    • Consider dedicated terminal window for monitoring
  2. Workflow Integration

    # Start monitoring with your development session tmux new-session -d -s claude-monitor './ccusage_monitor.py' # Check status anytime tmux attach -t claude-monitor
  3. Multi-Session Strategy

    • Remember sessions last exactly 5 hours
    • You can have multiple overlapping sessions
    • Plan work across session boundaries

Large Project Development

# Setup for sustained development ./ccusage_monitor.py --plan max20 --reset-hour 8 --timezone America/New_York

Daily Routine:

  1. 8:00 AM: Fresh tokens, start major features
  2. 10:00 AM: Check burn rate, adjust intensity
  3. 12:00 PM: Monitor for afternoon session planning
  4. 2:00 PM: New session window, tackle complex problems
  5. 4:00 PM: Light tasks, prepare for evening session

Learning & Experimentation

# Flexible setup for learning ./ccusage_monitor.py --plan pro

Sprint Development

# High-intensity development setup ./ccusage_monitor.py --plan max20 --reset-hour 6

Have questions, suggestions, or want to collaborate? Feel free to reach out!

📧 Email: [email protected]

Whether you need help with setup, have feature requests, found a bug, or want to discuss potential improvements, don't hesitate to get in touch. I'm always happy to help and hear from users of the Claude Code Usage Monitor!


📚 Additional Documentation


MIT License - feel free to use and modify as needed.


This tool builds upon the excellent ccusage by @ryoppippi, adding a real-time monitoring interface with visual progress bars, burn rate calculations, and predictive analytics.


Read Entire Article