Native macOS Spotify client with OAuth PKCE, the Spotify Web API, and Web Playback SDK playback in a glass-style SwiftUI shell.
Get started · Build and test · Release artifact · Documentation
- Signed-in playlist and track browsing with sidebar pins, queue, artist pages, and command palette search.
- In-app playback through the Spotify Web Playback SDK in a hidden
WKWebView. - 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.
- macOS 26 or newer with Xcode that matches the project deployment target.
- A Spotify Developer app client ID (PKCE public client; no client secret).
- Spotify Premium for Web Playback SDK streaming.
See Limitations for unsigned local builds, Gatekeeper, and operational constraints.
- Create a Spotify app in the Spotify Developer Dashboard.
- Enable Web Playback SDK and set redirect URI to
http://127.0.0.1:43824/callback. - Open
Spotiglass.xcodeprojand run the Spotiglass scheme. - Paste the client ID, connect Spotify, then browse playlists and play tracks.
Setup details, OAuth scopes, and manual playback checks: Getting started.
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. Download and first-launch steps: CI and releases.
| Guide | Description |
|---|---|
| Getting started | Spotify dashboard setup, OAuth scopes, first run |
| 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 |
| 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.
