↓ Skip to main content

Sonos controller for macOS, local and open source

Table of Contents

Soundwart is an open-source Sonos controller for macOS, free of charge. It drives the players on your own network, with no detour through the cloud. The name uses the German “-wart”, the suffix for someone who looks after a particular thing, as in Gerätewart or Platzwart: someone who keeps the sound in order.

Sonos ships a Mac app too. It was still running under Rosetta 2 until August 2026, and going native on Apple Silicon is about all that has changed: beyond that it is the app it has been for years. Before we lose our religion: Soundwart sets out to be the better alternative. Lean, fast, and with the source in the open, ready to be changed at any time. It talks to the players over UPnP events (GENA) - no polling, no SOAP requests every few seconds.

The Soundwart main window on macOS showing the current track, artwork, the queue, and Apple Music album details next to the search field
Main window with the queue and album details

Menu bar#

The menu bar popover lists every group you have set up, with what is currently playing. Play and pause, previous and next, volume and mute all sit right there - no window required.

The Soundwart menu bar popover showing one group of four rooms with the current track, transport controls and a volume slider
One group of four rooms in the menu bar popover

With more than one group playing, each gets its own block in the popover, with its own track and its own volume.

The Soundwart popover showing two groups playing different tracks, each with its own transport controls and volume
Two groups, two tracks, controlled separately

Main window and queue
#

The main window carries the artwork, transport controls, the volume of the group and of every single room inside it. The artwork opens in a large view.

The Soundwart main window with a Metallica track playing in the living room and a queue of 64 tracks
Main window with the queue

Everything about the queue can be changed:

  • reorder tracks by dragging
  • remove one track or several at once
  • jump to a track
  • drop search results in at a specific position

Several playlists side by side
#

Playlists sit in tabs next to each other. One is playing while you put the next one together in another, and a click switches over. The speaker icon marks the one currently playing.

Soundwart with two playlist tabs: Sonntag playing, Daily open for editing alongside it, Spotify search results on the right
Playlists in tabs, with search alongside

Search: Apple Music, Spotify and radio
#

Search finds songs, albums and artists in the Apple Music catalogue. Any result can play right away, slot in after the current track, or go to the end of the queue. Albums come with their catalogue details and the full track list, with the running track marked. Apple Music artist stations are there too.

Apple Music catalogue details in Soundwart: artwork, artist, year, genre, track count and running time, with the full track list below and the running track marked
Catalogue details with the running track marked

Radio stations come from TuneIn and start the same way.

Spotify is in as of 0.2.0, still experimental: switch the source next to the search field, and search and playback run against the Spotify catalogue. It needs a Spotify account set up in your Sonos system. Other streaming services are not supported.

Favorites, playlists and library
#

Play and manage your Sonos favorites: whatever is playing goes in with the star and comes back out just as easily. The current queue can be saved as a named Sonos playlist and loaded back later. The music library shared by the players themselves is browsable as well.

Playback options
#

Shuffle, repeat the queue or a single track, crossfade, and a sleep timer.

Silence when the microphone goes live
#

An app reaching for the microphone usually means a call or a video meeting. Soundwart mutes playback for as long as that lasts, or pauses it, whichever you set. Afterwards it picks up again.

Live updates instead of polling
#

Soundwart subscribes to the players’ GENA events, on port 1400 on the local network. What happens at the speakers syncs straight into the app - including when someone else is driving playback from another device.

Wired into macOS
#

Soundwart registers with the system as a player. The current track shows up in Control Centre, and the keyboard’s media keys drive the Sonos players whatever app has focus. Play, pause and skip work without opening Soundwart at all.

macOS Control Centre showing the current Sonos track from Soundwart with artwork and transport controls
The current track in the macOS Control Centre

Privacy and approach
#

  • No account, no login, no cloud
  • No analytics, no telemetry
  • No network traffic beyond the players on your own network; the one exception is the update check against soundwart.de

Download and installation
#

With Homebrew:

brew tap head1328/soundwart \
  https://codeberg.org/head1328/homebrew-soundwart
brew trust --cask head1328/soundwart/soundwart
brew install --cask soundwart

Without Homebrew: download Soundwart , unzip it, and drop it into /Applications. The download is notarized by Apple. In-app updates then run through Sparkle against a self-hosted appcast - no server component, and every update is verified against an EdDSA key.

Requirements
#

  • macOS 26 or later
  • At least one Sonos player on the same network, running S2 firmware
  • A system set up once in the official app: rooms named, and any streaming services connected to the household
  • Apple Music or Spotify as the service; other services are not supported

What Soundwart does not do
#

Soundwart controls what is already there. Setting up players and services, alarms, EQ and TruePlay stay with the official app.

License
#

Apache 2.0. The source lives openly on Codeberg; contributions, issues, and forks are welcome. Bundled icon assets are covered by their own licenses.


Found this helpful?
Consider supporting via: