Skip to main content

Connecting clients

Immerle ships two clients of its own: the app (web, desktop, iOS, Android) and iml (terminal), both built against Immerle's native API. That's where the full feature set lives: on-demand catalog & providers, Jam sessions, federation, Hall of Fame, discovery playlists, radio & podcasts, playlist and purchase import, offline downloads, live admin tools, and everything else this site documents.

Subsonic/OpenSubsonic is also fully supported, so any client for that ecosystem works too, but the Subsonic API is an older, fixed protocol that was never designed for most of the above, so a Subsonic client only ever sees the "plain music server" subset. Treat it as a fallback for when you'd rather keep using an app you already have.

See Compare clients for a side-by-side of what each option gets you, and Choosing a client for install links per platform.

One codebase for web, desktop (macOS, Windows, Linux), iOS and Android.

  • Web needs nothing extra: the server embeds and serves it directly at http://<host>:4533. Sign in with the account you created during installation and you're done.
  • Desktop and Android installers are attached to every release (.dmg, .exe, .AppImage/.deb, immerle.apk).
  • iOS isn't published to the App Store yet; build it yourself with EAS (npx eas build --profile production --platform ios) or run a dev client locally. See ui/README.md in the repo for the exact commands.

It's capability-aware: it probes the server on connect and only shows the features that instance actually has enabled, so it degrades gracefully against an older server or one with things turned off, no broken buttons.

Multi-device playback​

Sign in on more than one device and the app keeps them in sync: the play queue, current track and position are shared, so picking up your phone resumes wherever your laptop left off. From the player, "cast to device" picks one device as the sole active player (the others pause instead of doubling audio), and the picking device keeps play/pause/skip/seek control over it remotely, same idea as Spotify Connect. Pick "Everywhere" to go back to every device playing independently.

Crossfade​

Under Settings → Playback quality, each listener picks how long one track blends into the next: off, or 2 to 12 seconds (4 by default, remembered per device). On web and desktop the two tracks overlap; on iOS and Android, where the player handles one track at a time, the end fades out and the next track fades in. Only a track ending on its own blends: skipping, seeking or pausing cuts the fade.

iml: terminal client​

A UI-less TUI: search songs/albums/playlists and play them without ever leaving the terminal. It renders text, not a GUI, so it barely touches memory or CPU, handy for just having music running in the background without competing with a game or anything else demanding for resources.

Install it (Go 1.26+ needed to build), or grab a prebuilt binary from the latest release, see Choosing a client:

make install-cli # go install ./cmd/iml, lands `iml` on your $GOBIN/$PATH

Run iml, enter your server URL and credentials once, the session is saved to ~/.immerle/config.json and reused after that (iml logout clears it).

KeyDoes
typesearch (matches songs, albums and playlists, "Liked Songs" / "J'aime" included)
/song, /album, /playlistscope the search to one type
↑ / ↓, Entermove the selection, play it
Esc / /leave / focus the search bar (playback keys below only work outside it)
Spaceplay / pause
nnext track
+ / -volume up / down
rcycle repeat: off → all → one
stoggle shuffle
qquit

Subsonic / OpenSubsonic clients​

Point any compatible client at:

  • Server / URL: http://<host>:4533
  • Username / Password: your Immerle credentials

Tested:

Any other Subsonic/OpenSubsonic client should work for browsing, search, streaming, transcoding, playlists and scrobbling, just without the Immerle-only features listed above. If something doesn't work, open an issue.