Mirroring is the lighter-touch alternative to fully migrating off another scrobbler. You keep your existing setup exactly as it is — Rocksky just pulls new plays from your account on the other service and re-publishes them as scrobbles on your account.Documentation Index
Fetch the complete documentation index at: https://docs.rocksky.app/llms.txt
Use this file to discover all available pages before exploring further.
How it differs from migrating
| Migrating | Mirroring | |
|---|---|---|
| Your clients send scrobbles to | Rocksky | Last.fm / ListenBrainz / Teal.fm (unchanged) |
| Plays land in the other service | No | Yes |
| Plays land in Rocksky | Yes | Yes |
| Setup | Repoint each client | One toggle in your Rocksky settings |
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.