Documentation Index
Fetch the complete documentation index at: https://rockboxzig.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
deps.edn:
{:deps {org.clojars.tsiry/rockbox-clj {:mvn/version "0.1.2-SNAPSHOT"}}}
Quick start
(require '[rockbox.core :as rb]
'[rockbox.playback :as pb]
'[rockbox.library :as lib])
(def client (rb/client))
(rb/connect client)
(when-let [t (pb/current-track client)]
(println "Now playing:" (:title t) "—" (:artist t)))
(let [{:keys [albums tracks]} (lib/search client "dark side")]
(println (count albums) "albums," (count tracks) "tracks"))
(-> client
(pb/play-album "album-id" {:shuffle true}))
(rb/on client :track-changed
(fn [t] (println "▶" (:title t) "by" (:artist t))))
(rb/disconnect client)
(def c (rb/client)) ;; localhost:6062
(def c (rb/client {:host "192.168.1.42" :port 6062}))
(def c (rb/client {:http-url "https://music.home/graphql"
:ws-url "wss://music.home/graphql"}))
;; Builder style — every with-* fn returns a new client value
(def c (-> (rb/client)
(rb/with-host "music.home")
(rb/with-port 6062)
(rb/with-timeout 30000)
(rb/with-headers {:x-trace-id "req-123"})))
Conventions
- Action functions return the client, so chains compose with
->:
(-> client (pb/play-album "id") (pb/seek 30000))
- Read functions return data as plain Clojure maps with kebab-case keys.
- Enums are keywords:
:playing, :paused, :stopped.
- Events surface as callbacks or
core.async channels.
API surface
rockbox.core ;; client, connect, disconnect, on, query
rockbox.playback ;; transport, play helpers
rockbox.library ;; albums, artists, tracks, search, likes
rockbox.playlist ;; live queue
rockbox.saved-playlists ;; persistent playlists
rockbox.smart-playlists ;; rule-based playlists
rockbox.sound ;; volume
rockbox.settings ;; EQ / ReplayGain / crossfade / …
rockbox.system ;; version, status
rockbox.browse ;; filesystem
rockbox.devices ;; output devices
rockbox.bluetooth ;; Linux only
More
Full reference and core.async event channels: see the
Clojure SDK README on GitHub ↗.