Client does unauthenticated AppView reads, and Agent logs in with an app
password and writes app.rocksky.* records to the user’s PDS. It also ships a
local dedup index and Jetstream real-time sync.
Install
Quickstart
API
Reads —Client: the full app.rocksky.* read surface. Basics: Profile,
Scrobbles, Songs, Albums, Artists, TopTracks, TopArtists, Search,
GlobalStats. Catalog & relations: CatalogAlbums, CatalogArtists,
CatalogSongs, AlbumTracks, ArtistAlbums, ArtistTracks, LovedSongs,
ScrobbleFeed, Scrobble (single by uri), Follows, Followers,
KnownFollowers, plus raw json.RawMessage detail methods (Album, Artist,
Song, Playlists, Playlist, Stats, Wrapped, ScrobblesChart,
Recommendations, Neighbours, Shouts, and more). Get(ctx, nsid, params)
calls any read query by nsid and returns raw json.RawMessage — every named
method is sugar over it. MatchSong(ctx, title, artist, mbID, isrc) resolves a
bare title + artist into full canonical metadata. Attach a bearer token for
auth-gated queries with NewClient("").WithToken(token).
Date-window charts: TopTracksInterval / TopArtistsInterval take a typed
DateInterval, built with rocksky.AllTime(), rocksky.LastDays(n),
LastWeeks, LastMonths, LastYears, or rocksky.Range(start, end); plain
TopTracks / TopArtists remain all-time shorthands.
Writes — Agent: Scrobble (fan-out from full metadata),
ScrobbleMatch(ctx, appview, ScrobbleMatchInput{Title, Artist}) (resolves
metadata via MatchSong, then the same fan-out; Title/Artist required,
Album/MbID/ISRC/Timestamp optional pointers, appview "" = default),
CreateSong / CreateAlbum / CreateArtist, Like, Follow, Shout /
ReplyShout, SetNowPlaying / ClearNowPlaying, Delete, RefreshSession.
Records are the generated gen.*Record types.
Identity hashes: SongHash, AlbumHash, ArtistHash.