How it differs from migrating
Pick mirroring when you want Rocksky alongside an existing scrobbler. Pick
migrating when you’re ready to point your clients directly at Rocksky and
stop double-writing.
Supported sources
Last.fm
Polls
user.getRecentTracks every 30 seconds.ListenBrainz
Polls
/user/{name}/listens every 30 seconds.Teal.fm
Real-time via AT Protocol Jetstream — no polling, no credentials.
How it works
- You enter your username (and an API key, for Last.fm and ListenBrainz) on the Mirrors page and flip the Mirror enabled toggle.
- Credentials are encrypted at rest with XSalsa20-Poly1305 before being written to the database.
- A background worker picks up the new source within a few seconds and starts polling (or, for Teal.fm, subscribing to Jetstream).
- Each play newer than the last-seen watermark runs through a ±120-second
dedup check against your existing scrobbles. Anything genuinely new is
published as
app.rocksky.scrobble.createScrobble. - On first enable, the watermark is seeded 24 hours in the past — so you get a one-day backfill rather than only future plays.