A decentralized music tracking and discovery platform built on AT Protocol 🎵
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
1# Rocksky
2
3[](https://github.com/tsirysndr/rocksky/actions/workflows/ci.yml)
4[](https://discord.gg/EVcBy2fVa3)
5
6A decentralized music tracking and discovery platform built on the AT Protocol 🎵 , see [Rocksky](https://rocksky.app).
7
8
9
10## ✨ Features
11
12### 🎵 Scrobbling APIs
13- **Last.fm Compatible API** – drop-in replacement for Last.fm scrobblers
14- **ListenBrainz Compatible API** – works with clients that support ListenBrainz
15
16### 🕒 Playback & History
17
18- **Recently Played Timeline** – browse your listening history
19- **Stories View** – see what other users are playing in real time
20- **Stats** – visualize scrobbles per day
21
22### 📊 User Insights
23
24- **Top Artists, Tracks, and Albums** – personalized charts of your listening habits
25- **Shoutbox & Likes** – interact with other listeners and share reactions
26
27### 🌐 Client Integrations
28- **Spotify** – detect now playing tracks and scrobble directly from Spotify
29- **Jellyfin** – track plays from your media server
30- **Pano Scrobbler** – Android/Linux/Windows support
31- **WebScrobbler** – scrobble directly from your browser
32
33### 🔍 Search
34- **Search Engine** – fast search powered by MeiliSearch
35
36## 🚧 Coming Soon / Roadmap
37- **Webhooks** - subscribe to scrobble events and integrate with Discord or your own apps
38- **Personalized Feeds** – discover music through community-driven feed algorithms
39- **Last.fm → Rocksky** Mirroring (Future Scrobbles) – automatically mirror new scrobbles from Last.fm into Rocksky
40- **Rocksky Connect** – remote playback across devices (similar to Spotify Connect)
41- **Multi-Source Libraries** – browse and scrobble from Google Drive, Dropbox, S3, FTP, and more
42- **Stream & Scrobble Your Own Music** – upload your library and play directly on Rocksky
43- **Extensions** – customize and extend Rocksky with your own logic
44- **Crossfade & Equalizer Settings Sync** – carry your playback preferences across devices
45
46## 📦 Prerequisites
47
48- Node.js (v22 or later)
49- Deno
50- Rust
51- Go
52- Turbo
53- Docker
54- Wasm Pack https://github.com/drager/wasm-pack
55- DuckDB https://duckdb.org/docs/installation `1.2.0`
56- Spotify `SPOTIFY_CLIENT_ID` and `SPOTIFY_CLIENT_SECRET` from setup in [Spotify developer dashboard](https://developer.spotify.com/documentation/web-api/tutorials/getting-started)
57
58## 🚀 Getting Started
59
601. Clone the repository:
61 ```bash
62 git clone git@tangled.sh:rocksky.app/rocksky
63 cd rocksky
64 ```
652. Install dependencies:
66 ```bash
67 npm install -g turbo
68 bun install
69 bun run build:raichu
70 ```
713. Set up the environment variables:
72 ```bash
73 cp apps/api/.env.example apps/api/.env
74 cp apps/web/.env.example apps/web/.env
75 cp apps/feeds/.env.example apps/feeds/.env
76 cp .env.example .env
77 # Edit the .env files to add your configurations
78 ```
794. Start the Docker containers:
80 ```bash
81 docker compose up
82 ```
835. Run the database migrations:
84 ```bash
85 turbo db:migrate --filter=@rocksky/api
86 ```
876. Setup Spotify App:
88 ```bash
89 # don't forget to set SPOTIFY_ENCRYPTION_KEY and SPOTIFY_ENCRYPTION_IV environment variables
90 bun run spotify <client_id> <client_secret>
91 ```
927. Populate database (Optional):
93 ```bash
94 bun run db:pgpull
95 ```
96
978. Start Analytics API:
98 ```bash
99 bun run dev:analytics
100 ```
1019. Start jetstream:
102 ```bash
103 bun run dev:jetstream
104 ```
10510. Start musicbrainz:
106 ```bash
107 bun run mb
108 ```
10911. Start feeds:
110 ```bash
111 bun run feeds
112 ```
11312. Start the development server:
114 ```bash
115 turbo dev --filter=@rocksky/api --filter=@rocksky/web
116 ```
117
118## 📚 Documentation
119[View the full documentation](https://docs.rocksky.app)
120
121## ✍️ Feedback
122This repository is the central place to collect feedback and issues related to [Rocksky](https://rocksky.app).
123
124Please [**open an issue**](https://tangled.org/@rocksky.app/rocksky/issues/new) if you want to leave feedback. Feel free to also join our [**Discord server**](https://discord.gg/EVcBy2fVa3)
125
126## 🤝 Contributing
127We would love to hear your feedback or suggestions. The best way to reach us is on [Discord](https://discord.gg/EVcBy2fVa3).
128
129We also welcome pull requests into this repo. See [CONTRIBUTING.md](CONTRIBUTING.md) for information on setting up this repo locally.