Your whole library. One native app.

Spotify, YouTube Music, Subsonic and your local files in a single window. Written in Rust on GPU-accelerated GPUI — not a browser in a costume.

$ brew install --cask nolight132/tap/sonora

Free and open source · macOS, Linux, Windows · No account required

Sonora playing an album with the lyrics panel open An artist page in Sonora with the play queue open
Adaptive theming, switchable in Appearance
One player, four sources
Spotify YouTube Music Subsonic Local files

Install in one line.

Prebuilt binaries for every platform, plus a Nix flake and a Home Manager module.

Install with Homebrew
brew install --cask nolight132/tap/sonora
Clear the quarantine flag
xattr -dr com.apple.quarantine /Applications/Sonora.app

Apple quarantines unsigned apps, so the second command is required after a first install.

Built like a desktop app,
because it is one.

GPUI renders the whole interface on the GPU. Playback, library and lyrics all run in the same Rust process.

Gapless playback

Tracks run into each other the way the record intended, across every provider.

Audio normalization

Levels stay even when a playlist jumps between a 2003 master and a 2024 one.

Synced and karaoke lyrics

Line-by-line and word-by-word timing, with romanization for non-Latin scripts.

One library, many sources

Follow, like and organise inside each provider without leaving the app.

Custom themes

Eight built-in looks plus system, adaptive tinting, and every token overridable.

Cross-platform, natively

One Rust binary on macOS, Linux and Windows. No Electron, no bundled browser.

Eight looks, plus your own.

Dark, light, midnight, forest, ocean, rose, lavender, amber — or follow the system. Adaptive tinting takes its colour from the artwork, and every token underneath is overridable.

An artist page in Sonora with the play queue open Sonora in its dark theme with the lyrics panel open
Artists, releases, queue Dark, tinted by the record
Sonora in its light theme showing full-screen synced lyrics
Light, full-screen lyrics

Speaks 11 languages

518 strings, translated by the community and tracked in the repo. 2 are complete — the rest are a pull request away.

  • English en-US
  • Polski pl
  • Bahasa Indonesia id
  • Español es
  • Português (Brasil) pt-BR
  • 日本語 ja
  • Русский ru
  • Українська uk
  • Deutsch de
  • Français fr
  • Italiano it
Add a language

Come hang out

Discord is where most of it happens, bridged to Matrix.