Sound notifications and tab colors for Claude Code on macOS.
I saw peon-ping, thought "that's a great idea", shamelessly stole the concept, and — out of zero trust in anyone else's code — rebuilt the whole thing from scratch as a native macOS daemon specifically for Claude Code. No Python runtime, no Node dependencies, just a Swift binary talking over a Unix socket.
It plays Warcraft peon sounds (or GLaDOS, or StarCraft, or whatever) when Claude finishes a task, hits an error, needs permission, or when you're spamming prompts too fast. Also colors your terminal tabs so you can tell at a glance which session is doing what.
Compatible with OpenPeon sound packs — 35+ community packs work out of the box.
- macOS 13+
- Xcode Command Line Tools (
xcode-select --install) - Claude Code
One-liner:
bash <(curl -fsSL https://raw.githubusercontent.com/andreaskolltveit/workwork/main/install.sh)Or clone first:
git clone https://github.com/andreaskolltveit/workwork.git ~/.claude/hooks/workwork
cd ~/.claude/hooks/workwork && bash install.shThis builds the daemon, grabs the default peon sound pack, sets up a LaunchAgent, and wires up your Claude Code hooks. Restart Claude Code after install.
workwork <command> from any terminal:
| Command | What it does |
|---|---|
status |
Daemon status |
pause / resume / toggle |
Mute/unmute |
volume [0.0-1.0] |
Get/set volume |
preview [category] |
Play a sound |
preview --list |
List categories |
packs list |
Installed packs |
packs use <name> |
Switch active pack |
packs next |
Cycle to next |
packs install <name> |
Download from registry |
packs remove <name> |
Delete a pack |
packs rotation list |
Rotation list |
packs rotation add <n> |
Add to rotation |
packs rotation remove <n> |
Remove from rotation |
notifications [on|off|overlay|standard] |
Notification style |
rotation [random|round-robin|session_override|agentskill] |
Rotation mode |
ping |
Health check |
help |
All commands |
Browse what's available:
workwork packs install --list-registryInstall by name:
workwork packs install glados
workwork packs install sc_kerrigan,sc_battlecruiserGo wild:
workwork packs install --allToggle any of these in config.json:
| Category | When |
|---|---|
session.start |
New session |
task.complete |
Agent done |
task.error |
Something broke |
task.acknowledge |
Agent starts working |
input.required |
Waiting for you |
resource.limit |
Context compaction |
user.spam |
You're clicking too fast |
Your terminal tabs change color based on state:
| State | Color |
|---|---|
| Working | Amber |
| Idle | Green |
| Needs approval | Red |
| Done | Blue |
Customize RGB values in config.json under tab_color.colors.
~/.claude/hooks/workwork/config.json:
{
"volume": 0.5,
"default_pack": "peon",
"desktop_notifications": true,
"notification_style": "overlay"
}All options documented in config.default.json.
bash ~/.claude/hooks/workwork/uninstall.sh- Claude Code fires hook events (SessionStart, Stop, Notification, etc.)
workwork.shrelays event JSON to the daemon over a Unix socket- Daemon picks a sound from the active pack and plays it
- Tab title/color escape sequences get written back to your terminal
- Optional overlay notification pops up on screen
MIT