A modern cross-platform music client for crossonic-server and other (Open)Subsonic compatible music servers.
This app is still in development. Some features are missing and bugs are to be expected.
Please report any issues or feature requests.
This app should be compatible with all Subsonic compatible servers, but I recommend to only use servers implementing the OpenSubsonic standard. For the best experience (and full feature support) I recommend using crossonic-server.
Release builds exist for these platforms:
- Windows (
.exeinstaller,.zip) - macOS (
.dmg) - Linux (
.AppImage,.tar.gz) - Android (
.apk) - Web (
.zipof static files), with some caveats:- some features are disabled
- poor performance on some platforms/browsers
- limited support for transcoded playback (depends on browser)
- no gapless playback
- sub-optimal image caching
iOS builds are not available because I do not have a paid Apple Developer account. However, the app does work on iPhones and iPads if you build and sign it yourself.
- Desktop and mobile layout
- Configurable home page
- Respects light/dark theme and accent color
- System integration (Android media API, MPRIS, SystemMediaTransportControls, …)
- Android Auto
- Currently only playlists
- Close to tray
- Stream original or transcoded media
- Configurable transcoding settings for WiFi and mobile
- Browse/search songs, albums, artists
- Release types (albums, EPs, singles, live, compilations, …)
- Release versions (Deluxe, Remaster, different release years, etc.)
- Favorite songs/albums/artists
- Playlists
- Download for offline listening
- Original (uses download endpoint)
- Transcoded
- Add songs/albums/artists
- Drag&drop reorder
- Change cover (crossonic-server only)
- Download for offline listening
- Configure ListenBrainz connection (crossonic-server only)
- Full OpenSubsonic support (gracefully handles missing features on the server)
- API Key Authentication
- Transcoded seek
- Multiple artists/genres/…
- etc.
- Two queue system
- Normal queue
- Automatically populated when listening to an album/artist/playlist
- Priority queue
- For songs you want to listen now before continuing with the normal queue
- Both can be freely modified
- Normal queue
- Shuffle artists by song or by album
- Gapless playback
- Lyrics
- Unsynced
- Synced
- Replay gain
- Casting (AirPlay on iOS and macOS already works)
- Load/save queues
- Internet Radio
- Pre-cache next x songs for spotty networks
- Jukebox
- End-of-year recap
The OpenSubsonic API supports some features that are out-of-scope for this application:
- Video support
- Podcasts
- Chat
Installation instructions are available on the Crossonic website.
Install Flutter with all dependencies for your desired target platform.
IMPORTANT: Some Flutter versions cause issues e.g. with routing. Always use the Flutter version specified in this line of the release workflow when building this project.
Clone the repository
git clone https://github.com/juho05/crossonic
cd crossonicRun code generation:
dart run build_runner build- Install
libmpv - Install
ayatana-appindicator3-0.1orappindicator3-0.1
sudo apt install mpv libmpv-dev libayatana-appindicator3-devsudo pacman -S mpv libayatana-appindicatorIn the directory of the repository run:
flutter build linuxIn the directory of the repository run:
flutter build windowsIn the directory of the repository run:
flutter build macosIn the directory of the repository run:
flutter build apk- Select your development team in Xcode
- Open
./ios/Runner.xcworkspacein Xcode - Select
Runnerin the project navigator - Open the
Signing & Capabilitiestab and configure your signing config
- Open
In the directory of the repository run:
# to build an archive
flutter build ios
# to build a signed ipa file
flutter build ipaIn the directory of the repository run:
flutter build web --wasmNow you can serve ./build/web with a web server like Caddy.
- Use TLS (
https) if not onlocalhost - Ensure that
/sqlite3.wasmis served withContent-Type: application/wasm - Set
Cross-Origin-Opener-Policytosame-origin - Set
Cross-Origin-Embedder-Policytorequire-corporcredentialless
Copyright (c) 2024-2025 Julian Hofmann
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.





