Skip to content

Spotify: add spotify.default_device_name config knob #15611

@teknium1

Description

@teknium1

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havearea/configConfig system, migrations, profilestype/featureNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions