Skip to content

Repository files navigation

SynoMusic

A beautiful, native iOS music client for self-hosted music libraries.

English · 简体中文 · 日本語 · 한국어

Commercial Website · Privacy Policy · Terms of Use · Latest Release

SynoMusic gives personal music libraries a clean, fast, iOS-native experience: browse, search, play, sync favorites and custom playlists, listen to global radio, and control everything from the Lock Screen and Dynamic Island. The commercial App Store version is positioned for multiple music sources including Synology Audio Station, Plex, Jellyfin, Emby, WebDAV, SMB, and local files.

Open-source edition

This repository contains the open-source SynoMusic iOS app, including the main app target, Live Activity extension, local playlist/download storage, Synology Audio Station API client, and the GitHub Pages support site. The GitHub Pages homepage is also used as the public marketing website and legal/support site for the commercial App Store version; commercial-only implementation is not mirrored here.

  • You bring your own music server, account, media files, and permissions. No demo server, proxy service, or bundled credentials are included.
  • The open-source code currently focuses on Synology Audio Station; the App Store version may include additional private integrations such as Plex, Jellyfin, Emby, WebDAV, SMB, local imports, subscriptions, and review-mode behavior.
  • The release IPA is provided for convenience; building from source requires your own Apple signing team in Xcode.
  • Credentials are stored in the iOS Keychain, and downloaded songs stay inside the app sandbox.
  • Screenshots and examples in this repository use anonymized sample data. Please avoid committing private NAS hosts, QuickConnect IDs, or account information.

Screenshots

Library Browse Settings
Library Browse Settings
Full Player Server Editor
Player Editor

Latest release: 1.3.5

  • Keeps the player button state accurate when another app interrupts audio.
  • Restores SynoMusic playback automatically after the external interruption ends.
  • See CHANGELOG.md for the full release notes.

Features

  • Self-hosted first: Multi-server profiles with Keychain credentials, 2FA (OTP), self-signed certificate trust, HTTPS/QuickConnect where supported
  • Streaming: AVQueuePlayer, automatic raw → MP3 transcode fallback when a format is unsupported, AirPlay, CarPlay-compatible Remote Command Center
  • Library: Albums, Artists, Genres, Folders, Server playlists, All Songs with paginated load and sort
  • Local playlists: Multiple custom playlists, "Favorites" as a pinned built-in, batch edit, multi-add via sheet
  • Radio: 30,000+ stations via the public Radio-Browser API, by country / tag / search
  • Player: Full-screen player with live lyrics, queue editing, sleep timer (presets, custom, time-of-day), tap cover ↔ lyrics
  • System integration: Lock Screen Now Playing, Dynamic Island Live Activity (compact, minimal, expanded), MPRemoteCommand
  • Theming: 8 accent color palettes + system / light / dark appearance
  • Languages: Simplified Chinese, Traditional Chinese, English, Japanese, Korean, German, French
  • Offline: Per-song downloads stored in the app sandbox

Requirements

  • iPhone running iOS 17 or later
  • Xcode 26 or newer when building from source
  • For this open-source build: a Synology NAS with Audio Station installed and the target user granted Audio Station permission in DSM
  • For Dynamic Island: iPhone 14 Pro or newer

Build from source

The checked-in Xcode project is generated from project.yml via XcodeGen. Regenerate it after changing project structure, targets, build settings, or resources.

brew install xcodegen
git clone https://github.com/ZanwingMak/SynoMusic-OpenSource.git
cd SynoMusic-OpenSource
xcodegen generate
open SynoMusic.xcodeproj

Set your own development team in Xcode → Signing & Capabilities for both SynoMusic and SynoMusicLive, then run on a simulator or device.

Project layout

SynoMusic/
├── App/                 # @main entry + RootView
├── Audio/               # PlaybackEngine, NowPlaying, Live Activity bridge
├── DesignSystem/        # Theme, ThemeManager, L10n, Typography, Components
├── Features/
│   ├── Browse/          # Albums / Artists / Genres / Folders / All Songs
│   ├── Favorites/       # Local playlists incl. built-in Favorites
│   ├── Library/         # Home with shortcut cards
│   ├── Login/           # Server editor + login flow
│   ├── Player/          # MiniPlayerBar, FullPlayerView, SleepTimerSheet
│   ├── Radio/           # RadioAPI + RadioBrowseView
│   ├── Search/          # Debounced search
│   └── Settings/        # Servers, theme, language, sponsor, about
├── Models/              # Song / Album / Artist / Playlist / ServerProfile …
├── Storage/             # ServerStore, PlaylistStore, KeychainStore, DownloadManager
├── Synology/            # SynologyClient, AudioStationAPI, DTOs, errors
└── SynoMusicLive/       # Widget extension: Live Activity + Lock Screen

Sponsor

If SynoMusic saves you a Spotify subscription, consider supporting development.

License

This project is licensed under the GNU General Public License v3.0. See LICENSE.

SynoMusic is an unofficial client for personal music sources. Synology, DSM, Audio Station, Plex, Jellyfin, Emby, and related names are trademarks of their respective owners.

About

Open-source edition of SynoMusic, a native iOS music client for Synology NAS.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages