sonoscli
spinabot/brigade/skills/sonoscli/SKILL.md
Control Sonos speakers (discover/status/play/volume/group).
Skill11k starsChanged 4 months ago
What's in it
- Sonos CLI
- Quick start
- Common tasks
- Notes
- Troubleshooting
- sonos discover - no route to host
- sonos discover - bind: operation not permitted
---
name: sonoscli
description: Control Sonos speakers (discover/status/play/volume/group).
homepage: https://sonoscli.sh
metadata:
{
"brigade":
{
"emoji": "🔊",
"requires": { "bins": ["sonos"] },
"install":
[
{
"id": "go",
"kind": "go",
"module": "github.com/steipete/sonoscli/cmd/sonos@latest",
"bins": ["sonos"],
"label": "Install sonoscli (go)",
},
],
},
}
---
# Sonos CLI
Use `sonos` to control Sonos speakers on the local network.
## Quick start
- `sonos discover`
- `sonos status --name "Kitchen"`
- `sonos play|pause|stop --name "Kitchen"`
- `sonos volume set 15 --name "Kitchen"`
## Common tasks
- Grouping: `sonos group status|join|unjoin|party|solo`
- Favorites: `sonos favorites list|open`
- Queue: `sonos queue list|play|clear`
- Spotify search (via SMAPI): `sonos smapi search --service "Spotify" --category tracks "query"`
## Notes
- If SSDP fails, specify `--ip <speaker-ip>`.
- Spotify Web API search is optional and requires `SPOTIFY_CLIENT_ID/SECRET`.
- If there is an error, check the troubleshooting section and offer advice if there is a decent match.
## Troubleshooting
### `sonos discover` - `no route to host`
- On error `Error: write udp4 0.0.0.0:64326->239.255.255.250:1900: sendto: no route to host (Command exited with code 1)`
- Note that the port number after `0.0.0.0:` is ephemeral and will change and the netmask may not match exactly either
- The `sendto: no route to host` should stay consistent
- Advise the user that in `direct` (no Docker sandbox) mode on Mac OS that Settings -> Privacy & Security -> Local Network will need to be enabled for the top-level host parent process of the Gateway
- `node` if running via `launchd`
- `Terminal` if running the gateway directly in the terminal
- `Visual Studio Code` if running via terminal in VS Code
- An alternative option is to use `sandbox` (docker container) with network access allowed for that sandbox
### `sonos discover` - `bind: operation not permitted`
- On error `Error: listen udp4 0.0.0.0:0: bind: operation not permitted`
- Advise the user that they may be running via a the agent or other sandbox that does not permit network access (this can be replicated by running `sonos discover` within a the agent CLI session with sandbox enabled and not approving the escalation request)
More agent context in spinabot/brigade
60 other files this repository gives its agents.
AGENTS.md
Skill
- 1passwordskills/1password/SKILL.md
- apple-notesskills/apple-notes/SKILL.md
- apple-remindersskills/apple-reminders/SKILL.md
- bear-notesskills/bear-notes/SKILL.md
- blogwatcherskills/blogwatcher/SKILL.md
- blucliskills/blucli/SKILL.md
- bluebubblesskills/bluebubbles/SKILL.md
- camsnapskills/camsnap/SKILL.md
- canvasskills/canvas/SKILL.md
- coding-agentskills/coding-agent/SKILL.md
- discordskills/discord/SKILL.md
- docxskills/docx/SKILL.md
- eightctlskills/eightctl/SKILL.md
- geminiskills/gemini/SKILL.md
- gh-issuesskills/gh-issues/SKILL.md
- gifgrepskills/gifgrep/SKILL.md
- git-commitskills/git-commit/SKILL.md
- githubskills/github/SKILL.md
- gogskills/gog/SKILL.md
- goplacesskills/goplaces/SKILL.md
- healthcheckskills/healthcheck/SKILL.md
- himalayaskills/himalaya/SKILL.md
- hyperframesskills/hyperframes/SKILL.md
- imsgskills/imsg/SKILL.md
- lead-scoutskills/lead-scout/SKILL.md
- mcporterskills/mcporter/SKILL.md
- model-usageskills/model-usage/SKILL.md
- nano-pdfskills/nano-pdf/SKILL.md
- node-connectskills/node-connect/SKILL.md
- notionskills/notion/SKILL.md
- oauth-setupskills/oauth-setup/SKILL.md
- obsidianskills/obsidian/SKILL.md
- openai-whisper-apiskills/openai-whisper-api/SKILL.md
- openai-whisperskills/openai-whisper/SKILL.md
- openhueskills/openhue/SKILL.md
- oracleskills/oracle/SKILL.md
- ordercliskills/ordercli/SKILL.md
- pdfskills/pdf/SKILL.md
- peekabooskills/peekaboo/SKILL.md
- sagskills/sag/SKILL.md
- session-logsskills/session-logs/SKILL.md
- share-skillsskills/share-skills/SKILL.md
- sherpa-onnx-ttsskills/sherpa-onnx-tts/SKILL.md
- skill-creatorskills/skill-creator/SKILL.md
- slackskills/slack/SKILL.md
- songseeskills/songsee/SKILL.md
- spotify-playerskills/spotify-player/SKILL.md
- summarizeskills/summarize/SKILL.md
- taskflow-inbox-triageskills/taskflow-inbox-triage/SKILL.md
- taskflowskills/taskflow/SKILL.md
- things-macskills/things-mac/SKILL.md
- tmuxskills/tmux/SKILL.md
- trelloskills/trello/SKILL.md
- video-framesskills/video-frames/SKILL.md
- voice-callskills/voice-call/SKILL.md
- wacliskills/wacli/SKILL.md
- weatherskills/weather/SKILL.md
- xlsxskills/xlsx/SKILL.md
- xurlskills/xurl/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

