Native macOS client for Spotify and Apple Music in a glass-style SwiftUI shell: Spotify through its Web API and Web Playback SDK, Apple Music through MusicKit.
Get started · Build and test · Release artifact · Documentation
- Spotify and Apple Music side by side. Switch with the service at the top left of the sidebar (⌃1 Apple Music, ⌃2 Spotify); each keeps its own sign-in, pins and place.
- Playlist and track browsing with sidebar pins, queue, artist pages, and command palette search.
- In-app playback: Spotify through the Web Playback SDK in a hidden
WKWebView, Apple Music through MusicKit's player. - Appearance controls for System, Light, or Dark, plus command palette backdrop blur.
- Keychain-backed refresh tokens, local playlist cache, and keyboard shortcuts you can remap in Settings.
| Command palette (⌘K) | Playlist |
|---|---|
![]() |
![]() |
All screenshots are the real app, captured in screenshot mode with a sample library (no Spotify account involved).
- macOS 26 or newer.
- Apple Music: an Apple Music subscription for playback. Nothing to set up.
- Spotify: a Spotify Developer app client ID (PKCE public client; no client secret) and Spotify Premium for Web Playback SDK streaming.
- To build from source: Xcode that matches the project deployment target.
See Limitations for signed releases versus preview builds, Gatekeeper, and operational constraints.
- Download the signed
.dmgfrom the latest release, or openSpotiglass.xcodeprojand run the Spotiglass scheme. - On the welcome screen, pick the service you listen on.
- Apple Music: allow access when macOS asks.
- Spotify: create a Spotify app in the Spotify Developer Dashboard, enable Web Playback SDK, set the redirect URI to
http://127.0.0.1:43824/callback, then paste the client ID and connect.
- Add the other service any time with Add a service… at the top left of the sidebar.
Setup details, OAuth scopes, and manual playback checks: Getting started and Apple Music.
From the repository root:
make build
make test
make runUnsigned Release bundle (same layout as CI):
make releaseOutput: build/DerivedData/Build/Products/Release/Spotiglass.app.
For raw xcodebuild commands, test-host Keychain behavior, and icon pipeline notes, see Building and testing.
The GitHub Actions workflow Release artifact runs unit tests, builds an unsigned Release Spotiglass.app, and uploads it for 14 days. It is a preview for testing a branch, not a release: CI and releases.
| Guide | Description |
|---|---|
| Getting started | Spotify dashboard setup, OAuth scopes, first run |
| Apple Music | Adding Apple Music, switching services, what maps where, known gaps |
| Building and testing | make, xcodebuild, local Release bundle |
| CI and releases | Workflow dispatch artifact, Gatekeeper |
| Data storage | Keychain, cache paths, settings.json |
| Pinning | Sidebar pins and drag targets |
| Screenshots | Screenshot mode: capture the real UI with sample data |
| Limitations | Premium, signing, API limits |
The README logo is exported from the app icon pipeline:
scripts/generate_readme_logo.shUse scripts/generate_readme_logo.sh --rebuild to force a fresh unsigned Release build first.
If Spotiglass has been useful and you want to support ongoing development:
- Buy Me a Coffee — tips fund releases and docs; see SUPPORT.md for details.
Open an issue describing the change you want to make before opening a pull request so scope and direction stay aligned.
See LICENSE. Personal, non-commercial use is permitted under the repository license; commercial or organizational use requires a separate written license from the copyright holder.




