IPC Protocol
The daemon protocol is length-delimited JSON over a local socket. CLI, TUI, scripts, and MCP bridge through this shape.
Envelope
Section titled “Envelope”{ "id": 1, "payload": { "type": "Request", "cmd": "playback-get" }}Core requests
Section titled “Core requests”spotuify status --format jsonspotuify devices --format jsonspotuify search "quiet storm" --format jsonspotuify queue --format jsonRepresentative request variants:
| Request | CLI surface |
|---|---|
PlaybackGet | spotuify status |
PlaybackCommand | pause, resume, toggle, next, previous, seek, volume, shuffle, repeat |
DevicesList | spotuify devices |
DeviceTransfer | spotuify transfer |
Search | spotuify search |
QueueGet | spotuify queue |
QueueAdd | spotuify queue add |
PlaylistsList | spotuify playlists |
PlaylistTracks | spotuify playlist tracks |
PlaylistAddItems | spotuify playlist add |
LibrarySave | spotuify like, spotuify save |
LyricsGet | spotuify lyrics show |
SetVizEnabled | spotuify viz enable/disable |
Admin requests
Section titled “Admin requests”spotuify daemon status --format jsonspotuify doctor --format jsonspotuify cache status --format jsonspotuify reindex --format jsonRepresentative request variants:
| Request | CLI surface |
|---|---|
GetDaemonStatus | spotuify daemon status |
GetDoctorReport | spotuify doctor |
Reindex | spotuify reindex |
CacheStatus | spotuify cache status |
Sync | spotuify sync |
LogsTail | spotuify logs tail |
Reload | spotuify reload |
Reconnect | spotuify reconnect |
Response shape
Section titled “Response shape”{ "Ok": { "data": { "kind": "Playback", "playback": {} } }}Errors are typed:
{ "Error": { "message": "no active device", "kind": "provider", "code": "provider", "retryable": false }}Error kinds:
authinvalid_requestnetworkproviderrate_limitedunsupportedinternalEvents
Section titled “Events”The daemon broadcasts state changes so clients do not have to poll forever.
playback-changedqueue-changeddevices-changedplaylists-changedlibrary-changedsearch-updatedsync-startedsync-finishedmutation-finishedrate-limitedspectrum-frame