Your peon pings you when cloud code needs attention.
Cloud does not notify you when code expires or requires permissions. You get carried away by the tab, lose focus and waste 15 minutes getting back into the flow. Peon-Ping fixes this with the voice lines of the Warcraft III Peon – so you never miss a beat, and your terminal sounds like Orgrimmar.
try it out → peon-ping.vercel.app
curl -fsSL https://raw.githubusercontent.com/tonyyont/peon-ping/main/install.sh | bash
an order. It takes 10 seconds. macOS and WSL2 (Windows). Rerun to update (sounds and configuration preserved).
| events | sound | Example |
|---|---|---|
| session start | Greetings | “Ready for work?”, “Yes?”, “What do you want?” |
| abort mission | Acknowledgment | “Work, work.”, “I can do that.”, “Oki Doki.” |
| Authorization Required | alert | “Something needs to be done?”, “Hmm?”, “What do you want?” |
| acute signal (3+ in 10 seconds) | Easter Egg | “I’m busy, leave me alone!” |
plus terminal tab title (● project: done) and desktop notifications when your terminal is not focused.
Need to mute sounds and notifications during a meeting or pairing session? two options:
| Method | Permission | When? |
|---|---|---|
| slash command | /peon-ping-toggle |
working in cloud code |
| CLI | peon --toggle |
from any terminal tab |
Other CLI commands:
peon --pause # Mute sounds
peon --resume # Unmute sounds
peon --status # Check if paused or active
peon --packs # List available sound packs
peon --pack <name> # Switch to a specific pack
peon --pack # Cycle to the next pack
Tab completion is supported – type peon --pack To view available pack names.
Pausing immediately mutes sounds and desktop notifications. This persists across all sessions until you restart. Tab titles remain active when paused.
edit ~/.claude/hooks/peon-ping/config.json: :
{
"volume": 0.5,
"categories": {
"greeting": true,
"acknowledge": true,
"complete": true,
"error": true,
"permission": true,
"annoyed": true
}
}
- volume:0.0-1.0 (cool enough for office)
- categories: Toggle different sound types on/off
- angry_threshold / angry_window_seconds: how many signals trigger the easter egg in n seconds
- pack_rotation: series of pack names (e.g.
["peon", "sc_kerrigan", "peasant"]). Each Cloud Code session randomly receives a pack from the list and keeps it for the entire session. leave blank[]to useactive_packinstead.
| pack | Character | sound | By |
|---|---|---|---|
peon (default) |
Ork Peon (Warcraft III) | “Ready to work?”, “Work, work.”, “Oki Doki.” | @tonyyont |
peon_fr |
Ork Peon (Warcraft III, French) | “Traveller’s journey?”, “Traveller, traveller.”, “D’Accord.” | @thomasKn |
peon_pl |
Ork Peon (Warcraft III, Polish) | Polish vowel lines | @askowronski |
peasant |
Human Farmer (Warcraft III) | “Yes, milord?”, “Done!”, “Ready, sir.” | @thomasKn |
peasant_fr |
Human Peasant (Warcraft III, French) | “Oui, monsieur?”, “It’s true!”, “Pret, monsieur.” | @thomasKn |
ra2_soviet_engineer |
Soviet Engineer (Red Alert 2) | “Equipment ready”, “Yes, Commander”, “Engineering” | @masukkari |
sc_battlecruiser |
Battlecruiser (Starcraft) | “Battlecruiser Operational”, “Make It Happen”, “Engage” | @garrysheng |
sc_kerrigan |
Sarah Kerrigan (StarCraft) | “I see”, “Now what?”, “Easy to entertain, isn’t it?” | @garrysheng |
Switch packs from CLI:
peon --pack ra2_soviet_engineer # switch to a specific pack
peon --pack # cycle to the next pack
peon --packs # list all packs
or edit ~/.claude/hooks/peon-ping/config.json directly:
{ "active_pack": "ra2_soviet_engineer" }
Want to add your own pack? See CONTRIBUTING.md.
bash ~/.claude/hooks/peon-ping/uninstall.sh
- macOS (uses
afplayand AppleScript) or WSL2 (uses PowerShellMediaPlayerand WinForms) - Cloud Code with Hooks Support
- Python3
peon.sh Registered for a cloud code hook SessionStart, UserPromptSubmit, StopAnd Notification Events. On each occurrence it maps a sound range, picks a random voice line (avoiding repetitions), plays it. afplay (macOS) or powershell MediaPlayer (WSL2), and updates your terminal tab title.
The sound files are the property of their respective publishers (Blizzard Entertainment, EA) and are included in the repo for convenience.
<a href