Native macOS menu bar app showing Claude usage and Claude Code activity at a glance. A clean-room Swift port of the idea behind claude-status-bar-kde, with multi-account support.
- Usage at a glance — 5-hour and 7-day utilization for the active Claude account in the menu bar, color-coded (green / yellow ≥50% / red ≥80%, configurable).
- Multi-account — add accounts natively (Add Account →
claude /login) and switch the active one in-process from the popover, each with its own 5h/7d usage bars. - Claude Code activity — Clawd shows what your sessions are doing right now (thinking, editing, running…), with playful verbs and elapsed timers, driven by Claude Code hooks + file watching (no polling loop).
- Settings — display style, poll interval, thresholds, per-account visibility, launch at login, hook install/remove.
-
Prerequisites
- macOS 14 (Sonoma) or later.
- Claude Code installed, if you want the menu bar to show live session activity (step 4 below). The app also works purely as a usage monitor without it.
- Command Line Tools only if you're building from source — no full Xcode
install needed:
xcode-select --install.
-
Get the app
Download
ClaudeStatusBar.dmgfrom Releases, open it, and dragClaudeStatusBar.appto/Applications.To build from source instead (contributors, or Command-Line-Tools-only setups), see Build from source below, then:
cp -R dist/ClaudeStatusBar.app /Applications/
-
First launch / Gatekeeper
The app is self-signed (not notarized by Apple), so macOS quarantines it and the first launch is refused ("cannot verify" / "damaged") — expected either way you installed it. Right-click the app in Applications and choose Open (twice if needed), or clear the quarantine flag directly:
xattr -d com.apple.quarantine /Applications/ClaudeStatusBar.app
The app lives in the menu bar only (no Dock icon) — look for its icon there after launch.
-
Enable activity tracking
Settings → Claude Code tab → Install. This adds hook entries for
SessionStart,UserPromptSubmit,PreToolUse,PostToolUse,Stop, andNotificationto~/.claude/settings.json(a timestamped backup is written first; running Install again is safe — it replaces its own prior entry rather than duplicating it). Remove deletes exactly what Install added. -
Multi-account usage (optional)
The app manages multiple accounts natively — switching swaps the live
Claude Code-credentialsKeychain item and~/.claude.json'soauthAccountblock itself, with a per-account Keychain-backed vault for the credentials of every account that isn't currently active. To add another account, click Add Account in the popover, complete theclaude /loginflow it opens in a terminal window, and the newly-logged-in account is captured and added as its own row.Each account shows up as its own row in the popover with 5h/7d usage bars; click Switch to make a different account active in-process. If a row shows re-login needed, click Log in — this switches that account live first (so the credentials
claude /loginrenews belong to the right account, not whatever was active before), then opens a terminal window to complete the OAuth flow. -
Verify it works
The menu bar label shows (depending on display style): activity text (e.g. "Editing… · 12s"), the Clawd icon, and your active account's 5-hour usage percentage. Click it to open the popover for per-account usage bars and active Claude Code sessions.
-
Uninstall
Settings → Claude Code tab → Remove, quit the app (menu bar icon → popover → Quit), then delete it:
rm -rf /Applications/ClaudeStatusBar.app
Requires macOS 14+ and Command Line Tools (no Xcode needed).
make build # debug build
make test # unit + integration tests
make app # dist/ClaudeStatusBar.app
make dmg # dist/ClaudeStatusBar.dmgmake app signs the app with a self-signed "ClaudeStatusBar Local Signing"
identity, generating it into your login keychain on first run if it doesn't
already exist (scripts/ensure-signing-identity.sh). Keeping this identity
stable across rebuilds — rather than ad-hoc signing, which re-derives its
identity from the binary's own bytes every build — is what lets macOS
Keychain "Always Allow" grants (e.g. for the live Claude Code-credentials
item) survive rebuilding and reinstalling the app.
- OAuth tokens are read from disk only at request time and sent only to
api.anthropic.com. They are never logged, cached, or written elsewhere. - The app is not sandboxed (it must read
~/.claude). - The app re-asserts its trust on the live
Claude Code-credentialsKeychain item once per launch (skipped once already trusted), so macOS's "Always Allow" grant survives across relaunches instead of re-prompting. - The hook binary always exits 0 and prints nothing, so it can never block or corrupt a Claude Code session.
Contributions are welcome. See CONTRIBUTING.md for the build/test/PR workflow, and CLAUDE.md if you're using Claude Code (or another AI coding agent) to work in this repo.
MIT. Clawd artwork from
clawd-tank (MIT) — see
LICENSE.clawd-tank.


