Small quality-of-life improvement to reduce 'no active device' friction for Spotify users.
Problem
Every Spotify playback action (play, pause, skip, queue add, etc.) targets Spotify's current 'active' device. If nothing is active, the call returns 403 Forbidden — No active device found and the user has to open Spotify on some device before retrying.
Users with an always-on device (Sonos, Echo, smart speaker) hit this needlessly often. Their speaker is always online and ready, but Spotify doesn't consider it 'active' unless something's playing or recently played on it.
Proposal
Add spotify.default_device_name to config.yaml (string, default empty).
When set, the Spotify tools resolve the name to a device_id at call time (via spotify_devices list, match on name case-insensitively) and pass it as device_id to any playback action that didn't get one explicitly.
spotify:
default_device_name: "Kitchen Sonos"
Where it plugs in
plugins/spotify/tools.py: before each playback call that accepts device_id, if args.get('device_id') is empty, look up the configured default and substitute.
skills/media/spotify/SKILL.md: update the 'no active device' failure-mode section to mention this as the recommended mitigation.
- Docs: add to
website/docs/user-guide/features/spotify.md under a new 'Default device' subsection.
Why not just always target the last-used device?
Spotify's Web API already does that. The problem is that 'last-used' can be a phone that's now off. An explicit user-configured name sidesteps the ambiguity.
Acceptance
spotify.default_device_name: "Kitchen Sonos" in config.yaml
- User runs
hermes in a fresh tab with nothing playing anywhere
- Agent calls
spotify_playback play with no device_id → tool resolves 'Kitchen Sonos' → music plays there
- If the named device isn't currently online, return a clear error ('configured default device "Kitchen Sonos" is offline — available: ...') rather than silently falling back to Spotify's guess
- Explicit
device_id in the tool call always wins over the config default
Relation to other issues
Unblocks gateway slash commands (/play, /pause, etc.) — see the separate issue on that. Also improves agent UX independently.
Small quality-of-life improvement to reduce 'no active device' friction for Spotify users.
Problem
Every Spotify playback action (play, pause, skip, queue add, etc.) targets Spotify's current 'active' device. If nothing is active, the call returns
403 Forbidden — No active device foundand the user has to open Spotify on some device before retrying.Users with an always-on device (Sonos, Echo, smart speaker) hit this needlessly often. Their speaker is always online and ready, but Spotify doesn't consider it 'active' unless something's playing or recently played on it.
Proposal
Add
spotify.default_device_nametoconfig.yaml(string, default empty).When set, the Spotify tools resolve the name to a
device_idat call time (viaspotify_devices list, match onnamecase-insensitively) and pass it asdevice_idto any playback action that didn't get one explicitly.Where it plugs in
plugins/spotify/tools.py: before each playback call that acceptsdevice_id, ifargs.get('device_id')is empty, look up the configured default and substitute.skills/media/spotify/SKILL.md: update the 'no active device' failure-mode section to mention this as the recommended mitigation.website/docs/user-guide/features/spotify.mdunder a new 'Default device' subsection.Why not just always target the last-used device?
Spotify's Web API already does that. The problem is that 'last-used' can be a phone that's now off. An explicit user-configured name sidesteps the ambiguity.
Acceptance
spotify.default_device_name: "Kitchen Sonos"in config.yamlhermesin a fresh tab with nothing playing anywherespotify_playback playwith nodevice_id→ tool resolves 'Kitchen Sonos' → music plays theredevice_idin the tool call always wins over the config defaultRelation to other issues
Unblocks gateway slash commands (
/play,/pause, etc.) — see the separate issue on that. Also improves agent UX independently.