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.
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:
- OAuth usage API — polled every minute for account-wide rate limits (5-hour and 7-day)
- Statusline hook — writes per-session status files on each Claude Code interaction (context %, cost, lines changed)
- Transcript files — reads
~/.claude/projects/JSONL files for session activity and token counts - T3 SQLite database — reads
~/.t3/userdata/state.sqlitefor thread titles and session mapping - 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)
Metadata
Release files for claudewatch 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| claudewatch-0.1.0.tar.gz | 14.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| claudewatch-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.2 kB
Release files / claudewatch-0.1.0.tar.gz
| Download URL | claudewatch-0.1.0.tar.gz |
|---|---|
| Size | 14.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87dcce7c8a15fdf89fc0fa737a90872de64bf05b2526449350561c13d56321b5
|
|
BLAKE2b-256 checksum How to use checksums |
2c0ba7ca143e9e50cc9df3e31eeb11a93d03674f514e4601242a91037139aa08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 16, 2026.
Transparency logRelease files / claudewatch-0.1.0-py3-none-any.whl
| Download URL | claudewatch-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a737e7ad388f9e0652ebd0e923038e23e8586cf537982aed9175cd2594bc7ab8
|
|
BLAKE2b-256 checksum How to use checksums |
5a395cd3435d732b86704a7f792eb77d5f30f85dd048da37eaa8c8a77ef2c66b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 16, 2026.
Transparency log