Sonora is a cross-platform music and video streaming app built with Flutter. It uses YouTube Music as its data source, offering a rich and customizable experience on Android and Linux desktop.
If you enjoy Sonora and want to support its development, a small donation is always appreciated:
| Wide (desktop) | Tablet | Mobile |
|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- YouTube Music streaming — search, browse, and play songs, albums, artists, playlists, and music videos directly from YouTube Music
- Background playback — keep listening/watching while using other apps, with a persistent notification on Android
- Audio & Video support — switch between audio-only and video playback seamlessly
- Android Auto — full driving support with playback controls, browse, and sleep timer
- Casting — stream audio to Chromecast and DLNA devices (WiFi speakers, Smart TVs)
- Offline downloads & playback — save songs locally for offline listening with zero-network local playback support
- Explicit Offline Mode — manual switch to override device network status and browse/play locally cached tracks only
- Connectivity awareness — global warning banner when offline, automatic connection restoration cues, and friendly network error handling
- Local library — save favorite songs, albums, artists, and playlists; create custom playlists
- YouTube Playlist Syncing — import and synchronize remote YouTube Music playlists into local database
- Smart Playlists (Auto-mixes) — dynamic automatically generated playlists based on listening history (Most Played, Recently Played, Forgotten Favorites)
- Listening history — track your listened songs
- Search — search songs, albums, artists, playlists, and music videos
- 5-Band Equalizer — customize audio gain (-12dB to +12dB) across 5 bands (Bass, Mid-Bass, Mid, Mid-High, High) with pre-built presets managed natively through
media_kitFFmpeg audio filters - Listening Stats & Sonora Wrapped — offline-first dashboard summarizing total listening time, Top Songs, Top Artists, hourly/weekly listening charts, and a timed Instagram/Spotify-style stories view for sharing your Sonora Wrapped
- Adaptive UI & Overlays — optimized layouts for mobile, tablet, and wide screens (NavigationBar / NavigationRail / NavigationDrawer). Temporary panels (Equalizer, Casting, Sleep Timer, Sync Panel) adaptively display as centered dialogs on wide desktops and modal bottom sheets on mobile.
- Themes — light, dark, and AMOLED themes, with Dynamic Color support on Android 12+
- Crossfade — smooth transitions between songs (configurable duration)
- Sleep timer — stop playback after a set time
- Linux desktop — system tray, MPRIS global controls (D-Bus), resizable window
- Auto-update — automatic update check via GitHub Releases
- Headless CLI — control Sonora from the terminal: search, play, download, and manage library without the GUI
- Backup & restore — export and import your local library
- P2P Local Synchronization — synchronize your music library (likes, playlists, history) peer-to-peer over Wi-Fi between multiple Sonora instances (Android & Linux) without cloud dependencies
- Localization — Italian and English
| Platform | Status |
|---|---|
| Android | ✅ (API 24+) |
| Linux | ✅ (x64) |
| Windows | ❌ (not planned) |
| macOS | ❌ (not planned) |
| iOS | ❌ (not planned) |
| Component | Library |
|---|---|
| Framework | Flutter 3.44+ |
| State Management | Riverpod 3.x |
| Navigation | go_router 17.x |
| Local Database | Drift (ex Moor) |
| Media Playback | media_kit + audio_service |
| YouTube Music API | dart_ytmusic_api |
| Stream URL | youtube_explode_dart |
| Casting | dart_cast |
| Themes | dynamic_color, palette_generator |
| Downloads | Dio |
| CLI | args 2.x |
| Notifications | flutter_local_notifications |
Clean Architecture with three layers:
lib/
├── core/ # Constants, themes, utilities, extensions
├── data/ # Data sources (remote YTM, local Drift) + repository implementations
├── domain/ # Models, repository interfaces, use cases
├── presentation/ # Riverpod providers, widgets, screens, router
└── l10n/ # EN / IT localization
- Flutter SDK 3.44+ (stable channel)
- Android Studio (for Android builds)
- Linux:
clang,cmake,ninja,libgtk-3-dev,pkg-config
git clone https://github.com/gmstyle/sonora.git
cd sonora
# Generate Drift code
dart run build_runner build --delete-conflicting-outputs
# Generate localizations
flutter gen-l10n
# Run in debug mode
flutter run
# Android release build
flutter build apk --release
# Linux release build
flutter build linux --releasecurl -fsSL https://raw.githubusercontent.com/gmstyle/sonora/dev/install.sh | bash
sonora search "the beatles" --limit 5See CLI documentation for all commands and options.
Download the latest release from GitHub Releases:
- Android: signed APK ready to install
- Linux:
sonora-linux-x64.tar.gzwith install scripts
- CLI documentation — headless terminal usage: search, play, download, library, history
- Developer documentation — detailed guide on architecture, database, audio engine, and conventions
- Report bugs or request features via GitHub Issues
- Pull requests are welcome!
flutter analyze # Static analysis
flutter test # Run tests
dart run build_runner build --delete-conflicting-outputs # Regenerate Drift code
flutter gen-l10n # Regenerate localizationsDistributed under the MIT License. See LICENSE for more information.
Sonora is a independent project and is not endorsed by YouTube or Google. Sonora does not collect any personal data or information, it does not host, distribute or sell any copyrighted material. All content is the property of the respective content owners. Sonora is for educational purposes only. The developer not encourage any illegal activity and not responsible for any illegal use of the software.





