Music Assistant Server: A Home Assistant First Media Library Core
Music Assistant is a free, opensource Media library manager that connects to your streaming services and a wide range of connected speakers. The server is the beating heart, the core of Music Assistant and must run on an always-on device like a Raspberry Pi, a NAS or an Intel NUC or alike.
At a glance
- What is it?
- Music Assistant Server is an open source media library manager that ties streaming services to local speakers. It is built for Home Assistant automation, not for standalone use.
- Who is it for?
- Adopt Music Assistant Server if you run Home Assistant and want a single media library that spans streaming services and local speakers, with automation as the goal. Skip it if you need a plain pip installable Python package or if you lack an always-on device like a Raspberry Pi or NAS.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Music Assistant Server Actually Does
Music Assistant Server is a media library manager that connects streaming services to a wide range of connected speakers. The README calls it the core of Music Assistant, and it must run on an always-on device like a Raspberry Pi, a NAS, or an Intel NUC. The project is free and open source under Apache-2.0. Its primary audience is Home Assistant users, because the server is tailored to run side by side with Home Assistant and is meant with automation in mind. If you want a single library that spans Spotify, local files, and multiple speaker brands, this server is the aggregation point. It is not a music player itself; it is the backend that coordinates what plays where.
The Home Assistant First Design Choice
The README is explicit: Music Assistant can be operated as a complete standalone product, but it is actually tailored to use side by side with Home Assistant. That is a design decision with consequences. The recommended installation method is to run the server as a Home Assistant app, meaning the primary supported path is through the Home Assistant add-on repository. The project even provides a badge and a repository URL for adding the add-on directly via my.home-assistant.io. For automation, this makes sense: the server exposes media state and control to Home Assistant, so you can trigger playlists based on presence or time. But it also means the server is not designed as a neutral, standalone daemon. If you do not use Home Assistant, you are on a secondary path, and the documentation likely reflects that priority.
Why There Is No PyPI Package
A notable constraint is that the server is not published to PyPI. The README explains why: although the main code is Python, it depends on external OS components. You need a recent ffmpeg (6.1 or newer) with a specific codec set, native libraries such as jemalloc and CIFS/NFS client libraries, and a few bundled binaries. A plain pip install cannot provide those. This is a real friction point for developers who expect a Python project to be pip installable. The project's stance is that you should run the server via the Home Assistant app or the Docker container, both of which bundle every system dependency. For users, that is a convenience; for developers, it means you must set up your own environment if you want to hack on the code.
Running the Server: Commands and Config
The README gives two supported installation methods: the Home Assistant app and the Docker container at ghcr.io/music-assistant/server. For local development, you need Python 3.14 or newer and ffmpeg 6.1 or newer. The setup script is scripts/setup.sh, which creates a virtualenv and installs dependencies and pre-commit hooks. To run the server locally, you execute python -m music_assistant --log-level debug, and it listens on http://localhost:8095. Tests are run with pytest, and pre-commit run --all-files runs the linters. There are no config keys listed in the README, so configuration details must come from the documentation site. The log-level flag is the only visible runtime option, which suggests a configuration file or environment variables are documented elsewhere.
A Genuine Limitation: The Dependency Bundle
The most obvious failure mode is the dependency bundle. The README warns that a recent ffmpeg with a specific codec set is required, along with native libraries like jemalloc and CIFS/NFS client libraries. If your always-on device runs a minimal Linux distribution or a NAS with a restricted package set, you might struggle to satisfy those dependencies. The project mitigates this by bundling everything in the Docker container, but that assumes you are comfortable with Docker. If you are on an older device that cannot run a recent ffmpeg, or if your NAS does not support Docker, the server may not work at all. The README does not list supported architectures, so you cannot assume ARM64 or x86_64 will both work. This is a case where the project's own constraints narrow the hardware choices.
The Alternative: A Dedicated Media Server
A real alternative is a dedicated media server like Jellyfin or Navidrome, which you can install directly on a NAS or a small PC without Home Assistant. The difference in approach is that those projects are standalone: they manage a music library, serve it over the network, and often have their own web interface and mobile apps. Music Assistant Server, by contrast, is designed to be orchestrated by Home Assistant. If your goal is just to play music from a web UI or a mobile app, a dedicated server might be simpler. But if your goal is to automate music playback based on home automation events, Music Assistant Server's integration with Home Assistant is the differentiator. The README does not compare itself to these alternatives, but the design choice is clear from the recommended installation method.
Maintenance and Upgrade Cost
The repository shows active development: the default branch is dev, and recent releases include a nightly build 2.11.0.dev2026082903 and a stable 2.10.1. The last push was on 2026-08-29, so the project is under active maintenance. The upgrade cost depends on your installation method. If you use the Home Assistant app, updates likely come through the add-on repository, which is a low-effort path. If you use Docker, you pull a new image from ghcr.io/music-assistant/server. Running from source is more involved because you must update dependencies and re-run scripts/setup.sh. The Apache-2.0 license is permissive, so there are no copyleft obligations, but you should note that the project's own documentation and support channels are on GitHub, and issues go to a separate support repository. The README does not mention a migration path between versions, so you should check the release notes before upgrading a production setup.
Editorial conclusion
Adopt Music Assistant Server if you run Home Assistant and want a single media library that spans streaming services and local speakers, with automation as the goal. Skip it if you need a plain pip installable Python package or if you lack an always-on device like a Raspberry Pi or NAS. Before adopting, verify your ffmpeg version is 6.1 or newer and check the documentation at music-assistant.io for the specific codec set and native libraries your OS must provide. The project's own README is clear that a plain PyPI install is not supported, so plan for the Docker container or the Home Assistant app from day one.
Community notes