Usage-Monitor-for-Claude Jens Duttke
winget install --id=jens-duttke.usage-monitor-for-claude -e Lightweight Windows tray app that monitors your Claude rate limits in real time - portable single EXE, zero configuration, fully auditable
winget install --id=jens-duttke.usage-monitor-for-claude -e Lightweight Windows tray app that monitors your Claude rate limits in real time - portable single EXE, zero configuration, fully auditable
Monitor your Claude rate limits in real time - right from your Windows system tray.
A native Windows tray app that shows your Claude usage at a glance - lightweight, portable, and fully auditable. Rate limits are shared across claude.ai, Claude Code, Claude Code Cowork, and IDE extensions for VS Code and JetBrains - always know how much of your session and weekly limits (Sonnet, Opus, Fable, Cowork, and any future quota types) you have left.

claude update in the background to renew the token without user intervention. If a CLI update is installed, shows a notificationlanguage settingThis tool handles your Claude Code OAuth token, so you should be able to verify it is safe. The codebase is deliberately structured for easy auditing:
api.anthropic.com, no other hostseval(), exec(), compile(), or dynamic importsapi.py)~/.claude/.credentials.json). If you have CLAUDE_CONFIG_DIR set, the app uses that directory instead.> [!TIP]
> If the token expires, the app automatically runs claude update to refresh it. If the token is missing entirely, the app shows a notification and a "!" icon - log in to Claude Code and the monitor picks it up automatically.
No Python required. Download the latest UsageMonitorForClaude.exe, place it wherever you like, and run it. To remove, disable "Start with Windows" in the context menu first (if enabled), then delete the file.
| Action | What happens |
|---|---|
| Hover over the tray icon | Tooltip shows 5h and 7d usage percentages with reset times |
| Left-click the tray icon | Opens the detail popup with account info and all usage bars |
| Right-click the tray icon | Context menu: open popup, autostart toggle, test event commands, restart, GitHub link, or quit |
| Escape or click outside | Closes the detail popup |
Windows may hide new tray icons by default. To keep the icon always visible:
Each bar in the detail popup has up to four visual elements:
All settings work out of the box - no configuration file is needed. To customize behavior, create a file called usage-monitor-settings.json with only the keys you want to change:
{
"poll_interval": 180,
"bar_fg": "#00cc66",
"bar_fg_warn": "#ff6600"
}
The app searches for this file in two locations (first match wins):
~/.claude/usage-monitor-settings.json (or $CLAUDE_CONFIG_DIR/usage-monitor-settings.json if set)The app never creates or modifies this file. See Configuration for all available settings (alert thresholds, polling intervals, colors, language, and more).
For developers who want to build the EXE themselves
git clone https://github.com/jens-duttke/usage-monitor-for-claude.git
cd usage-monitor-for-claude
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python -m usage_monitor_for_claude
python build.py
Produces dist/UsageMonitorForClaude.exe (~12.5 MB), a single-file executable that bundles Python and all dependencies.
The popup UI lives in usage_monitor_for_claude/popup/ as separate HTML, CSS, and JS files. To preview and iterate on the UI without running the full app:
start http://localhost:8080/usage_monitor_for_claude/popup/dev.html && python -m http.server 8080
This starts a local server and opens the dev preview in your default browser. Use the buttons to switch between data presets (full, minimal, error, loading) and the language dropdown to preview every locale (so you can spot strings that overflow the popup width). Test CSS/JS changes with instant feedback.
pip install --upgrade -r requirements.txt__version__ in usage_monitor_for_claude/__init__.py and the version in version_info.py (filevers, prodvers, FileVersion, ProductVersion)_FALLBACK_USER_AGENT in usage_monitor_for_claude/api.py to the current Claude Code versionCHANGELOG.md, rename ## [Unreleased] to ## [1.x.x] - YYYY-MM-DD and add a fresh empty ## [Unreleased] section above itpython -m unittest discover -s testspython -m usage_monitor_for_claude - verify tray icon, popup, and settingspython build.pydist\UsageMonitorForClaude.exe - verify tray icon, popup, and settingsgit commit -m "Release v1.x.x"
git tag v1.x.x
git push origin main v1.x.x
gh release create v1.x.x dist/UsageMonitorForClaude.exe --title "v1.x.x" --notes ""
Contributions are welcome - whether it's bug reports, feature ideas, or pull requests. Open an issue to report bugs or ask questions. For feature ideas, browse and vote on existing proposals or submit your own in Ideas.
For developers who want to contribute to the project
This project is developed with Claude Code. The .claude/CLAUDE.md file contains all project conventions, coding standards, and architectural guidelines - Claude Code applies these automatically during development.
.claude/CLAUDE.md to understand the project conventions/review slash command to perform a systematic quality review of all staged changes (code, tests, documentation)/commit-message to generate a properly formatted commit messageNew features should follow the existing architecture. Key points from the guidelines:
api.pyCHANGELOG.md, README.md, and docs/configuration.md where applicablepython -m unittest discover -s tests before committingMIT
This is an independent, community-built project. It is not created, endorsed, or officially supported by Anthropic. "Claude" and "Anthropic" are trademarks of Anthropic, PBC. Use of these names is solely for descriptive purposes to indicate compatibility.