tonyyont/peon-ping: Warcraft III Peon voice notifications for Claude Code. Stop babysitting your terminal.

Mac OS wsl2
license
cloud code

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 use active_pack instead.

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 afplay and AppleScript) or WSL2 (uses PowerShell MediaPlayer and 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

Leave a Comment