A minimal Spotify player for macOS.
Native, responsive, and typically uses around 120 MB of RAM.
- Search tracks and playlists
- Play music locally with queue, history, favorites, and radio
- Browse native artist and album pages
- Pin playlists to the sidebar
- Now Playing and media key controls
- Light, dark, and system appearances
- Optional pixel-art player mascot
- Persistent playback and library state
Rust + GPUI + librespot + rspotify + SQLite + CPAL
GPUI renders the native GPU-accelerated interface, librespot handles playback through CPAL, rspotify connects to the Spotify Web API, and SQLite keeps local state.
Cadence requires macOS and Spotify Premium. On first launch, Cadence guides you through creating a Spotify developer app and entering its Client ID. Client IDs are public; Cadence never needs your client secret.
- Create an app in the Spotify Developer Dashboard.
- Add
http://127.0.0.1:8888/callbackas a redirect URI. - Copy the Client ID from Basic Information and enter it in Cadence.
Cadence stores the Client ID in app preferences and keeps login and playback tokens in macOS Keychain.
Building Cadence requires Rust and Apple's Metal Toolchain. Developers can skip
the setup screen by setting SPOTIFY_CLIENT_ID at launch:
SPOTIFY_CLIENT_ID="your-client-id" cargo runFor a stable local signature and fewer Keychain prompts during development:
SPOTIFY_CLIENT_ID="your-client-id" ./scripts/run-signed.shVersion tags publish a signed and notarized DMG with a SHA-256 checksum on the
releases page. Maintainers set
up the signing secrets once with scripts/setup-release-signing.sh.
Release builds do not include a shared Spotify Client ID. Each person configures
their own Spotify developer app on first launch. The logo attribution is in
THIRD_PARTY_NOTICES.md.
