Skip to main content

macOS menubar app showing Claude Code rate limits and session status

Project description

ClaudeWatch

Experimental / Alpha — This is a personal project I built for my own workflow. It works for me but is rough around the edges. macOS only. Contributions and feedback welcome, but expect breaking changes.

A macOS menubar app that shows your Claude Code rate limit usage and active sessions at a glance.

menubar example

What it shows

Menubar (always visible):

  • Rate limit usage with smart burn-rate color indicator
  • Countdown to 5-hour window reset
  • Claude system status alerts (from status.anthropic.com)

Dropdown (click to expand):

  • 5-hour and 7-day rate limit details
  • Active sessions grouped by project with T3 thread titles
  • Per-session details (model, context, cost, tokens)
  • Live Claude system status (clickable → status.anthropic.com)

Supported clients

  • Claude Code CLI — full status via statusline hook
  • Claude Code VSCode extension — session detection
  • T3 Code — thread titles and session grouping via T3's local database

Other Claude clients (claude.ai web, Claude desktop app) are not tracked — they don't go through Claude Code.

Limitations

  • macOS only — uses native menubar via PyObjC/rumps
  • Claude Max subscription — rate limit data comes from the OAuth usage API, which requires a Claude Max account
  • Experimental — built for personal use, lightly tested, expect bugs
  • ~55MB RAM — Python + PyObjC baseline; a Swift rewrite would be much lighter

Install

pip

pip install claudewatch

uv

uv tool install claudewatch

From source

git clone https://github.com/hendrickmelo/claudewatch.git
cd claudewatch
uv sync
uv run claudewatch

Setup

After installing, set up the statusline hook so Claude Code sends status data:

# Install the hook (auto-detects existing statusline)
claudewatch install

If you already have a custom statusline, chain it:

claudewatch install --chain ~/.claude/statusline.sh

Run

claudewatch

The app appears in your macOS menubar.

How it works

ClaudeWatch pulls data from multiple sources:

  1. OAuth usage API — polled every minute for account-wide rate limits (5-hour and 7-day)
  2. Statusline hook — writes per-session status files on each Claude Code interaction (context %, cost, lines changed)
  3. Transcript files — reads ~/.claude/projects/ JSONL files for session activity and token counts
  4. T3 SQLite database — reads ~/.t3/userdata/state.sqlite for thread titles and session mapping
  5. Status page — polls status.anthropic.com for incident alerts

Rate limits are account-wide, so data from any session reflects your total usage across all Claude Code clients.

Uninstall

claudewatch uninstall          # remove the statusline hook
pip uninstall claudewatch      # or: uv tool uninstall claudewatch

Requirements

  • macOS
  • Python 3.10+
  • Claude Code installed
  • jq (for the statusline hook)

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

claudewatch-0.1.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

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

claudewatch-0.1.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file claudewatch-0.1.0.tar.gz.

File metadata

  • Download URL: claudewatch-0.1.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claudewatch-0.1.0.tar.gz
Algorithm Hash digest
SHA256 87dcce7c8a15fdf89fc0fa737a90872de64bf05b2526449350561c13d56321b5
MD5 d512710c0648b4bb49edccb377ef8ce8
BLAKE2b-256 2c0ba7ca143e9e50cc9df3e31eeb11a93d03674f514e4601242a91037139aa08

See more details on using hashes here.

Provenance

The following attestation bundles were made for claudewatch-0.1.0.tar.gz:

Publisher: publish.yml on hendrickmelo/claudewatch

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

File details

Details for the file claudewatch-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: claudewatch-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claudewatch-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a737e7ad388f9e0652ebd0e923038e23e8586cf537982aed9175cd2594bc7ab8
MD5 287fb83bae89a85909c420797eea6907
BLAKE2b-256 5a395cd3435d732b86704a7f792eb77d5f30f85dd048da37eaa8c8a77ef2c66b

See more details on using hashes here.

Provenance

The following attestation bundles were made for claudewatch-0.1.0-py3-none-any.whl:

Publisher: publish.yml on hendrickmelo/claudewatch

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