An unofficial mobile client for Music Assistant
Stream your music library directly to your phone, or control playback on any connected speaker.
Ensemble is an unofficial, community-built mobile client for Music Assistant. It is not affiliated with, endorsed by, or supported by the Music Assistant project or its developers.
This application was built with AI-assisted development using Claude Code and Gemini CLI.
- Stream to Your Phone - Play music from your Music Assistant library directly on your mobile device via Sendspin protocol
- Background Playback - Music continues playing when the app is minimized
- Media Notifications - Control playback from your notification shade with album art display
- Instant Response - Pause/resume in ~300ms
- Multi-Player Support - Control any speaker or device connected to Music Assistant
- Device Selector - Swipe down on mini player to reveal all your devices
- Multi-Room Grouping - Long-press any player to sync it with the current player
- Full Playback Controls - Play, pause, skip, seek, and adjust volume
- Volume Precision Mode - Hold the volume slider for fine-grained control with haptic feedback
- Power Control - Turn players on/off directly from the mini player
- View & Manage Queue - See upcoming tracks in the playback queue
- Drag to Reorder - Instant drag handles for reordering tracks
- Swipe to Delete - Remove tracks with a simple swipe gesture
- Customizable Rows - Toggle and reorder: Recently Played, Discover Artists, Discover Albums
- Favorites Rows - Optional rows for Favorite Albums, Artists, Tracks, Playlists, and Radio Stations
- Adaptive Layout - Rows scale properly for different screen sizes and aspect ratios
- Pull to Refresh - Refresh content with a simple pull gesture
- Music - Browse artists, albums, playlists, and tracks from all your music sources
- Radio Stations - Browse and play radio stations with list or grid view
- Podcasts - Browse podcasts, view episodes with descriptions and publish dates
- Audiobooks - Browse by title, series, or author with progress tracking
- Favorites Filter - Toggle to show only your favorite items
- Letter Scrollbar - Fast navigation through long lists
- Universal Search - Find music, podcasts, radio stations, playlists, and audiobooks
- Fuzzy Matching - Typo-tolerant search (e.g., "beetles" finds "Beatles")
- Smart Scoring - Results ranked by relevance with colored type indicators
- Search History - Quickly access your recent searches
- Quick Actions - Long-press any result to add to queue or play next
- Chapter Navigation - Jump between chapters with timestamp display
- Progress Tracking - Track your listening progress across sessions
- Continue Listening - Pick up where you left off
- Mark as Finished/Unplayed - Manage your reading progress
- Series Support - View audiobooks organized by series with collage cover art
- Episode Browser - View full episode list with artwork and descriptions
- Skip Controls - Skip forward/backward during playback
- High-Resolution Artwork - Fetched via iTunes for best quality
- Instant App Restore - App loads instantly with cached library data while syncing in background
- Auto-Reconnect - Automatically reconnects when connection is lost
- Offline Browsing - Browse your cached library even when disconnected
- Hero Animations - Smooth transitions between screens
- Welcome Screen - Guided onboarding for first-time users
- Material You - Dynamic theming based on your device's wallpaper
- Adaptive Colors - Album artwork-based color schemes
- Light/Dark Mode - System-aware or manual theme selection
Download the latest release from the Releases page.
- Launch the app
- Enter your Music Assistant server URL
- Connect to your server
- Start playing! Music plays on your phone by default, or swipe down on the mini player to choose a different player.
Important: You need the Music Assistant URL, not your Home Assistant URL.
To find the correct URL:
- Open Music Assistant web UI
- Go to Settings > About
- Look for Base URL (e.g.,
http://192.168.1.100:8095)
If you run Music Assistant as a Home Assistant add-on:
- Use the IP address of your Home Assistant server
- Enter
8095in the port field - Do not use your Home Assistant URL or ingress URL
For access outside your home network, you'll need to expose Music Assistant through a reverse proxy (e.g., Nginx Proxy Manager, Cloudflare Tunnel).
Ensemble supports multiple authentication methods:
| Method | Status |
|---|---|
| Music Assistant native auth | Tested |
| No authentication | Tested |
| Authelia | Implemented, not recently tested |
| HTTP Basic Auth | Implemented, not recently tested |
Note: Development and testing is done against Music Assistant beta with native authentication enabled.
- Music Assistant server (v2.7.0 beta 20 or later recommended)
- Network connectivity to your Music Assistant server
- Android device (Android 5.0+)
- Audiobookshelf provider configured in Music Assistant (for audiobook features)
MIT License
Build from Source
- Flutter SDK (>=3.0.0)
- Dart SDK
- Clone the repository
git clone https://github.com/CollotsSpot/Ensemble.git
cd Ensemble- Install dependencies
flutter pub get- Generate launcher icons
flutter pub run flutter_launcher_icons- Build APK
flutter build apk --releaseThe APK will be available at build/app/outputs/flutter-apk/app-release.apk
Technologies Used
- Flutter - Cross-platform mobile framework
- audio_service - Background playback and media notifications
- web_socket_channel - WebSocket communication with Music Assistant
- provider - State management
- cached_network_image - Image caching
- shared_preferences - Local settings storage









