Skip to content

Repository files navigation

Neos

A native macOS app for controlling Denon and Marantz HEOS speakers. Built with SwiftUI. No third-party dependencies. Open source, MIT licensed.

Download License: MIT CI Support on Ko-fi

Neos Home

Neos Now Playing

Neos Browse Album

Neos Search

Why?

I spend most of my day at my computer, and I got tired of reaching for my phone every time I wanted to skip a track or browse my Tidal library on my Marantz speaker. There's no official HEOS app for Mac, so I built one.

Using the Tidal desktop app with HEOS isn't great either. It only supports Tidal Connect, which means no queue management, no browse integration, and you can't mix in radio stations or local music. With Neos I can jump from a Tidal album to a TuneIn radio station to a SoundCloud mix to a FLAC from my NAS, all from the same place.

  • Lives in your menu bar - always one click away, never in the way.
  • Fast - connects to your last speaker in under 500ms. No splash screen, no loading spinner.
  • All your music in one place - switch between Tidal, SoundCloud, TuneIn, Deezer, and local music without changing apps.
  • Audio quality info - shows what's actually playing: bit depth, sample rate, and codec (e.g. "16-bit / 44.1 kHz FLAC").
  • Native macOS - SwiftUI, no Electron, no web wrapper.

Features

  • Play, pause, skip, previous with seekable progress bar
  • Shuffle and repeat modes
  • Volume slider with mute, dB readout, and hardware volume limit
  • Home screen with recently played, favorites, and quick access to your services
  • Browse music sources with infinite scroll
  • Search across services with category filters (tracks, artists, albums)
  • Full-screen Now Playing view with album art and queue panel
  • Click an artist or album name to jump to their page
  • Automatic speaker discovery on your local network
  • Power on/off your receiver
  • HEOS account sign-in for favorites across devices
  • Menu bar compact player with playback controls and volume

Tested With

Neos has been primarily tested with Tidal, SoundCloud, TuneIn, and local music (USB / NAS). Deezer works but has had less testing. Other HEOS-supported services (Spotify, Amazon Music, Pandora, Napster, etc.) should work through the standard HEOS protocol but haven't been tested yet. Feedback welcome.

Speaker grouping (multi-room) is implemented but hasn't been tested with multiple speakers.

Download

Requires macOS 14.0 (Sonoma) or later and a Denon or Marantz speaker with HEOS built-in, on the same network.

  1. Download the latest DMG from Releases
  2. Open the DMG and drag Neos to your Applications folder
  3. Launch Neos - it appears in your menu bar
  4. Your speaker should be discovered automatically

First launch (Gatekeeper)

The DMG is unsigned and unnotarized (see Known Limitations), so macOS blocks it on first open. This is a one-time step per version — pick whichever you prefer:

  • Right-click → Open: in Applications, right-click (or Control-click) Neos → OpenOpen in the dialog.
  • Privacy & Security: try to open Neos normally, then go to → System Settings → Privacy & Security and click Open Anyway.
  • Terminal: clear the quarantine flag directly:
    xattr -dr com.apple.quarantine /Applications/Neos.app

How It Works

Neos talks directly to your speaker over the local network. No cloud, no internet required for playback.

Protocol Port Purpose
HEOS CLI TCP 1255 Commands, events, browsing
UPnP AVTransport HTTP 60006 Seek, position, track metadata
UPnP ACT Denon HTTP 60006 Hardware volume limit
AVR Telnet TCP 23 Power on/off
SSDP UDP 1900 Speaker discovery

Built With

Swift and SwiftUI. Only Apple frameworks (Network.framework, Foundation, Security). No Combine, async/await throughout.

Known Limitations

  • Speaker grouping is untested (I only have one speaker)
  • Some music services beyond Tidal/SoundCloud/TuneIn/Deezer are untested
  • DMG is unsigned and unnotarized. First launch needs right-click > Open. Signing requires an Apple Developer Program subscription ($99/year), which I haven't taken on. Happy to add it if there's interest; Ko-fi helps make that decision easier.

About the HEOS protocol

Neos uses the public HEOS CLI protocol, which is what Denon documents for third-party integrations. It works well for playback, browsing, and queue management, but it has limits. Some features available in the official HEOS iOS app (like "Go to Artist" on a non-playing queue track, or adding to a Tidal playlist) use a separate proprietary protocol that isn't publicly documented. Neos works around some of these gaps (e.g. searching for the artist instead), but a few things just aren't possible with the public API.

Building from Source

brew install xcodegen swiftlint
xcodegen generate
open Neos.xcodeproj

See CONTRIBUTING.md for architecture, protocol details, and how to run the test suite.

Contributing

Bug reports, test results from speakers I can't test against, and PRs are all welcome. See CONTRIBUTING.md to get started.

Support

If you find Neos useful, consider supporting its development:

Buy me a coffee on Ko-fi

License

MIT © 2025-2026 Gael Simon

About

A lightweight, zero-dependency macOS app for controlling Denon and Marantz HEOS speakers, built natively with Swift and SwiftUI.

Topics

Resources

Contributing

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages