Rocksky#
A decentralized music tracking and discovery platform built on the AT Protocol 🎵 , see Rocksky.
✨ Features#
🎵 Scrobbling APIs#
- Last.fm Compatible API – drop-in replacement for Last.fm scrobblers
- ListenBrainz Compatible API – works with clients that support ListenBrainz
🕒 Playback & History#
- Recently Played Timeline – browse your listening history
- Stories View – see what other users are playing in real time
- Stats – visualize scrobbles per day
📊 User Insights#
- Top Artists, Tracks, and Albums – personalized charts of your listening habits
- Shoutbox & Likes – interact with other listeners and share reactions
🌐 Client Integrations#
- Spotify – detect now playing tracks and scrobble directly from Spotify
- Jellyfin – track plays from your media server
- Pano Scrobbler – Android/Linux/Windows support
- WebScrobbler – scrobble directly from your browser
🔍 Search#
- Search Engine – fast search powered by MeiliSearch
🚧 Coming Soon / Roadmap#
- Webhooks - subscribe to scrobble events and integrate with Discord or your own apps
- Personalized Feeds – discover music through community-driven feed algorithms
- Last.fm → Rocksky Mirroring (Future Scrobbles) – automatically mirror new scrobbles from Last.fm into Rocksky
- Rocksky Connect – remote playback across devices (similar to Spotify Connect)
- Multi-Source Libraries – browse and scrobble from Google Drive, Dropbox, S3, FTP, and more
- Stream & Scrobble Your Own Music – upload your library and play directly on Rocksky
- Extensions – customize and extend Rocksky with your own logic
- Crossfade & Equalizer Settings Sync – carry your playback preferences across devices
📦 Prerequisites#
- Node.js (v22 or later)
- Rust
- Turbo
- Docker
- Wasm Pack https://rustwasm.github.io/wasm-pack/installer/
- DuckDB https://duckdb.org/docs/installation
🚀 Getting Started#
IMPORTANT
Self-hosting or running Rocksky locally is still difficult at this stage. Parts of the API are still tied to Xata Postgres, and a full migration to standard Postgres is ongoing. Until this migration is complete, expect setup to be non-trivial.
- Clone the repository:
git clone https://github.com/tsirysndr/rocksky
cd rocksky
- Install dependencies:
npm install -g turbo bun install bun run build:raichu - Set up the environment variables:
cp apps/api/.env.example apps/api/.env
cp .env.example .env
# Edit the .env files to add your configurations
- Start the Docker containers:
docker compose up - Run the database migrations:
turbo db:migrate --filter=@rocksky/api - Start Analytics API:
turbo dev:analytics - Start jetstream:
turbo dev:jetstream - Start the development server:
turbo dev --filter=@rocksky/api --filter=@rocksky/web
📚 Documentation#
✍️ Feedback#
This repository is the central place to collect feedback and issues related to Rocksky.
Please open an issue if you want to leave feedback. Feel free to also join our Discord server
🤝 Contributing#
We would love to hear your feedback or suggestions. The best way to reach us is on Discord.
We also welcome pull requests into this repo. See CONTRIBUTING.md for information on setting up this repo locally.