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 diffuse.sh and for download.


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

User layer

Music 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).

In short:

  • Diffuse is a static, serverless, web application
  • Routing is done using hashes/fragments (eg. diffuse.sh/#/sources)
  • 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

For version numbers, see .tool-versions and stack.yaml.
All of these, except the last one, can be install using homebrew.

# 🍱

# 1. Install programming languages:
#    Elm 0.19.1 & Haskell (Stack), see links above

# 2. Install vendor dependencies
make install

# 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