packs list
List all installed sound packs.* indicates the currently active pack.
List Registry (All Available Packs)
- Fetches
index.jsonfrom the OpenPeon registry - Shows all packs, not just installed ones
- Falls back to local cache if registry is unreachable
packs install
Install one or more packs from the registry.Install Specific Packs
- Downloads tarball from
og-packsreleases - Extracts to
~/.claude/hooks/peon-ping/packs/<name>/ - Validates
openpeon.jsonmanifest - Skips packs that are already installed (use
--forceto re-download)
Install All Packs
Install from Local Directory
- Directory must contain
openpeon.jsonmanifest - Sounds must be in
sounds/subdirectory - Follows CESP v1.0 spec
packs use
Switch to a specific pack.- Updates
default_packinconfig.json - Takes effect on next session start
- Removes legacy
active_packkey if present
Install and Use in One Step
- Downloads
gladosfrom registry if not installed - Switches to
gladosafter download completes - Useful for trying new packs without separate install step
packs next
Cycle to the next installed pack.- Alphabetically orders installed packs
- Wraps around to first pack after reaching the last
- Ignores
pack_rotationsetting (cycles through ALL installed packs)
glados, peon, peasant (sorted alphabetically):
- Current:
glados→ Next:peasant - Current:
peasant→ Next:peon - Current:
peon→ Next:glados(wraps around)
packs bind
Bind a pack to the current directory or a path pattern.Bind to Current Directory
- Adds a
path_rulesentry toconfig.json: - Exact path match (not recursive)
- Pack automatically switches when you start a session in this directory
Bind to Path Pattern
*— Matches any characters except/*/services— Any directory ending in/services*/work/client-*— Any directory matching/work/client-a,/work/client-b, etc.
- First matching rule wins
- More specific patterns should come first in
path_rulesarray
Install and Bind
glados from registry if not installed, then binds.
packs unbind
Remove the binding for the current directory.- Removes matching entry from
path_rules - Falls back to
default_packfor this directory
packs bindings
List all directory → pack bindings.packs remove
Remove one or more installed packs.- Deletes pack directory from
~/.claude/hooks/peon-ping/packs/ - Cannot remove the currently active pack (switch first)
- Irreversible (re-download with
peon packs installif needed)
packs rotation
Manage the pack rotation list and view rotation settings.list
Show the current rotation mode and pack list.add
Add one or more packs to the rotation list.- Packs are appended to the
pack_rotationarray inconfig.json - Duplicates are automatically removed
- Pack must be installed first (or it will be skipped)
remove
Remove one or more packs from the rotation list.- Removes packs from
pack_rotationarray - Does not uninstall the pack (use
peon packs removefor that) - Rotation mode remains unchanged
Pack Rotation Modes
Packs can be assigned via three strategies (configured inconfig.json):
random (default)
Pick a random pack frompack_rotation array each session.
round-robin
Cycle throughpack_rotation array in order.
peon → Session 2: glados → Session 3: sc_kerrigan → Session 4: peon (wraps)
session_override
Manually assign pack per session using/peon-ping-use <pack> slash command.
.state.json keyed by session ID.
Priority Hierarchy
When multiple pack sources exist, PeonPing uses this priority:- Session override —
/peon-ping-use <pack>(only whenpack_rotation_mode: session_override) - Path rules — Directory bindings from
peon packs bind - Pack rotation — Random/round-robin from
pack_rotationarray - Default pack — Fallback from
default_packconfig key
Examples
Install and Switch to New Pack
Set Up Per-Project Packs
client-a sessions use glados, sideproject sessions use peon.
Rotate Through Multiple Packs
Editconfig.json:
Browse and Install from Registry
Related Commands
peon preview <category>— Test sounds after switching packspeon status— Shows active pack and installed pack countpeon rotation <mode>— Change pack rotation strategy