Skip to content

ksterx/MenubarCC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MenubarCC

MenubarCC

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.

Latest release Downloads macOS Apple Silicon License: MIT

MenubarCC menu open in the macOS menu bar

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.

The four states

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.

Clawd cycling through Active, Waiting, Stuck and Idle

Active

Waiting
Clawd walks while Claude is working. Clawd bounces when Claude has finished and is waiting for your input.

Stuck

Idle
Clawd pulses when a session has been busy with no updates past your threshold. Clawd sits still when there's nothing to report.

Features

  • πŸ¦€ 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.

Install

Homebrew (recommended)

brew tap ksterx/tap
brew install --cask menubarcc

Recent Homebrew versions ask you to trust third-party taps first β€” if prompted, run brew trust ksterx/tap and install again.

Manual

  1. Download the latest MenubarCC-x.y.z.dmg from the Releases page.
  2. 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.

Requirements

  • macOS 13 (Ventura) or later
  • Apple Silicon (arm64)
  • Claude Code installed

How it works

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"])
Loading
  • Session status comes from the ~/.claude/sessions/<id>.json files 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>.waiting flag so Clawd can bounce while Claude waits for you β€” it's set on Stop and cleared when you reply or the session ends.
    • Plays a sound on Stop, Notification, and PermissionRequest events, according to your settings.
  • 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.

The menu

Click Clawd to open the menu.

MenubarCC 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.

Advanced Settings

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.

Updating

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.)

Build from source

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.

Project layout

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.

Privacy

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.

Uninstall

  1. Advanced Settings β†’ Uninstall Hook from Claude Code (removes its entries from settings.json and deletes the installed hook script).
  2. Quit MenubarCC and drag it from Applications to the Trash.
  3. Optionally remove ~/Library/Application Support/com.ksterx.MenubarCC/.

License

MIT Β© 2026 ksterx

Not affiliated with Anthropic. Claude and Claude Code are products of Anthropic.

About

πŸ¦€ Clawd, a menu bar crab that shows your Claude Code sessions at a glance β€” walking while Claude works, bouncing when it needs you

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors