Heddohon

ヘッドホン · headphones

A web music player you host yourself, for Navidrome, Subsonic and Jellyfin

Listen together over a live link, share a song with anyone, and keep your music server off the internet.

FLAC 24/192 amd64 · arm64 MIT

Install Releases

Heddohon on the album page of Accumulation by Lezet, in FLAC, with the now-playing panel on the right Heddohon on the album page of Accumulation by Lezet, in FLAC, with the now-playing panel on the right, both tinted blue by the cover Heddohon on the album page of Accumulation by Lezet, in FLAC, with the now-playing panel on the right, both tinted blue by the cover

01What it does differently

Listen together

Listen together, like a Spotify Jam

Send a link, and everyone who opens it hears what you play, as you play it, without an account. Friends with an account on your music server can add tracks to the queue.

Listeners
up to 50
Reactions
5 emoji, 1 a second
Ends
when you end it, or after 12 h

Shared links

A song, an album or a playlist, for anyone with the link

It plays that one item, with its cover and the original file, and shows both when pasted into a chat. Withdraw it, and streams playing through it stop.

Lasts
1, 7 or 30 days
Token
256 random bits
Stored as
an HMAC digest

Security

Your music server stays off the internet

The browser only talks to Heddohon, which fetches every byte from the music server. Its address appears in no page, script or error. The details are in SECURITY.md.

Credentials
AES-256-GCM, scrypt keys
Sign-in
10 attempts a user in 15 min
Second factor
authenticator app, passkeys
Single sign-on
OpenID Connect, PKCE
Writes
origin checked on every one
Media
sandboxed by its CSP

02And the player itself

Play anything from the keyboard

In Terminal, press ⌘K or Ctrl K anywhere and type what you want to hear: play and a name starts the best match. Queueing, mixes, seeking and the volume work the same way. An AI assistant that speaks MCP, such as Claude, can search your library and make playlists with a token you give it.

Original files

Up to FLAC 24/192, or transcoded to MP3, Opus or AAC. Casts to Chromecast and AirPlay.

Four themes, coloured by the artwork

Terminal, Liquid, Paper and Phosphor. In each, the accent is the colour of the cover that is playing. This page does the same; press a square above to colour it by hand, or switch the theme in the top bar. Terminal comes with ten colour schemes, and more can be added as files; from the next release, for any of the four.

Synced lyrics

From your music server, or from LRCLIB. A full-screen view shows them on a TV across the room.

One app across your devices

Desktop apps for Linux and Windows, an experimental Android app, and an install from the browser on a Mac, an iPhone and an iPad. One browser can pause, skip or take over the queue of another.

An equaliser that knows your headphones

Ten bands, with a correction for one of about 8,850 headphones measured by AutoEq.

Your listening, on your server

Every play kept on your server: top artists, albums and hours, a recap of the year or the month to share as a picture, what you played on this day in earlier years, and daily mixes made from it. Export it as CSV or JSON.

See what the others are playing

Accounts that turn it on see what each other is playing, and can play or queue it themselves. Each has a profile page with four albums they pick, and a link to show it to anyone.

Playlists that fill themselves

Smart playlists from rules on play count, last played, genre, year, rating and more, kept up by Navidrome, and from the next release by Heddohon on Jellyfin. Import a playlist from M3U, CSV, Apple Music or Spotify, see what was found in your library before it is made, and download any as M3U or CSV.

03Screens

Synced lyrics from LRCLIB in the now-playing panel, the current line highlighted, above the track details Synced lyrics from LRCLIB in the now-playing panel, the current line highlighted, above the track details Synced lyrics from LRCLIB in the now-playing panel, the current line highlighted, above the track details
Synced lyrics, in place of the artwork
An album page scrolled to more albums from the same artist An album page scrolled to more albums from the same artist An album page scrolled to more albums from the same artist
More from the artist, under the track list
Your listening over the last 30 days: 495 plays, 37 hours, a chart of plays by the hour of the day and one by the day of the week, and the top artists and albums Your listening over the last 30 days: 495 plays, 37 hours, a chart of plays by the hour of the day and one by the day of the week, and the top artists and albums Your listening over the last 30 days: 495 plays, 37 hours, a chart of plays by the hour of the day and one by the day of the week, and the top artists and albums
Your listening: the history summed up, by 30 days, 90 days, the year or everything kept
A shared song, playing in the browser without an account A shared song, playing in the browser without an account A shared song, playing in the browser without an account
A shared song, for anyone with the link
An album page on a phone, with what is playing and four tabs in one panel at the foot of the screen An album page on a phone, with what is playing and four tabs in one panel at the foot of the screen An album page on a phone, with what is playing and four tabs in one panel at the foot of the screen
The player and the tabs, one panel
The full player on a phone, with the cover filling the top of the screen The full player on a phone, with the cover filling the top of the screen The full player on a phone, with the cover filling the top of the screen
Pulled up from it, and down to close

On a phone

What is playing and the four tabs sit in one panel at the foot of the screen, within reach of a thumb. A swipe on it skips, a tap opens the full player, and a pull closes it again. The tabs fold away while you scroll down a page.

Music in these screenshots, with the cover art of each album: Lezet, Accumulation (CC BY 3.0); Stellardrone, Light Years (CC BY 3.0); Broke For Free, Slam Funk (CC BY 3.0); Tale Twist, Wry Way (CC BY 4.0); Grove of Whispers, The Sheltering Sky and Vast (CC BY 4.0); the unfound88 compilation happy in novi sad (CC BY 4.0); and Josh Woodward (joshwoodward.com), including "The Nest" and "Insomnia", under CC BY 4.0. They are captured by one script against a fresh Navidrome. The plays that Your listening counts are generated by the same script.

04Install

docker compose
curl -LO https://github.com/zorcerer/heddohon/releases/latest/download/docker-compose.yml
docker compose up -d
docker compose logs heddohon
Open
http://<server>:3000, enter the setup code from the log, and give the address of your music server. Then sign in with your music server account. To put it on the internet, follow SETUP.md.
Images
ghcr.io/zorcerer/heddohon and zorcererd/heddohon
Platforms
linux/amd64 and linux/arm64: a Raspberry Pi 4 or 5 on a 64-bit OS, an ARM NAS, an Ampere server. 32-bit ARM is not built.
Tags
latest is the newest release. dev is built from the dev branch once a day when it has changed and passed the test suites.
Unraid
Listed in Community Applications, from the template in templates/heddohon.xml.
Install on Unraid
Apps
For Linux an AppImage, for Windows an installer and a portable .exe (not signed), and for Android an experimental APK. Each opens the server you run, and all are files on the latest release. More about them.
No Docker
On Node 22 or later: npm ci && npm run build && node build/index.js

05Documentation