# Rockbox Zig ## Docs - [GraphQL](https://rockboxzig.mintlify.app/api-reference/graphql/overview.md): Single endpoint with queries, mutations and real-time subscriptions on port 6062. - [gRPC](https://rockboxzig.mintlify.app/api-reference/grpc/overview.md): Strongly-typed gRPC and gRPC-Web on port 6061. - [API overview](https://rockboxzig.mintlify.app/api-reference/introduction.md): Four protocols, one source of truth — pick whichever fits your client. - [MPD protocol](https://rockboxzig.mintlify.app/api-reference/mpd/overview.md): Drop-in MPD server on port 6600 — works with every MPD client. - [Get an album by id](https://rockboxzig.mintlify.app/api-reference/rest/albums/get-an-album-by-id.md) - [List all albums](https://rockboxzig.mintlify.app/api-reference/rest/albums/list-all-albums.md) - [List tracks in an album](https://rockboxzig.mintlify.app/api-reference/rest/albums/list-tracks-in-an-album.md) - [Get an artist by id](https://rockboxzig.mintlify.app/api-reference/rest/artists/get-an-artist-by-id.md) - [List albums by an artist](https://rockboxzig.mintlify.app/api-reference/rest/artists/list-albums-by-an-artist.md) - [List all artists](https://rockboxzig.mintlify.app/api-reference/rest/artists/list-all-artists.md) - [List tracks by an artist](https://rockboxzig.mintlify.app/api-reference/rest/artists/list-tracks-by-an-artist.md) - [Connect to a paired Bluetooth device (Linux only)](https://rockboxzig.mintlify.app/api-reference/rest/bluetooth/connect-to-a-paired-bluetooth-device-linux-only.md) - [Disconnect a Bluetooth device (Linux only)](https://rockboxzig.mintlify.app/api-reference/rest/bluetooth/disconnect-a-bluetooth-device-linux-only.md) - [List paired Bluetooth devices (Linux only)](https://rockboxzig.mintlify.app/api-reference/rest/bluetooth/list-paired-bluetooth-devices-linux-only.md) - [Scan for Bluetooth devices (Linux only)](https://rockboxzig.mintlify.app/api-reference/rest/bluetooth/scan-for-bluetooth-devices-linux-only.md) - [Browse the filesystem under music_dir](https://rockboxzig.mintlify.app/api-reference/rest/browse/browse-the-filesystem-under-music_dir.md) - [Disconnect the active device and revert to builtin](https://rockboxzig.mintlify.app/api-reference/rest/devices/disconnect-the-active-device-and-revert-to-builtin.md) - [Get a device by id (use 'current' for the active sink)](https://rockboxzig.mintlify.app/api-reference/rest/devices/get-a-device-by-id-use-current-for-the-active-sink.md) - [List all known output devices (discovered + virtual)](https://rockboxzig.mintlify.app/api-reference/rest/devices/list-all-known-output-devices-discovered-+-virtual.md) - [Switch the active sink to this device](https://rockboxzig.mintlify.app/api-reference/rest/devices/switch-the-active-sink-to-this-device.md) - [HTTP REST](https://rockboxzig.mintlify.app/api-reference/rest/overview.md): JSON over HTTP on port 6063. The endpoints used internally by the web UI and SDK clients. - [Adjust volume by N firmware-defined steps](https://rockboxzig.mintlify.app/api-reference/rest/player/adjust-volume-by-n-firmware-defined-steps.md) - [Flush PCM buffers and reload the current queue](https://rockboxzig.mintlify.app/api-reference/rest/player/flush-pcm-buffers-and-reload-the-current-queue.md) - [Get current volume range and value](https://rockboxzig.mintlify.app/api-reference/rest/player/get-current-volume-range-and-value.md) - [Get the current byte offset in the playing file](https://rockboxzig.mintlify.app/api-reference/rest/player/get-the-current-byte-offset-in-the-playing-file.md) - [Get the current output device](https://rockboxzig.mintlify.app/api-reference/rest/player/get-the-current-output-device.md) - [Get the currently playing track](https://rockboxzig.mintlify.app/api-reference/rest/player/get-the-currently-playing-track.md) - [Get the next queued track](https://rockboxzig.mintlify.app/api-reference/rest/player/get-the-next-queued-track.md) - [Get the playback status](https://rockboxzig.mintlify.app/api-reference/rest/player/get-the-playback-status.md) - [Hard-stop playback](https://rockboxzig.mintlify.app/api-reference/rest/player/hard-stop-playback.md) - [Load tracks into an external player (Cast/AirPlay)](https://rockboxzig.mintlify.app/api-reference/rest/player/load-tracks-into-an-external-player-castairplay.md) - [Pause playback](https://rockboxzig.mintlify.app/api-reference/rest/player/pause-playback.md) - [Resume playback](https://rockboxzig.mintlify.app/api-reference/rest/player/resume-playback.md) - [Seek to an absolute position (ms)](https://rockboxzig.mintlify.app/api-reference/rest/player/seek-to-an-absolute-position-ms.md) - [Skip to the next track](https://rockboxzig.mintlify.app/api-reference/rest/player/skip-to-the-next-track.md) - [Skip to the previous track](https://rockboxzig.mintlify.app/api-reference/rest/player/skip-to-the-previous-track.md) - [Start playback at an offset](https://rockboxzig.mintlify.app/api-reference/rest/player/start-playback-at-an-offset.md) - [Get the live queue and its metadata](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/get-the-live-queue-and-its-metadata.md) - [Insert tracks into the live queue](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/insert-tracks-into-the-live-queue.md) - [List tracks currently in the queue](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/list-tracks-currently-in-the-queue.md) - [Number of tracks in the live queue](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/number-of-tracks-in-the-live-queue.md) - [Remove tracks from the live queue](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/remove-tracks-from-the-live-queue.md) - [Replace the live queue with a new playlist](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/replace-the-live-queue-with-a-new-playlist.md) - [Resume the saved control file playlist](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/resume-the-saved-control-file-playlist.md) - [Resume the saved track at its previous offset](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/resume-the-saved-track-at-its-previous-offset.md) - [Shuffle the live queue](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/shuffle-the-live-queue.md) - [Start playback at a queue index](https://rockboxzig.mintlify.app/api-reference/rest/playlist-queue/start-playback-at-a-queue-index.md) - [Add tracks to a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/add-tracks-to-a-saved-playlist.md) - [Create a playlist folder](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/create-a-playlist-folder.md) - [Create a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/create-a-saved-playlist.md) - [Delete a playlist folder](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/delete-a-playlist-folder.md) - [Delete a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/delete-a-saved-playlist.md) - [Get a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/get-a-saved-playlist.md) - [List playlist folders](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/list-playlist-folders.md) - [List saved playlists, optionally filtered by folder](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/list-saved-playlists-optionally-filtered-by-folder.md) - [List track ids in a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/list-track-ids-in-a-saved-playlist.md) - [List tracks in a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/list-tracks-in-a-saved-playlist.md) - [Load a saved playlist into the queue and start playing](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/load-a-saved-playlist-into-the-queue-and-start-playing.md) - [Remove a track from a saved playlist](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/remove-a-track-from-a-saved-playlist.md) - [Update a saved playlist's metadata](https://rockboxzig.mintlify.app/api-reference/rest/saved-playlists/update-a-saved-playlists-metadata.md) - [Full-text search powered by Typesense](https://rockboxzig.mintlify.app/api-reference/rest/search/full-text-search-powered-by-typesense.md) - [Apply a partial settings update and persist to settings.toml](https://rockboxzig.mintlify.app/api-reference/rest/settings/apply-a-partial-settings-update-and-persist-to-settingstoml.md) - [Get the global settings (in-memory snapshot)](https://rockboxzig.mintlify.app/api-reference/rest/settings/get-the-global-settings-in-memory-snapshot.md) - [Create a smart playlist with a rule criteria](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/create-a-smart-playlist-with-a-rule-criteria.md) - [Delete a smart playlist](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/delete-a-smart-playlist.md) - [Get a smart playlist](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/get-a-smart-playlist.md) - [List smart playlists](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/list-smart-playlists.md) - [Resolve a smart playlist and start playing its tracks](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/resolve-a-smart-playlist-and-start-playing-its-tracks.md) - [Resolve a smart playlist to its current matching tracks](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/resolve-a-smart-playlist-to-its-current-matching-tracks.md) - [Update a smart playlist](https://rockboxzig.mintlify.app/api-reference/rest/smart-playlists/update-a-smart-playlist.md) - [Get global runtime status](https://rockboxzig.mintlify.app/api-reference/rest/system/get-global-runtime-status.md) - [Get the running rockboxd version](https://rockboxzig.mintlify.app/api-reference/rest/system/get-the-running-rockboxd-version.md) - [Get this OpenAPI document](https://rockboxzig.mintlify.app/api-reference/rest/system/get-this-openapi-document.md) - [Trigger a library scan and (optionally) rebuild the search index](https://rockboxzig.mintlify.app/api-reference/rest/system/trigger-a-library-scan-and-optionally-rebuild-the-search-index.md) - [Get listening stats for a track](https://rockboxzig.mintlify.app/api-reference/rest/track-stats/get-listening-stats-for-a-track.md) - [Record a 'played' event for a track](https://rockboxzig.mintlify.app/api-reference/rest/track-stats/record-a-played-event-for-a-track.md) - [Record a 'skipped' event for a track](https://rockboxzig.mintlify.app/api-reference/rest/track-stats/record-a-skipped-event-for-a-track.md) - [Get a track by id](https://rockboxzig.mintlify.app/api-reference/rest/tracks/get-a-track-by-id.md) - [List all tracks in the library](https://rockboxzig.mintlify.app/api-reference/rest/tracks/list-all-tracks-in-the-library.md) - [Persist metadata for an HTTP stream URL](https://rockboxzig.mintlify.app/api-reference/rest/tracks/persist-metadata-for-an-http-stream-url.md): Used by the player when a remote URL is loaded — saves title/artist/album/duration so the URL can be resolved from the DB later. - [Build system](https://rockboxzig.mintlify.app/architecture/build.md): Make → Cargo → Zig. The three-step pipeline that produces rockboxd. - [Architecture](https://rockboxzig.mintlify.app/architecture/overview.md): How Rockbox C, Rust and Zig fit together inside one rockboxd binary. - [PCM sinks](https://rockboxzig.mintlify.app/architecture/pcm-sinks.md): How Rockbox's audio output abstraction works, and how to add a new sink. - [AirPlay](https://rockboxzig.mintlify.app/audio-output/airplay.md): RAOP streaming to one or many AirPlay receivers — Apple TV, HomePod, Airport Express, shairport-sync. - [Built-in (SDL)](https://rockboxzig.mintlify.app/audio-output/built-in.md): The default. SDL2 audio to your OS default device. - [Chromecast](https://rockboxzig.mintlify.app/audio-output/chromecast.md): Google Cast support over WAV-over-HTTP plus the Cast control channel. - [Audio output overview](https://rockboxzig.mintlify.app/audio-output/overview.md): Pick a PCM sink. Switch any time over the API. - [Snapcast](https://rockboxzig.mintlify.app/audio-output/snapcast.md): Synchronised multi-room playback through Snapserver — TCP or FIFO. - [Squeezelite](https://rockboxzig.mintlify.app/audio-output/squeezelite.md): Slim Protocol multi-room — Rockbox impersonates Logitech Media Server. - [UPnP / DLNA](https://rockboxzig.mintlify.app/audio-output/upnp.md): Three independent UPnP/DLNA modes — sink, media server and renderer. - [Crossfade](https://rockboxzig.mintlify.app/audio-settings/crossfade.md): Overlap the end of one track with the beginning of the next. - [DSP effects](https://rockboxzig.mintlify.app/audio-settings/dsp.md): Crossfeed, Haas surround, PBE, AFR, compressor and dithering. - [Equalizer](https://rockboxzig.mintlify.app/audio-settings/equalizer.md): 10-band parametric EQ — independent gain, frequency and Q per band. - [Audio settings](https://rockboxzig.mintlify.app/audio-settings/overview.md): Volume, EQ, DSP, ReplayGain, crossfade and the rest of the rbcodec pipeline. - [ReplayGain](https://rockboxzig.mintlify.app/audio-settings/replaygain.md): Loudness normalisation using ReplayGain tags embedded in your files. - [Desktop app](https://rockboxzig.mintlify.app/clients/desktop.md): Native desktop clients on macOS (GPUI), Linux (GTK4) and Windows. - [MPD clients](https://rockboxzig.mintlify.app/clients/mpd.md): Rockbox speaks the Music Player Daemon protocol on port 6600. - [MPRIS](https://rockboxzig.mintlify.app/clients/mpris.md): Linux media keys and desktop integration via D-Bus. - [Web UI](https://rockboxzig.mintlify.app/clients/web.md): Browser-based controller served by rockboxd on port 6062. - [Configuration](https://rockboxzig.mintlify.app/configuration.md): Configure Rockbox via ~/.config/rockbox.org/settings.toml. - [Rockbox Zig](https://rockboxzig.mintlify.app/index.md): A modern wrapper around the Rockbox audio engine, exposed over gRPC, GraphQL, HTTP and MPD — with multi-room AirPlay, Snapcast, Squeezelite, Chromecast and UPnP. - [Installation](https://rockboxzig.mintlify.app/installation.md): Install pre-built binaries or build Rockbox Zig from source. - [Quickstart](https://rockboxzig.mintlify.app/quickstart.md): Install Rockbox, point it at your music, and play your first track. - [CLI reference](https://rockboxzig.mintlify.app/reference/cli.md): rockbox and rockboxd — the two binaries you'll interact with. - [FAQ](https://rockboxzig.mintlify.app/reference/faq.md): Common questions about Rockbox Zig. - [Ports](https://rockboxzig.mintlify.app/reference/ports.md): Every TCP and UDP port rockboxd binds, plus mDNS/SSDP service types. - [settings.toml reference](https://rockboxzig.mintlify.app/reference/settings-toml.md): Every key Rockbox reads from ~/.config/rockbox.org/settings.toml. - [Troubleshooting](https://rockboxzig.mintlify.app/reference/troubleshooting.md): Common errors, the symptoms they produce, and how to fix them. - [Clojure](https://rockboxzig.mintlify.app/sdks/clojure.md): Pipe-friendly Clojure wrapper over rockboxd's GraphQL API. - [Elixir](https://rockboxzig.mintlify.app/sdks/elixir.md): Idiomatic Elixir SDK — pipe-friendly, builder-friendly, with messages-as-events. - [Gleam](https://rockboxzig.mintlify.app/sdks/gleam.md): Type-safe Gleam SDK with a tagged Result on every call. - [Client SDKs](https://rockboxzig.mintlify.app/sdks/overview.md): Six first-party SDKs. All wrap the GraphQL transport, surface real-time events, and ship a tiny plugin system. - [Python](https://rockboxzig.mintlify.app/sdks/python.md): Async-first Python SDK on httpx + websockets, with Pydantic models. - [Ruby](https://rockboxzig.mintlify.app/sdks/ruby.md): Builder-friendly, block-friendly Ruby SDK with WebSocket subscriptions and plugins. - [TypeScript](https://rockboxzig.mintlify.app/sdks/typescript.md): Fully typed GraphQL client with real-time subscriptions and a plugin system. ## OpenAPI Specs - [openapi](https://rockboxzig.mintlify.app/api-reference/openapi.json) ## Optional - [GitHub](https://github.com/tsirysndr/rockbox-zig) - [Discord](https://discord.gg/tXPrgcPKSt) - [Releases](https://github.com/tsirysndr/rockbox-zig/releases)