The best native music player for your Jellyfin server - on macOS, Windows, Linux, iOS(including CarPlay) and Android.
JellyBox is an unofficial, audio-only client for Jellyfin. 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 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 | .tar.gz bundle (x64) |
Latest release |
| Android | .apk |
Latest release |
Google Play distribution is on the way, need to wait 2 weeks during closed beta period.
Library & browsing
- Browse albums, artists, genres, playlists and songs across multiple music libraries
- Search everything at once, or filter to playlists, albums, artists or songs
- Artist pages with biography and full discography
- Favourite tracks, synced back to your Jellyfin server
- Create playlists and add tracks to them from anywhere in the app
- Home page - in development
Playback
- Playback memory - app remembers your queue and playback position between restarts
- Time-synced lyrics overlay
- Queue management with shuffle, repeat and a randomised "surprise me" queue
- Per-connection streaming profiles with automatic transcoding when a codec isn't supported natively
- Audio quality badge, so you always know whether you're getting the original file
Offline
- Download albums and tracks for offline listening
- Full offline mode - access to your downloaded tracks even if you're on plane.
Look & feel
- Colour scheme generated from the current album artwork
- Studio Mode - a full screen animated mode for aesthetic feel(see screenshots)
Desktop & system integration
- Media keys and global keyboard shortcuts
- MPRIS support on Linux (works with GNOME/KDE media widgets and
playerctl) - AirPlay and system output routing on macOS and iOS
- Lock screen and notification controls on iOS and Android
- In-app changelog, so you can see what landed in each release
- Apple CarPlay - currently in beta stage.
- Android auto - in development
![]() |
![]() |
| Time-synced lyrics | Songs |
![]() |
![]() |
![]() |
![]() |
![]() |
| 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-devPrerequisites - 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 deviceRun 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.











