Skip to main content
Every SDK targets the GraphQL endpoint on port 6062 and exposes the same domain-namespaced API:

Pick a language

TypeScript

bun add @rockbox-zig/sdk

Python

uv add rockbox-sdk — async-first

Ruby

gem install rockbox

Elixir

{:rockbox_ex, "~> 0.1"}

Clojure

org.clojars.tsiry/rockbox-clj

Gleam

gleam add rockbox

Why not just use the GraphQL transport directly?

You can — client.query() on every SDK is an escape hatch, and the GraphiQL explorer at http://localhost:6062/graphiql lets you test queries without writing any client code. The SDKs add value when you want:
  • Typed responses — Pydantic models in Python, Structs in Ruby, TypeScript types, Gleam tagged unions.
  • Real-time eventstrack:changed / status:changed / playlist:changed over WebSocket with auto-reconnect and exponential backoff.
  • A plugin system — Jellyfin-style install/uninstall lifecycle for cross-cutting features (scrobbling, notifications, sleep timer).
  • Smart-playlist rule builders — type-safe rule DSLs (Gleam, Elixir, Clojure).
  • Idiomatic ergonomics — pipe-friendly in functional languages, builder DSLs in OOP languages.

Common patterns