lefteros_by SomniusX
EL ↗Say hello

LEFTEROS / PERSONAL NOTES

Mus-Eq: my music, on my own server

7 November 2026 / Lef

Mus-Eq: my music, on my own server

I wanted a server for my music that I control. One where my library doesn't go to any service, with the classic Winamp look, and that plays on my phone too. That's how Mus-Eq started. It's open source (MIT or Apache-2.0, your pick) and it's still early.

What it is

A small Rust server holds your library and serves it over one API, which is documented too. You run it in Docker. The clients talk to it: a web player built on Webamp, so the first skin is the classic Winamp, and an early Android app. Clients for Windows and Linux are planned, not built yet.

The Mus-Eq web player with Webamp and a Greek track loaded

The web player with the classic skin, on test files.

What it does today: it scans a folder, reads the tags, and search ignores accents and case, Greek included. Type a Greek title without its accent and it still finds it. It has playlists, and a playlist can grow by itself: when it ends, it adds tracks by artists it doesn't have yet, in the same genre, from your own library. It finds duplicates by the audio fingerprint and suggests which copy to keep, but it never deletes anything. It suggests tags from MusicBrainz, and a suggestion changes the database only if you accept it. It never rewrites your audio files.

There's radio too. A station list, with a Greek list in it from Constantinos's Tray-FM (Unlicense), and a check for which stations are live. And a radio made from your own files, with the track title showing in players that support it.

No third-party programs bundled

I wanted this from the start. Mus-Eq doesn't include ffmpeg, yt-dlp or deno, not even in the container image. They're separate programs under their own licences. When you need one, the server first tells you exactly what it will download, from where, how big it is, why it needs it and under which licence. It downloads only if you confirm, and before it's used it's checked against a SHA-256 pinned in the release. If it doesn't match, it doesn't go in. I've tried this on a real machine, with the real downloads from GitHub.

The Android app asks before downloading deno: what, from where, how big, which SHA-256 and which licenceThe Tools screen in the Android app with ffmpeg, yt-dlp and denoA library radio in the Android app, with one listener

The phone app: the question before a download, the Tools screen, and a radio from the library.

Offline you can trust

On the phone you pin a track or a whole playlist, and it downloads. Each file is checked against the size and SHA-256 the server knows. "Check pinned copies" checks them again, and downloads anything damaged again. The old copy stays until the new one checks out. I tried all this by hand on my phone: it played with the server stopped, and a file I broke on purpose got repaired. The server token is now stored encrypted on the phone.

What isn't ready

This is the part that matters, so I'll say it plainly:

  • No clients for Windows and Linux yet, no skins on Android, and no live radio from the phone's mic.
  • The Android app is a debug build only, tried on one phone (a OnePlus 13).
  • Track titles on the radio from your own files are new. They have tests, but I haven't tried them in VLC or a browser yet. A radio is running for 24 hours right now, and there's no result yet.
  • I haven't tried HTTPS with a real certificate.
  • Fetching tracks from YouTube Music or Spotify exists, but it's off by default and has never run against the real services, only against fakes in the tests.
  • I haven't run the downloads for ARM.

All of this, phase by phase, with what's been checked and what hasn't, is in the project's roadmap. So is the list of what works today in the README. I don't want to promise anything I haven't seen work.

Try it

You need Docker, a folder of music and a token. The steps are in the README. For Android, you build the debug APK from the android/ folder. Issues for bugs, ideas and stations are open on GitHub.

Thanks to Webamp (MIT) for the player and to Constantinos for the Tray-FM station list (Unlicense). All third-party software and its licences are in THIRD_PARTY.md. The Mus-Eq page will keep the current state.