Sonuvi is a moOde-focused enhancement platform for richer playback state, metadata, queue control, displays, controllers, and integrations. It runs a web UI and API on an app host and communicates with a moOde/MPD player over the LAN.
- Browser dashboard and phone/tablet/computer controllers
- Now Playing, Player, Peppy, Visualizer, and Kiosk display paths
- Queue management, Queue Wizard/Vibe Radio, playlists, ratings, and library health
- Radio, podcasts, YouTube audio, and Listen on Device webstream playback
- Alexa control and validated Seeburg, Multiphone/Mabel, and Mills integrations
- Theme/customization tools and operator diagnostics
The recommended topology runs Sonuvi on a separate host from moOde:
Browser / display clients
↓
Sonuvi UI :8101 ↔ Sonuvi API :3101
↓ MPD / SSH / HTTP
moOde player host
The API host owns Sonuvi state normalization, routes, queue integration, display/control bridges, and the web UI. MPD/moOde remains the playback authority unless a documented physical or external mode owns the audio path.
-
Install Node.js, npm,
mpc, and PM2 on the Sonuvi host. -
Install the project:
curl -fsSL https://raw.githubusercontent.com/teacherguy2020/now-playing/main/scripts/install.sh | bash -s -- --ref main -
Open
config.html, set the moOde/MPD connection, paths, SSH access, and a strongtrackKey. -
Run Check SSH + Paths, save, and verify
/now-playingand a controller page.
The full first-run path is in Getting Started.
Start with the canonical documentation landing page:
Audience entry points:
- Getting Started
- Using Sonuvi
- Displays
- Integrations
- Configuration and Administration
- Developer Reference
- Troubleshooting and Technical Notes
The editable source is docs/wiki-source/. docs/wiki-site/ and the
GitHub-hosted Wiki are published outputs; do not edit those copies directly.
For moOde's local display target, use the LAN proxy URL without an explicit
:8101 port on current moOde releases:
http://<now-playing-host>/display.html?kiosk=1
The display and upgrade runbooks cover Peppy/Player/Visualizer setup, target URL persistence, blanking/wake compatibility, and rollback:
- moOde/MPD — primary playback runtime
- Alexa — custom skill plus Homebridge/Matter lifecycle bridge
- Last.fm — scrobbling and Vibe/queue enrichment
- Seeburg wallbox — separate Pico project with Now Playing selection API
- Shyvers Multiphone/Mabel — separate repository for conversation/hardware; this repository owns bounded integration endpoints
- Mills Throne of Music — physical jukebox observation/display bridge
See Integrations for ownership and authority boundaries.
- Seeburg Now Playing Pico
- Shyvers Multiphone/Mabel
- Unlicense, with third-party notices in THIRD_PARTY_LICENSES.md
integrations/moode/aplmeta.py remains GPL-3.0-or-later per its file header.


