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.
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
browserHeddohonmusic server
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 contrapunctus⌘K
Contrapunctus 1Kimiko Ishizaka · song
J.S. Bach: The Art of the Fuguealbum
Contrapunctus 7 a 4 Per Augmentationemsong
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.
FLAC 24/192
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.
581 plays36 hours
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.
MMiraInsomniaJosh Woodward
JJonasContrapunctus 1Kimiko Ishizaka
AAdaCalifornia LullabyeJosh Woodward
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.
+Played latelysmart
Play count is more than 3all of
Last played in the last 30 daysrule
Genre is not “Audiobook”rule
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, in place of the artworkMore from the artist, under the track listYour listening: the history summed up, by 30 days, 90 days, the year or everything keptA shared song, for anyone with the link
The player and the tabs, one panelPulled 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.
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.
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