A lightweight, native macOS menu bar app that shows your claude.ai usage limits at a glance — your 5-hour session window and your 7-day weekly window — without leaving the menu bar.
Two small Swift binaries compiled with swiftc — no Electron, no Python, no third-party runtime, only Apple frameworks.
Important
Unofficial. This is a community project, not affiliated with or endorsed by Anthropic. It reads the same private endpoint the claude.ai usage page uses, authenticated with your own session cookie. Use at your own discretion.
- ✳️ A spark icon in the menu bar showing your current session usage % once a cookie is set.
- 🎨 The menu bar icon and percentage adapt to the menu bar background (white on a dark bar, black on a light one) and are never tinted by usage level.
- 📊 A click-to-open popover with three sections:
- Current Session — 5-hour window, with a progress bar and reset time.
- All Models — 7-day weekly window, with a progress bar and reset time.
- Daily Routines — session resets so far today and time until the next reset.
- 🟡🔴 In the popover, the percentage and progress bars are color-coded: green below 80%, yellow at 80%, red at 90%.
- ⌨️ Global hotkey ⌘U toggles the popover from anywhere.
- 🔄 Refreshes automatically every 5 minutes, when you open the popover, and via the Refresh button.
- 🔐 Your cookie is stored only in the macOS Keychain — never in a file or
UserDefaults. - 🚀 Appears when the Claude desktop app launches and quits when you quit Claude (you can also open or quit it manually).
- 🗑️ Built-in uninstaller (Settings → Uninstall app).
Everything below ships with macOS or is a one-line install — no Homebrew or extra packages required.
| Requirement | Notes |
|---|---|
| macOS 12 Monterey or later | Apple Silicon or Intel. |
| Xcode Command Line Tools | Provides swiftc to compile the app. Install with xcode-select --install. |
| A claude.ai account | Free, Pro, or Max. You paste your session cookie once (see below). |
openssl + security |
Both ship with macOS. The installer uses them to create a local self-signed certificate so the app has a stable identity and the Keychain stops re-prompting. |
| (optional) Claude desktop app | If installed, the menu bar app appears when you open Claude and quits when you quit it. Not required — you can launch it manually. |
git clone https://github.com/tmatteozzi/claude-usage-bar.git
cd claude-usage-bar/app
./install.shinstall.sh does everything in one run:
- Compiles
ClaudeUsageBar.appand theClaudeLauncherhelper withswiftc(deployment target macOS 12). - Creates a local self-signed code-signing certificate (
ClaudeUsageBar Self-Signed) if one doesn't exist yet, and signs both binaries with it. - Copies both to
~/Applications/. - Writes the LaunchAgent to
~/Library/LaunchAgents/and loads it.
After it finishes, open the Claude desktop app (or launch ~/Applications/ClaudeUsageBar.app directly) and the spark appears in your menu bar within a few seconds.
The app reads https://claude.ai/api/organizations/{org}/usage using your session cookie (the organization id is resolved automatically from the cookie, falling back to GET /api/organizations). The response is utilization percentages and reset times — claude.ai does not expose raw token counts here. To provide the cookie:
- Open claude.ai/settings/usage in your browser.
- Open DevTools (
⌘⌥I) → the Network tab → reload the page. - Filter by
usageand click that request. - Under Request Headers, copy the full value of the
Cookieheader. - In the app: left-click the spark → Configure Cookie… → Paste → Save.
The cookie is stored only in your macOS Keychain. It must include sessionKey (and usually lastActiveOrg). Cookies expire periodically — when usage stops updating, paste a fresh one the same way.
| Action | Result |
|---|---|
| Left-click the icon | Open the usage popover |
| Right-click (or control-click) the icon | Menu: View usage / Quit |
| ⌘U | Toggle the popover from any app |
| Popover → Refresh | Fetch fresh data now |
| Popover → Settings | Reconfigure Cookie… or Uninstall app |
.
├── README.md
├── LICENSE
├── .gitignore
├── app/
│ ├── ClaudeUsageBar.swift Main app: status item, popover (SwiftUI), usage fetch,
│ │ Keychain, ⌘U hotkey (Carbon)
│ ├── ClaudeLauncher.swift Background agent: launches the menu bar app when the
│ │ Claude desktop app starts
│ ├── Info.plist App bundle metadata (LSUIElement = menu-bar-only)
│ ├── SparkIcon.svg Source icon
│ ├── SparkIcon.pdf Vector icon bundled into the app (tints to the menu bar color)
│ ├── build.sh Compiles + signs both binaries into app/build/
│ └── install.sh build.sh + install to ~/Applications + LaunchAgent
└── LaunchAgents/
└── com.claudeusagebar.launcher.plist RunAtLoad + KeepAlive launcher agent
At login, only the silent launcher runs (no icon). When the Claude desktop app launches, the launcher starts the menu bar app; when you quit Claude, the menu bar app quits too.
- Your cookie lives only in the macOS Keychain, under a generic-password item. It is never written to disk,
UserDefaults, logs, or anywhere else. - The app talks only to
claude.ai, sending your cookie exactly as your browser would, to read your own usage. No analytics, no telemetry, no other network calls. - The self-signed certificate the installer creates is local to your machine and is used only to give the app a stable identity so the Keychain stops re-prompting. The uninstaller removes it.
Pull the latest code and re-run the installer — it reuses the existing certificate, so there are no new Keychain prompts:
git pull
cd app && ./install.shFrom the app: left-click the spark → Settings → Uninstall app. This removes the app, the launcher, the LaunchAgent, the stored cookie, and the signing certificate.
To do it manually:
launchctl unload ~/Library/LaunchAgents/com.claudeusagebar.launcher.plist
rm ~/Library/LaunchAgents/com.claudeusagebar.launcher.plist
rm -rf ~/Applications/ClaudeUsageBar.app ~/Applications/ClaudeLauncher
security delete-generic-password -s com.claudeusagebar.cookie -a claude-session-cookie
security delete-identity -c "ClaudeUsageBar Self-Signed"- The icon shows no percentage / "No usage data". Your cookie is missing or expired. Re-paste it (Configure Cookie…). When the cookie is rejected the popover shows an
Unauthorized (HTTP 401/403)hint. swiftc: command not found. Install the Xcode Command Line Tools:xcode-select --install.- The build fails creating the signing certificate. Make sure your login Keychain is unlocked, then re-run
./install.sh. The installer signs the binaries with that certificate. - No menu bar icon after install. Open the Claude desktop app (the launcher waits for it), or launch
~/Applications/ClaudeUsageBar.appdirectly. The launcher logs to/tmp/com.claudeusagebar.launcher.err.log.
- Uses the private claude.ai usage endpoint (the one the website itself calls). It is not an official, documented API and may change without notice.
- The endpoint reports utilization percentages and reset times, not raw token counts — so the UI shows percentages.
Released under the MIT License — see LICENSE.
Claude, Anthropic, and the Claude logo are trademarks of Anthropic. This project is independent and unofficial.