Black Lives Matter. Support the Equal Justice Initiative and read our statement here.


Play music from your Dropbox, IPFS node, Amazon S3 bucket, or any other cloud/distributed storage service you use.


A music player that connects to your cloud/distributed storage,
in the form of a static, serverless, web application.

📍 Available at and for download.


Music layer for music storage. User layer for user-data storage.

Music layer

User layer

Hosting on your own server

Diffuse is a static web application, which means it's just HTML, CSS and Javascript. No REST API, database, or anything backend-related involved. The app uses a hash, aka. fragment, based routing system, so you don't need any special server rules for routing. You can download a pre-build web-only version of Diffuse on the releases page. Diffuse uses service workers, so you may need HTTPS for it to work smoothly in certain browsers.

I should also note that some source services use OAuth, so you'll need to use your own application credentials (eg. google drive client id + secret). That said, if you're working locally you can use http://localhost:5000 or to use the default ones, that's what the old Electron app was using.

In short:

  • Diffuse is a static, serverless, web application
  • Routing is done using hashes/fragments (eg.
  • Download a web build on the releases page
  • Uses service workers (use HTTPS if possible)
  • May need own OAuth application credentials for some source services

Building it yourself

This project uses Nix to manage the project's environment. If you'd like to build this project without Nix, check out the dependencies in the shell.nix file (most are available through Homebrew as well).

# 🍱

# 1. Setup Nix environment

# 2. Install js dependencies
just install-deps

# 3. Build, start server & watch for changes
Personal data storage Personal data storage
Data encryption Data encryption
Track list #1 Track list #1
Track list #2 Track list #2
Music sources Music sources
Queue Queue
Playlists Playlists
Equalizer Equalizer
Settings Settings

Something missing? Edit this app.

Keyboard Shortcuts

Key Action
/ Focus the search bar
Esc Focus the search bar and cleans it
Select the next search result
Select the previous search result
Enter Open the selected search result
cmdEnter Ctrl+Enter Open the selected search result in a new tab