| name | sonos |
| description | Control Sonos speakers via CLI. Discover devices, play/pause, adjust volume, group/ungroup speakers, browse favorites, and check status of all rooms. Use when user mentions Sonos, wants room-specific audio control, or says "play in kitchen", "group all speakers", "pause living room".
|
| allowed-tools | ["Bash","Read","Write"] |
| model | haiku |
| user-invocable | true |
| when_to_use | When user wants to control Sonos speakers: play/pause/volume in specific rooms, group or ungroup speakers, discover what's playing where, or manage multi-room audio. Triggers on: Sonos, speaker control, room audio, group speakers, play in [room].
|
| argument-hint | <discover|status|play|pause|volume|group|favorite> [room] [args] |
Sonos Control
Control Sonos speakers on your local network.
Prerequisites
Install sonos CLI:
brew install sonoscli
Or install the Python soco based tool:
pip install soco-cli
The speaker must be on the same local network as your machine. No account login required — uses local network discovery.
Commands
Discovery
sonos discover
sonos list
Playback
sonos [room] play
sonos [room] pause
sonos [room] next
sonos [room] previous
sonos [room] status
Volume
sonos [room] volume
sonos [room] volume 40
sonos [room] volume +10
sonos [room] volume -5
sonos [room] mute
Groups
sonos [room1] join [room2]
sonos [room] unjoin
sonos [room] group
Favorites / Playlists
sonos [room] favorites
sonos [room] play_favorite "Name"
sonos [room] playlist list
Usage Examples
"Discover Sonos speakers"
sonos discover
"Pause the kitchen"
sonos Kitchen pause
"Set living room volume to 50"
sonos "Living Room" volume 50
"Group all speakers"
sonos discover
"What's playing everywhere?"
sonos list
Rules
- Check if CLI is installed first:
which sonos
- If not installed, show brew install command and stop
- Room names are case-sensitive and may contain spaces — use quotes around multi-word room names
- If discovery finds no speakers, tell user to check that speakers are on the same WiFi network
- For relative volume changes, confirm the final value in your response
- Keep responses concise: room name + state + track info on one line