The best native desktop and mobile music player for Jellyfin and Emby
578
stars
491
commits
Dart
primary language
Sep 11, 2026
updated
The best native music player for your Jellyfin or Emby server - on macOS, Windows, Linux, iOS(including CarPlay) and Android.
JellyBox is an unofficial, audio-only client for Jellyfin and Emby. It focuses on doing one thing well: making your own music library feel like a modern streaming app - fast browsing, offline downloads, lyrics, and artwork-driven theming - with a UI built for each platform rather than a single stretched layout.
[!IMPORTANT] JellyBox is a client, not a server. You need access to a running Jellyfin or Emby server with a music library on it.
| Platform | Format | |
|---|---|---|
| iOS / iPadOS / macOS | App Store | |
| macOS | .dmg (signed & notarized) | Latest release |
| Windows | Installer .exe or portable .zip | Latest release |
| Linux | .AppImage, .deb, .rpm or .tar.gz bundle (x64 & arm64) | Latest release |
| Android | .apk | Latest release |
Google Play distribution is on the way, need to wait 2 weeks during closed beta period.
Library & browsing
Playback
Offline
Look & feel
Desktop & system integration
playerctl)
Studio Mode - full-screen animated mode made for aesthetic
![]() | ![]() |
| Time-synced lyrics | Songs |
![]() | ![]() |
| Search | Album |
![]() | ![]() |
| Artist | Downloads |
![]() | ![]() | ![]() | ![]() | ![]() |
| Now playing | Lyrics | Albums | Artist | Downloads |
macOS does not let an app read media keys without permission. On first use JellyBox will point you at System Settings → Privacy & Security → Accessibility; enable JellyBox there. If it isn't in the list, add it with the + button.
The installer is unsigned, so SmartScreen will warn on first run - choose More info → Run anyway. The portable zip has no installer and can be run from anywhere.
Builds are distributed as APKs from the releases page. You'll need to allow installs from your browser or file manager.
The release bundle expects a few shared libraries. On Debian/Ubuntu:
sudo apt-get install libmpv-dev mpv libsecret-1-dev libsqlite3-dev libjsoncpp-dev libcurl4-openssl-dev libdbus-1-dev
Prerequisites - Flutter with Dart SDK 3.8 or newer, plus the toolchain for whichever platform you're targeting (Xcode, Android Studio, or the Linux packages above).
git clone https://github.com/avdept/JellyBoxPlayer.git
cd JellyBoxPlayer
flutter pub get
dart run build_runner build --delete-conflicting-outputs # freezed, json_serializable, retrofit
flutter run # then pick a target device
Run the tests with flutter test, and the analyzer with flutter analyze - CI runs both on every push.
Codegen is needed whenever you touch a model, DTO or API client; those *.g.dart and *.freezed.dart files are generated, not hand-edited.
Bug reports, feature requests and pull requests are all welcome - see CONTRIBUTING.md for the workflow.
GNU AGPL-3.0 © ProdigyTech Inc.
Dart
91.4%
Swift
2.8%
C++
1.7%
CMake
1.4%
Ruby
1.2%
The best native desktop and mobile music player for Jellyfin and Emby
578
stars
491
commits
Dart
primary language
Sep 11, 2026
updated
The best native music player for your Jellyfin or Emby server - on macOS, Windows, Linux, iOS(including CarPlay) and Android.
JellyBox is an unofficial, audio-only client for Jellyfin and Emby. It focuses on doing one thing well: making your own music library feel like a modern streaming app - fast browsing, offline downloads, lyrics, and artwork-driven theming - with a UI built for each platform rather than a single stretched layout.
[!IMPORTANT] JellyBox is a client, not a server. You need access to a running Jellyfin or Emby server with a music library on it.
| Platform | Format | |
|---|---|---|
| iOS / iPadOS / macOS | App Store | |
| macOS | .dmg (signed & notarized) | Latest release |
| Windows | Installer .exe or portable .zip | Latest release |
| Linux | .AppImage, .deb, .rpm or .tar.gz bundle (x64 & arm64) | Latest release |
| Android | .apk | Latest release |
Google Play distribution is on the way, need to wait 2 weeks during closed beta period.
Library & browsing
Playback
Offline
Look & feel
Desktop & system integration
playerctl)
Studio Mode - full-screen animated mode made for aesthetic
![]() | ![]() |
| Time-synced lyrics | Songs |
![]() | ![]() |
| Search | Album |
![]() | ![]() |
| Artist | Downloads |
![]() | ![]() | ![]() | ![]() | ![]() |
| Now playing | Lyrics | Albums | Artist | Downloads |
macOS does not let an app read media keys without permission. On first use JellyBox will point you at System Settings → Privacy & Security → Accessibility; enable JellyBox there. If it isn't in the list, add it with the + button.
The installer is unsigned, so SmartScreen will warn on first run - choose More info → Run anyway. The portable zip has no installer and can be run from anywhere.
Builds are distributed as APKs from the releases page. You'll need to allow installs from your browser or file manager.
The release bundle expects a few shared libraries. On Debian/Ubuntu:
sudo apt-get install libmpv-dev mpv libsecret-1-dev libsqlite3-dev libjsoncpp-dev libcurl4-openssl-dev libdbus-1-dev
Prerequisites - Flutter with Dart SDK 3.8 or newer, plus the toolchain for whichever platform you're targeting (Xcode, Android Studio, or the Linux packages above).
git clone https://github.com/avdept/JellyBoxPlayer.git
cd JellyBoxPlayer
flutter pub get
dart run build_runner build --delete-conflicting-outputs # freezed, json_serializable, retrofit
flutter run # then pick a target device
Run the tests with flutter test, and the analyzer with flutter analyze - CI runs both on every push.
Codegen is needed whenever you touch a model, DTO or API client; those *.g.dart and *.freezed.dart files are generated, not hand-edited.
Bug reports, feature requests and pull requests are all welcome - see CONTRIBUTING.md for the workflow.
GNU AGPL-3.0 © ProdigyTech Inc.
Dart
91.4%
Swift
2.8%
C++
1.7%
CMake
1.4%
Ruby
1.2%