πΏ Eden Project Your music. Your server. Your rules. A fully self-hosted, open-source music ecosystem β built and deployable for free β that lets you rip, store, and stream your favorite songs across Android, desktop, and the web.
Eden is a self-hosted music platform β an open alternative to Spotify β that gives you complete control over your music library. Instead of paying for a streaming subscription, you migrate your favourite songs from YouTube, Spotify, or SoundCloud into your own server, and then listen to them on any Eden client.
The ecosystem is split into five modular components that work together:
| Component | Role |
|---|---|
| Eden | Android / iOS music player app |
| Eden Garden | Chrome extension to rip songs from the web |
| Eden Server | Authoritative API server for all music operations |
| Eden Desktop | WIP desktop music player |
| Workers | Cloudflare Worker microservices (gateway, metadata, downloader) |
Everything is free to build and deploy β Eden Server and all Workers run on Cloudflare's free tier.
React Native Β· Expo SDK 55 Β· Android & iOS
The primary listening experience. Eden is a full-featured mobile music player that connects to your Eden Server instance and streams your personal library.
Features:
- Stream songs directly from your self-hosted Eden Server
- Auth-backed personalised song lists and listening history
- AI-powered song suggestions based on your library
- Full metadata display β song title, artist, album art, album info, duration
- Browse by artist, album, or playlist
- Offline-ready architecture
Plasmo Framework Β· React Β· Chrome Web Store
Eden Garden is the ingestion pipeline for your library. When you're listening to a track anywhere on the web, Garden lets you grab it and push it to your server β with full metadata control.
Features:
- Detects currently playing songs on YouTube, Spotify, and SoundCloud
- Automatically fetches rich metadata (title, artist, album, cover art) via the
yt-metadataworker - Lets you review and manually edit any metadata field before uploading
- Sends the finalized song and metadata to Eden Server with one click
- Works seamlessly with the Eden Worker pipeline for downloading and processing
Cloudflare Workers Β· Hono Β· REST API
The authoritative server that powers every Eden client. All song playback, uploads, user auth, and library management flows through here.
Full API specification: Scalar Docs β
Responsibilities:
- Song upload, storage, and streaming endpoints
- User authentication and personalisation logic
- Library management β songs, artists, albums, playlists
- Queue management and playback state
- Acts as the orchestration layer for Worker calls
In active development
A desktop counterpart to the Eden mobile app. Planned to be a full alternative to Spotify desktop, offering the same listening features as Eden mobile plus desktop-specific enhancements like local file integration and richer keyboard controls.
Three purpose-built Cloudflare Workers that handle the heavy lifting. Each is modular and independently deployable.
The API gateway, service registry, and queue manager for the Worker layer.
- Routes requests to the appropriate downstream worker
- Maintains a service registry for worker discovery
- Queues multiple concurrent worker jobs (e.g., bulk downloads)
- Acts as the single entry point for Eden Server β Worker communication
A metadata enrichment worker that fetches detailed song information from streaming platforms.
- Resolves metadata for tracks, albums, artists, and playlists
- Sources data from Spotify, SoundCloud, and YouTube Music
- Results are consumed by Eden Garden and Eden Server to populate song records
A modular, queueable download worker powered by yt-dlp.
- Downloads audio from YouTube when queued by the Eden Gateway
- Processes the audio and hands it off to Eden Server for storage
- Designed to be horizontally scalable through the gateway queue
- Node.js v22+
- Bun (recommended) or npm
- Cloudflare account (free tier is sufficient)
- Expo CLI for mobile development
- Wrangler CLI for deploying Workers
cd eden-server
bun install
wrangler deployNote the deployed Worker URL β you'll need it for the clients and other Workers.
# Gateway
cd workers/eden-gateway
wrangler deploy
# Metadata worker
cd workers/yt-metadata
wrangler deploy
# Downloader
cd workers/yt-downloader
wrangler deployConfigure each worker's bindings and environment variables in wrangler.toml.
cd eden
bun install
npx expo startPoint the app to your Eden Server URL in the config, then scan the QR code with Expo Go or build a native binary with eas build.
cd eden-garden
bun install
bun run build- Open Chrome β
chrome://extensions - Enable Developer Mode
- Click Load unpacked and select the
build/chrome-mv3-proddirectory - Configure the extension with your Eden Server URL
The full Eden Server API is documented with Scalar:
π https://eden-server.suvan-gowrishanker-204.workers.dev/scalar
Covers all endpoints for auth, song upload, streaming, library management, and worker orchestration.
| Layer | Technology |
|---|---|
| Mobile App | React Native, Expo SDK 55 |
| Desktop App | (WIP) |
| Chrome Extension | Plasmo, React |
| API Server | Cloudflare Workers, Hono |
| Worker Microservices | Cloudflare Workers, yt-dlp |
| Metadata Sources | YouTube Music, Spotify, SoundCloud |
- Eden mobile app (Expo SDK 55)
- Eden Garden Chrome extension
- Eden Server (auth, upload, streaming)
- Eden Gateway (worker queue + registry)
- yt-metadata worker
- yt-downloader worker
- Eden Desktop (in progress)
- iOS support
- Playlist sync across clients
- Offline playback (mobile)
- Eden Garden β Firefox extension
Contributions are welcome! Each component lives in its own directory and can be developed independently. Please open an issue before submitting a large PR so we can discuss the approach.
This project is Source Open.. more on that later.