Quick start
Highlights
- Async-first — built on
httpx+websockets. Useawaiteverywhere. - Domain-namespaced API —
client.playback.*,client.library.*,client.sound.*, … - Typed responses — every reply is a Pydantic model with snake_case fields.
- Real-time events —
connect()opens a WebSocket and forwardstrack:changed/status:changed/playlist:changedto listeners. - Builder API —
RockboxClient.builder().host(...).port(...).build(). - Plugin system — Jellyfin-style install/uninstall lifecycle.
- Python-friendly — context manager, decorator listeners, dataclass inputs.
Configure
await client.aclose(), or use it as an async context
manager (async with RockboxClient() as client:).
Domains
| Namespace | What it does |
|---|---|
client.playback | Transport, current/next, play helpers |
client.library | Albums, artists, tracks, search, likes, scan |
client.playlist | The active queue |
client.saved_playlists | Persistent playlists & folders |
client.smart_playlists | Rule-based playlists & stats |
client.sound | Volume |
client.settings | EQ / ReplayGain / crossfade / shuffle / … |
client.system | Version, runtime info |
client.browse | Filesystem & UPnP browser |
client.devices | Cast / source devices |
client.bluetooth | Bluetooth (Linux only) |
Real-time events
client.on_track_changed(...),
client.on_status_changed(...), client.on_playlist_changed(...).
Plugins
REPL-friendly
The SDK is async-first. The recommended REPL is IPython —await
works at the top level, and you get tab-completion on Pydantic models.