hui 1.0.0
dotnet tool install --global hui --version 1.0.0
dotnet new tool-manifest
dotnet tool install --local hui --version 1.0.0
#tool dotnet:?package=hui&version=1.0.0
nuke :add-package hui --version 1.0.0
<img width="1080" height="690" alt="Screenshot 2026-05-04 173747" src="https://github.com/user-attachments/assets/49dedcfb-5a66-4474-b037-31b26e22d66f" />
hui
hui syncs Philips Hue entertainment lights to system audio on Windows. Use it either from the interactive Terminal.Gui app or from the CLI.
Light updates use the Hue Entertainment API DTLS stream on UDP 2100. Bridge REST calls are used for pairing, area discovery, and starting or stopping entertainment mode.
Installation
Install from NuGet
dotnet tool install -g hui
Then run hui from anywhere:
hui run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom
To update:
dotnet tool update -g hui
To uninstall:
dotnet tool uninstall -g hui
Build and install from source
git clone https://github.com/YourRobotOverlord/hui.git
cd hui
dotnet pack -c Release
dotnet tool install -g --add-source ./bin/Release hui
Use dotnet tool update -g --add-source ./bin/Release hui to update after pulling changes.
Requirements
- Windows machine with .NET 10 SDK (Linux version coming)
- Hue Bridge on the local network
- Entertainment area created in the Hue app
- Lights assigned to that entertainment area
Quick start
1. Pair with the bridge
Press the link button on the Hue Bridge, then run:
dotnet run -- pair --bridge 192.168.1.20
This requests and saves:
- App key for authenticated Hue API calls
- Client key for the Hue Entertainment DTLS connection
2. List entertainment areas
dotnet run -- list-areas --bridge 192.168.1.20 --app-key YOUR_APP_KEY
This prints area IDs, names, status, and channel positions.
3. List audio output devices
dotnet run -- list-devices
Use the --device-index value from this list if you do not want the default Windows playback device.
Interactive app
Launch the Terminal.Gui interface:
dotnet run -- ui
Running the app with no arguments also opens the UI.
UI shortcuts
F1: open the in-appREADME.mdviewerF3: open bridge, audio, and app-exit lighting settingsF5: start or stop lightingn/p: next or previous lighting modeb/B: brightness down or up for the current modes/S: sensitivity down or up for the current mode
Use F3 to edit bridge connection, device selection, FPS, and app-exit lighting behavior. Mode-specific settings are edited in the main Mode Control pane and are saved immediately.
CLI mode
Run live audio sync directly from the command line:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area YOUR_AREA_ID
Example with common tuning options:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom --device-index 1 --fps 40 --sensitivity 2.0 --brightness 0.8
Mode examples
Cycle-strobe:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom --mode cycle-strobe --brightness 1.0
Sparkle:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom --mode sparkle --sensitivity 2.2 --brightness 0.9
Wave-travel:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom --mode wave-travel --sensitivity 1.9 --brightness 0.95
Ambient-drift:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom --mode ambient-drift --sensitivity 1.4 --brightness 0.55
Beat-pulse:
dotnet run -- run --bridge 192.168.1.20 --app-key YOUR_APP_KEY --client-key YOUR_CLIENT_KEY --area LivingRoom --mode beat-pulse --sensitivity 1.9 --brightness 1.0
CLI options
| Option | Required | Description |
|---|---|---|
--bridge |
No* | Hue Bridge IP address or hostname. |
--app-key |
No* | Hue application key used for authenticated bridge API calls. |
--client-key |
No* | Hue entertainment client key used as the PSK for the DTLS stream. |
--area |
No* | Entertainment area ID or exact entertainment area name. |
--device-index |
No | Windows audio device index from list-devices. If omitted, the default multimedia playback device is used. |
--fps |
No | Stream frame rate. Accepts 1-60. Default 30. |
--mode |
No | Lighting mode: audio-reactive, cycle-strobe, sparkle, wave-travel, ambient-drift, or beat-pulse. Default audio-reactive. |
--cycle-seconds |
No | Full hue cycle time in cycle-strobe. Accepts values >= 0.1. Default 6. |
--wave-seconds |
No | Wave travel time in wave-travel. Accepts values >= 0.1. Default 1.6. |
--sensitivity |
No | In audio-reactive, acts as audio gain. In cycle-strobe, sparkle, wave-travel, and beat-pulse, higher values make transient-triggered effects fire more easily. Accepts values >= 0.01. Default 1.75. |
--brightness |
No | Maximum brightness cap for streamed colors. In cycle-strobe and beat-pulse, this directly controls flash or pulse intensity. Accepts 0-1. Default 1. |
Behavior notes
pairsaves the bridge address, app key, and client key to the app config file.--bridge,--app-key,--client-key, and--areaare optional if they are already saved in the config file (e.g. after runningpairor using the UI). If any are missing from both the CLI and config, the app exits with an error.--areaaccepts either the exact area ID or the exact area name.--brightnesslimits maximum streamed brightness from0to1.--fpscontrols how often frames are pushed to the bridge.30-50is a practical range.cycle-strobesweeps across the configured warm and cool hue range and back independently of the music. In this mode,--brightnesscontrols flash intensity and--sensitivitycontrols how easily detected transients trigger flashes.sparklekeeps a dim base wash and overlays transient-triggered random white sparkles. In this mode, higher--sensitivitymakes sparkles trigger more easily.- In the UI,
sparklealso exposes a configurable sparkle color picker for transient sparkle flashes. wave-travellaunches alternating left-to-right and right-to-left waves on detected transients.--brightnesscontrols wave intensity.ambient-driftslowly morphs between the configured hue endpoints while audio only nudges drift speed and brightness.beat-pulselaunches a full-area pulse on detected beats with fast attack and smooth decay. In this mode,--sensitivitycontrols beat detection threshold and--brightnesscontrols pulse intensity.- The UI also includes
split-strobe, which randomly splits lights into bass and treble groups with independent colors plus configurable attack, decay, and background levels. - When the UI exits while lights are running,
huican either send a blackout frame or set the whole entertainment area to a configured solid color before stopping the stream.
<img width="320" height="320" alt="output" src="https://github.com/user-attachments/assets/2daeb89d-c078-4dc7-ae85-4601ca4a69c2" />
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 110 | 5/10/2026 |