Introduction
SwiftSonic is a native Swift client for the Subsonic and OpenSubsonic APIs.
It implements the official specifications, exposes a strongly-typed async/await surface, and ships zero third-party dependencies. The current release is 0.6.1, distributed under the MIT license.
What it is
Section titled “What it is”- A pure Swift client for any Subsonic-compatible server.
- Strict spec compliance — nothing server-specific. If a behaviour is not in the Subsonic or OpenSubsonic specification, it does not live in SwiftSonic.
- Built on
URLSessiononly. No Alamofire, no swift-nio, no transitive HTTP stack. - Sendable types end-to-end, ready for Swift 6 strict concurrency.
What it is not
Section titled “What it is not”SwiftSonic is unopinionated and intentionally narrow:
- No caching layer. You decide where to persist responses.
- No audio playback. Pair it with
AVFoundationor any player you like. - No UI. SwiftUI/UIKit is out of scope.
- No server-specific extensions. Navidrome, Airsonic, Gonic and friends only get first-class support for the parts they implement from the spec.
This split keeps the library small, auditable, and easy to integrate into any architecture.
Who it is for
Section titled “Who it is for”Developers building Swift apps that talk to a self-hosted music server: clients, sync tools, scripts, server probes, automation. If you need a dependency-free Subsonic client that compiles cleanly under Swift 6, this is for you.
Where to go next
Section titled “Where to go next”- Installation — add SwiftSonic to your project.
- Your first request — five lines that work.
- Authentication — token vs password, custom headers.