{"id":50812634,"url":"https://github.com/gaelsimon/neos-audio","last_synced_at":"2026-06-13T06:30:20.966Z","repository":{"id":364097283,"uuid":"1202844186","full_name":"gaelsimon/neos-audio","owner":"gaelsimon","description":"A lightweight, zero-dependency macOS app for controlling Denon and Marantz HEOS speakers, built natively with Swift and SwiftUI.","archived":false,"fork":false,"pushed_at":"2026-06-11T16:52:01.000Z","size":11251,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T17:13:49.665Z","etag":null,"topics":["audio","denon","heos","macos","marantz","menubar-app","open-source","soundcloud","swiftui","tidal"],"latest_commit_sha":null,"homepage":"https://ko-fi.com/galela","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gaelsimon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"galela"}},"created_at":"2026-04-06T13:11:11.000Z","updated_at":"2026-06-11T16:55:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gaelsimon/neos-audio","commit_stats":null,"previous_names":["gaelsimon/neos-audio"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/gaelsimon/neos-audio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaelsimon%2Fneos-audio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaelsimon%2Fneos-audio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaelsimon%2Fneos-audio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaelsimon%2Fneos-audio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gaelsimon","download_url":"https://codeload.github.com/gaelsimon/neos-audio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaelsimon%2Fneos-audio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34275065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","denon","heos","macos","marantz","menubar-app","open-source","soundcloud","swiftui","tidal"],"created_at":"2026-06-13T06:30:19.994Z","updated_at":"2026-06-13T06:30:20.942Z","avatar_url":"https://github.com/gaelsimon.png","language":"Swift","funding_links":["https://ko-fi.com/galela"],"categories":[],"sub_categories":[],"readme":"# Neos\n\nA native macOS app for controlling Denon and Marantz HEOS speakers. Built with SwiftUI. No third-party dependencies. Open source, MIT licensed.\n\n[![Download](https://img.shields.io/github/v/release/gaelsimon/neos-audio?label=Download\u0026style=for-the-badge\u0026logo=apple\u0026logoColor=white)](https://github.com/gaelsimon/neos-audio/releases/latest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE)\n[![CI](https://img.shields.io/github/actions/workflow/status/gaelsimon/neos-audio/ci.yml?branch=main\u0026style=for-the-badge\u0026label=CI)](https://github.com/gaelsimon/neos-audio/actions/workflows/ci.yml)\n[![Support on Ko-fi](https://img.shields.io/badge/Ko--fi-Support%20Neos-ff5e5b?style=for-the-badge\u0026logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/galela)\n\n![Neos Home](screenshots/home.png)\n\n![Neos Now Playing](screenshots/now-playing.png)\n\n![Neos Browse Album](screenshots/browse-album.png)\n\n![Neos Search](screenshots/search.png)\n\n## Why?\n\nI 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.\n\nUsing 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.\n\n- **Lives in your menu bar** - always one click away, never in the way.\n- **Fast** - connects to your last speaker in under 500ms. No splash screen, no loading spinner.\n- **All your music in one place** - switch between Tidal, SoundCloud, TuneIn, Deezer, and local music without changing apps.\n- **Audio quality info** - shows what's actually playing: bit depth, sample rate, and codec (e.g. \"16-bit / 44.1 kHz FLAC\").\n- **Native macOS** - SwiftUI, no Electron, no web wrapper.\n\n## Features\n\n- Play, pause, skip, previous with seekable progress bar\n- Shuffle and repeat modes\n- Volume slider with mute, dB readout, and hardware volume limit\n- Home screen with recently played, favorites, and quick access to your services\n- Browse music sources with infinite scroll\n- Search across services with category filters (tracks, artists, albums)\n- Full-screen Now Playing view with album art and queue panel\n- Click an artist or album name to jump to their page\n- Automatic speaker discovery on your local network\n- Power on/off your receiver\n- HEOS account sign-in for favorites across devices\n- Menu bar compact player with playback controls and volume\n\n## Tested With\n\nNeos 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.\n\nSpeaker grouping (multi-room) is implemented but hasn't been tested with multiple speakers.\n\n## Download\n\n**Requires** macOS 14.0 (Sonoma) or later and a Denon or Marantz speaker with HEOS built-in, on the same network.\n\n1. Download the latest DMG from [Releases](https://github.com/gaelsimon/neos-audio/releases/latest)\n2. Open the DMG and drag Neos to your Applications folder\n3. Launch Neos - it appears in your menu bar\n4. Your speaker should be discovered automatically\n\n## How It Works\n\nNeos talks directly to your speaker over the local network. No cloud, no internet required for playback.\n\n| Protocol | Port | Purpose |\n|----------|------|---------|\n| HEOS CLI | TCP 1255 | Commands, events, browsing |\n| UPnP AVTransport | HTTP 60006 | Seek, position, track metadata |\n| UPnP ACT Denon | HTTP 60006 | Hardware volume limit |\n| AVR Telnet | TCP 23 | Power on/off |\n| SSDP | UDP 1900 | Speaker discovery |\n\n## Built With\n\nSwift and SwiftUI. Only Apple frameworks (Network.framework, Foundation, Security). No Combine, async/await throughout.\n\n## Known Limitations\n\n- Speaker grouping is untested (I only have one speaker)\n- Some music services beyond Tidal/SoundCloud/TuneIn/Deezer are untested\n- DMG is unsigned and unnotarized. First launch needs right-click \u003e 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](https://ko-fi.com/galela) helps make that decision easier.\n\n### About the HEOS protocol\n\nNeos uses the public [HEOS CLI protocol](https://rn.dmglobal.com/usmodel/HEOS_CLI_ProtocolSpecification-Version-1.17.pdf), 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.\n\n## Building from Source\n\n```bash\nbrew install xcodegen swiftlint\nxcodegen generate\nopen Neos.xcodeproj\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for architecture, protocol details, and how to run the test suite.\n\n## Contributing\n\nBug reports, test results from speakers I can't test against, and PRs are all welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) to get started.\n\n## Support\n\nIf you find Neos useful, consider supporting its development:\n\n[Buy me a coffee on Ko-fi](https://ko-fi.com/galela)\n\n## License\n\n[MIT](LICENSE) © 2025-2026 Gael Simon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaelsimon%2Fneos-audio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaelsimon%2Fneos-audio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaelsimon%2Fneos-audio/lists"}