Skip to main content
app.rocksky/sdk binds the shared Rocksky Rust core via the JVM Panama FFM API (rocksky.core, JDK 22+): AppView reads, AT Protocol PDS writes, and the identity hashes — the same engine behind every Rocksky SDK.

Install

deps.edn:
The jar is native-free; the library is fetched from the GitHub release on first use. Run with --enable-native-access=ALL-UNNAMED (the :native alias adds it).

Quickstart

API

Reads/writes return plain maps; write verbs throw ex-info on failure. Reads — rocksky.core: named reads (profile actor), (scrobbles actor limit), (top-tracks limit offset), (global-stats) — each accepts a trailing base. Universal escape hatch: (query nsid params) reaches the whole app.rocksky.* read catalog and returns parsed data — e.g. "app.rocksky.album.getAlbums", "app.rocksky.album.getAlbumTracks", "app.rocksky.graph.getFollows", "app.rocksky.actor.getActorLovedSongs", "app.rocksky.stats.getStats", "app.rocksky.charts.getScrobblesChart". (query nsid params base token) sends token as Authorization: Bearer for auth-gated queries. Typed date-window charts: (top-tracks-interval limit offset interval) and (top-artists-interval limit offset interval)interval is :all or [:days n] / [:weeks n] / [:months n] / [:years n] / [:range start end], e.g. (top-tracks-interval 5 0 [:days 7]). Match: (match-song title artist) resolves a bare title + artist into full canonical metadata. Writes — rocksky.core: (login ... :dedup-path "./dedup"), then (scrobble agent track) (full metadata) or (scrobble-match agent params) — a map with camelCase keys, required :title/:artist, optional :album, :mbId, :isrc (match anchors) and :timestamp (scrobbled-at Unix seconds) — match-then-write, (like agent uri cid), (follow agent did), (shout ...), (refresh-session agent), (agent-close agent). With :dedup-path set, (sync-repo agent) (repo backfill) and (hydrate-from-jetstream agent) (live stream) run deduped against the on-disk store. Identity hashes: (song-hash title artist album).