peon-ping-config
Update peon-ping configuration settings.
Config location
The config file is at ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hooks/peon-ping/config.json.
Available settings
- volume (number, 0.0–1.0): Sound volume
- active_pack (string): Current sound pack name (e.g.
"peon","sc_kerrigan","glados") - enabled (boolean): Master on/off switch
- pack_rotation (array of strings): List of packs to rotate through per session. Empty
[]usesactive_packonly. - pack_rotation_mode (string):
"random"(default) picks a random pack each session."round-robin"cycles through in order."agentskill"uses explicit per-session assignments from/peon-ping-use; invalid or missing packs fall back toactive_packand the stale assignment is removed. - categories (object): Toggle individual CESP sound categories:
session.start,task.acknowledge,task.complete,task.error,input.required,resource.limit,user.spam— each a boolean
- annoyed_threshold (number): How many rapid prompts trigger user.spam sounds
- annoyed_window_seconds (number): Time window for the annoyed threshold
- silent_window_seconds (number): Suppress task.complete sounds for tasks shorter than this many seconds
- session_ttl_days (number, default: 7): Expire stale per-session pack assignments older than N days (when using agentskill mode)
- desktop_notifications (boolean): Toggle notification popups independently from sounds (default:
true) - use_sound_effects_device (boolean): Route audio through macOS Sound Effects device (
true) or default output via afplay (false). Only affects macOS. Default:true
How to update
- Read the config file using the Read tool
- Edit the relevant field(s) using the Edit tool
- Confirm the change to the user
Common Configuration Examples
Disable desktop notification popups but keep sounds
User request: "Disable desktop notifications"
Action:
Set desktop_notifications: false in config
Result:
- ✅ Sounds continue playing (voice reminders)
- ❌ Desktop notification popups suppressed
- ✅ Mobile notifications unaffected (separate toggle)
Alternative CLI command:
peon notifications off
# or
peon popups off
Adjust volume
User request: "Set volume to 30%"
Action:
Set volume: 0.3 in config
Enable round-robin pack rotation
User request: "Enable round-robin pack rotation with peon and glados"
Action: Set:
{
"pack_rotation": ["peon", "glados"],
"pack_rotation_mode": "round-robin"
}
Directory pack bindings
Permanently associate a sound pack with a working directory so every session in that directory uses the right pack automatically. Uses the path_rules config key (array of { "pattern": "<glob>", "pack": "<name>" } objects).
CLI commands
# Bind a pack to the current directory
peon packs bind <pack>
# e.g. peon packs bind glados
# → bound glados to /Users/dan/Frontend
# Bind with a custom glob pattern (matches any dir with that name)
peon packs bind <pack> --pattern "*/Frontend/*"
# Auto-download a missing pack and bind it
peon packs bind <pack> --install
# Remove binding for the current directory
peon packs unbind
# Remove a specific pattern binding
peon packs unbind --pattern "*/Frontend/*"
# List all bindings (* marks rules matching current directory)
peon packs bindings
Manual config
The path_rules array in config.json can also be edited directly:
{
"path_rules": [
{ "pattern": "/Users/dan/Frontend/*", "pack": "glados" },
{ "pattern": "*/backend/*", "pack": "sc_kerrigan" }
]
}
Patterns use Python fnmatch glob syntax. First matching rule wins. Path rules override default_pack and pack_rotation but are overridden by session_override (agentskill) assignments.
List available packs
To show available packs, run:
bash "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/peon.sh packs list