Rocksky
A decentralized, open-source Last.fm alternative built on the AT Protocol (Bluesky).
Rocksky automatically tracks ("scrobbles") the music you listen to from Spotify, Jellyfin, Navidrome, browsers, Android, and more — then publishes it to your decentralized identity. Own your listening history, see what friends are playing in real time, get rich stats, and discover new music — all without a central company controlling your data.
rocksky.app • Docs • Discord
✨ Key Features
🎵 Scrobbling
- Last.fm Compatible API – Works with almost any existing Last.fm scrobbler
- ListenBrainz Compatible API – Broad client support
- Automatic Last.fm mirroring (future scrobbles)
🕒 Playback & History
- Recently Played Timeline
- Stories View – See what others are listening to live
- Daily/weekly stats and visualizations
📊 Insights
- Top Artists, Tracks, and Albums
- Personalized charts
- Shoutbox & Likes for community interaction
🌐 Integrations
- Spotify – Direct "now playing" detection
- Jellyfin – Media server scrobbling
- Pano Scrobbler (Android/Linux/Windows)
- WebScrobbler (browser)
- More coming soon
🔍 Search
- Blazing-fast search powered by Typesense
🚧 Roadmap
- Webhooks (Discord, custom integrations)
- Personalized discovery feeds
- Rocksky Connect (remote playback across devices)
- Multi-source library support (S3, Google Drive, etc.)
- Built-in streaming + self-uploaded music
- Extensions system
- Cross-device settings sync
Quick Start (for users)
- Go to rocksky.app and sign in with your Bluesky account
- Connect your music apps (Spotify, Jellyfin, etc.)
- Start scrobbling — your data stays under your control
Self-hosting and advanced usage instructions are below.
🚀 Self-Hosting / Development
Prerequisites
- Node.js (v22+)
- Bun
- Docker + Docker Compose
- Rust (for some crates)
- Deno, Go, Turbo, Wasm Pack (see full docs)
Getting Started
# 1. Clone the repo
git clone https://github.com/tsirysndr/rocksky.git
cd rocksky
# 2. Install dependencies
npm install -g turbo
bun install
bun run build:raichu
# 3. Environment variables
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env
cp apps/feeds/.env.example apps/feeds/.env
cp .env.example .env
# Edit the .env files as needed# 4. Start services
docker compose up -d
# 5. Database migrations
turbo db:migrate --filter=@rocksky/api
# 6. Spotify integration (optional but recommended)
# Set SPOTIFY_ENCRYPTION_KEY and SPOTIFY_ENCRYPTION_IV first
bun run spotify <your_client_id> <your_client_secret>Then run the dev servers:
bun run dev:jetstream
bun run mb
bun run feeds
turbo dev --filter=@rocksky/api --filter=@rocksky/webOperations console (Clojure REPL)
tools/console/ is a Clojure project that centralizes every operational script
in the monorepo — lexicon codegen, DB migrations, data sync/backfill, Rust
daemons, devops glue — behind one discoverable REPL. Instead of remembering
which package.json script lives in which workspace or which cargo run -p ...
invokes which daemon, you call functions:
cd tools/console
mise install # locks JDK 21, Clojure, Babashka
clj -M:rebel # pretty terminal REPL (try `(help)`)
clj -M:dev # nREPL on :7888 for CIDER / Calva / Cursive
bb help # or fast one-shot CLI tasks
bb sync did:plc:abc123 # e.g. sync one user's scrobblesSee tools/console/README.md for the full command
catalog and design notes.
Comparison
| Feature | Last.fm | ListenBrainz | Rocksky |
|---|---|---|---|
| Open Source | No | Yes | Yes |
| Decentralized Identity | No | No | Yes (AT Protocol) |
| Social Feed | Limited | Basic | Real-time Stories |
| Data Ownership | Last.fm | You (export) | You (on your PDS) |
| Last.fm Compatibility | — | Partial | Strong |
📚 Documentation
Full documentation is available at docs.rocksky.app.
- Quickstart – Get scrobbling in a few minutes
- FAQ – Common questions answered
- Integrations – Jellyfin, Navidrome, Pano Scrobbler, Kodi, Claude Desktop
- Migrating – from Last.fm · from ListenBrainz
- Rocksky CLI – Scrobble, search, and manage from the terminal
- SDKs – TypeScript, Python, Rust, Go, Ruby, Kotlin, Elixir, Clojure, Gleam
- API reference – HTTP endpoints and OpenAPI spec
Feedback & Contributing
This repo is the central place for issues and discussions.
- Join the Discord
- Open issues on Tangled
- See CONTRIBUTING.md for development setup
Made with ❤️ for music lovers who want control over their data.
