Meet Clawd β a tiny crab who lives in your macOS menu bar and shows you, at a glance, what every Claude Code session is doing.
When you run several Claude Code sessions at once, it's hard to keep track of which one is busy, which is waiting for your reply, and which has quietly gotten stuck. MenubarCC puts all of that in your menu bar β Clawd's animation tells you the state of your work, plus a sound when a session finishes or needs you.
No window to manage, no Dock icon β just Clawd, who always knows what's going on.
Clawd animates to match what your sessions are doing. When sessions are in different states at once, the most urgent one wins β Waiting βΈ Stuck βΈ Active βΈ Idle β because the only one you can unblock is a session waiting on your reply.
- π¦ Live session status in the menu bar β Clawd summarizes every running Claude Code session in a single animated icon.
- π Session list β click Clawd for every session grouped into Stuck / Active / Waiting / Idle, each with its project folder and how long it's been in that state.
- π Notification sounds β a chime when Claude finishes a response, posts a notification, or asks for permission. Pick your own sound per event, or mute everything from a single switch.
- β±οΈ Stuck detection β get a native notification when a session has been busy with no progress past a threshold you choose (5β60 min, or off).
- π Launch at Login β start automatically with macOS.
- β¬οΈ In-app updates β check for, download, and install new versions without touching a DMG again.
- π Local & private β reads your local Claude Code session files only; the single network call is the update check to GitHub.
- β Signed & notarized β distributed with a Developer ID signature and Apple notarization, so it opens without Gatekeeper warnings.
brew tap ksterx/tap
brew install --cask menubarccRecent Homebrew versions ask you to trust third-party taps first β if prompted, run
brew trust ksterx/tapand install again.
- Download the latest
MenubarCC-x.y.z.dmgfrom the Releases page. - Open the DMG and drag MenubarCC into Applications.
Either way, launch MenubarCC from Applications and Clawd appears in your menu bar. On first run, MenubarCC offers to install a small hook into Claude Code (see How it works). Click Install Hook β you can also do this later from Advanced Settings.
The app is signed with a Developer ID and notarized by Apple, so it launches without the "could not verify it is free of malware" prompt.
- macOS 13 (Ventura) or later
- Apple Silicon (arm64)
- Claude Code installed
MenubarCC never talks to Claude Code directly. It watches the status files Claude Code already writes, plus a tiny hook bridge it installs into your Claude Code settings.
flowchart LR
CC["Claude Code session"]
CC -->|writes status| SJSON["sessions/ID.json<br/>busy / idle"]
CC -->|"Stop / UserPromptSubmit / SessionEnd"| HOOK["menubarcc_hook.py"]
HOOK -->|touch / remove| FLAG["ID.waiting flag"]
HOOK -->|"Stop / Notification / PermissionRequest"| SOUND(["play a sound"])
SJSON --> APP["MenubarCC polls every 10s"]
FLAG --> APP
APP --> BAR(["Clawd"])
- Session status comes from the
~/.claude/sessions/<id>.jsonfiles Claude Code maintains (busy/idle, plus the working directory and last-update time). - The hook bridge (
menubarcc_hook.py, installed into~/.claude/settings.json) does two things:- Maintains a
<id>.waitingflag so Clawd can bounce while Claude waits for you β it's set onStopand cleared when you reply or the session ends. - Plays a sound on
Stop,Notification, andPermissionRequestevents, according to your settings.
- Maintains a
- MenubarCC combines those signals every 10 seconds to decide Clawd's animation and rebuild the menu.
Installing the hook makes a timestamped backup of settings.json first, and only ever adds or removes its own entries. You can uninstall it cleanly at any time from Advanced Settings.
Click Clawd to open the menu.
- Session sections β
β STUCK,β΅ ACTIVE,βΈ WAITING,Β· IDLE, each listing the project folder and how long it's been there. Empty sections are hidden. - Notifications β a master switch to mute or unmute all sounds.
- Advanced Settings β everything else (below).
- Check for Updates⦠and Quit.
| Setting | What it does |
|---|---|
| Notification Sounds | Toggle each event (Stop / Notification / Permission Request) on or off, choose a custom sound file for any of them (mp3, wav, m4a, aiff, aac, caf), or reset back to the macOS defaults. |
| Speed | How fast Clawd animates β five presets from Very Slow to Very Fast. |
| Stuck Detection | Turn stuck detection on/off and pick the threshold: 5, 10, 15, 30, or 60 minutes. |
| Launch at Login | Start MenubarCC automatically with macOS. (Requires running from /Applications.) |
| Install / Uninstall Hook | Add or cleanly remove the Claude Code hook bridge. |
Default sounds are the ones already on your Mac β Glass for Stop, Tink for Notification, Funk for Permission Request. Custom sounds you pick are copied into MenubarCC's own storage, so they keep working even if you move the original file.
Choose Check for Updatesβ¦ from the menu. If a newer release exists, MenubarCC downloads it, swaps in the new version, and relaunches itself β no manual DMG dance. (You can always grab a DMG from the Releases page instead.)
The app is a native Swift / AppKit binary for Apple Silicon. All you need is the Xcode Command Line Tools β no Python, no dependencies.
./build.sh 2.0.0
# β dist/MenubarCC.app (compiled, bundled, Developer ID signed)Producing a distributable, notarized DMG involves a few extra macOS-specific steps (notarization, DMG staging). The full, battle-tested release procedure lives in CLAUDE.md.
| File | Role |
|---|---|
Sources/ |
The menu bar app (Swift / AppKit): state detection, Clawd's animation, menu, settings, updates. |
menubarcc_hook.py |
The Claude Code hook bridge: maintains the .waiting flag and plays sounds. |
build.sh |
Build + codesign script. |
MenubarCC runs entirely on your machine. It reads your local Claude Code session files under ~/.claude/, and stores its own preferences under ~/Library/Application Support/com.ksterx.MenubarCC/. The only network request it makes is the update check against this GitHub repository.
- Advanced Settings β Uninstall Hook from Claude Code (removes its entries from
settings.jsonand deletes the installed hook script). - Quit MenubarCC and drag it from Applications to the Trash.
- Optionally remove
~/Library/Application Support/com.ksterx.MenubarCC/.
MIT Β© 2026 ksterx





