Installation
Install Hypercolor on Linux, Windows, and macOS. Prebuilt packages and one-line installers first; source build is a labeled developer section.
Most users should install a prebuilt package; no Rust toolchain required. Source builds are for contributors and platform porters.
Not sure which path fits? Read Choose your install first.
#Linux: prebuilt installer
The fastest path on any Linux distribution. The script downloads a release tarball from GitHub, verifies its SHA256 checksum, installs hypercolor, hypercolor-daemon, hypercolor-app, hypercolor-tui, and hypercolor-open to ~/.local/bin, and sets up a systemd user service. It never asks for sudo, so it does not apply the udev rules or the i2c-dev setup that USB and SMBus device access need; see udev rules below.
curl -fsSL https://raw.githubusercontent.com/hyperb1iss/hypercolor/main/scripts/install-release.sh | bashThe installer is idempotent: re-running it upgrades an existing install. Pin any tagged release with --version:
curl -fsSL https://raw.githubusercontent.com/hyperb1iss/hypercolor/main/scripts/install-release.sh | bash -s -- --version v0.3.2On Linux the install root is fixed. HYPERCOLOR_INSTALL_PREFIX must be $HOME/.local and HYPERCOLOR_INSTALL_DIR must be $HOME/.local/bin; the script aborts on any other value, before downloading anything, so the systemd unit’s %h/.local/bin/hypercolor-daemon path always resolves. On macOS both variables are free to point somewhere else.
After you install the udev rules, re-plug your USB devices or log out and back in so they take effect. If your devices are still not detected, see Devices not found.
#Debian and Ubuntu (.deb)
Each release ships a .deb package for amd64. It installs the daemon, CLI, systemd user service, udev rules, and shell completions through apt:
sudo apt install ./hypercolor_<version>_amd64.debRemove it later with sudo apt remove hypercolor.
#Arch Linux (AUR)
The hypercolor-bin AUR package updates automatically on every tagged release:
yay -S hypercolor-binThe PKGBUILD installs binaries, the systemd user service, shell completions, and udev rules automatically as part of the package install hooks.
#Linux: udev rules (USB and input device access)
USB and input device access on Linux requires udev rules. The .deb and AUR packages place them for you. The prebuilt one-liner does not, so if you used it (or you are installing manually or from source), apply them yourself:
just udev-installThis copies both rules files (udev/99-hypercolor.rules for USB and hidraw access, udev/70-hypercolor-input.rules for input capture) to /etc/udev/rules.d/, reloads udev, and retriggers the hidraw, usb, tty, i2c-dev, and input subsystems. You will need to re-plug connected devices or log out and back in for group membership changes to propagate.
#Windows
Download the NSIS installer (Hypercolor_<version>_x64-setup.exe) from the download page. The install is per-machine and asks for administrator elevation (UAC). In that one elevated pass the installer:
- Bundles
hypercolor-daemon.exeand thehypercolor-appdesktop shell - Registers the app for autostart at login
- Runs hardware setup: installs the bundled PawnIO SMBus modules and registers the
HypercolorSmBusbroker service (motherboard and DRAM RGB) - Adds Windows Firewall rules so mDNS discovery works without a first-run prompt
- Creates Start menu and Desktop shortcuts
Run the installer and launch Hypercolor from the Start menu. The app supervises the daemon automatically, so there is no separate daemon window to manage.
Windows builds are currently unsigned, so SmartScreen may warn when you run the installer. Choose “More info” and then “Run anyway” to continue.
If hardware setup did not complete during install (the installer notes this in its details log), USB and network lighting still work. Re-run the SMBus setup later from Settings → Device Discovery → Hardware Support.
#macOS
When a release includes an accepted macOS build, download the signed DMG from the download page. Open the DMG, drag Hypercolor to Applications, and launch it. The app registers a LaunchAgent for autostart and supervises the daemon; no terminal setup is required.
Public CI does not publish unsigned macOS packages. macOS artifacts are promoted manually only after Developer ID signing, notarization, and the signed physical acceptance checkpoint pass.
macOS hardware support covers USB-HID and network devices (Hue, Nanoleaf, WLED, Govee). SMBus/motherboard RGB is Linux and Windows only.
Homebrew users can install the desktop app as a cask (brew install --cask hyperb1iss/tap/hypercolor-app) or the daemon and CLI as a formula (brew install hyperb1iss/tap/hypercolor, with brew services support). The tap is updated manually after the matching signed artifacts pass acceptance.
#macOS screen capture support
Screen capture is off until an explicit authorization or source-selection action. Keyboard capture uses Input Monitoring. Passive pointer capture does not use a TCC service. ScreenCaptureKit uses Screen Recording. The settings page links directly to the matching System Settings privacy pane when manual remediation is needed.
The native Apple Silicon HDR, Intel SDR, and Tahoe paired-reference paths are implemented but remain release-gated by the signed physical acceptance matrix. Development builds can exercise pure fixtures and native mechanics, but they do not establish durable TCC or hardware qualification.
The CLI exposes the same explicit actions when the active process topology can perform them:
hypercolor access authorize-input-monitoring
hypercolor access authorize-screen-recording
hypercolor access choose-screen-source
hypercolor status --watchPicker presentation can require Hypercolor.app. A headless installation returns a typed app-UI remedy instead of attempting private presentation APIs.
#The desktop app and autostart
On all platforms, Hypercolor ships a unified desktop app (hypercolor-app) built on Tauri. When you launch it:
- The app checks if a daemon is already running on
127.0.0.1:9420. If so, it connects to it. - On Linux, it checks for an enabled systemd user service (
hypercolor.service) and defers to it. - If no daemon is found, the app spawns one as a supervised child process with a watchdog that restarts it on crash.
- The tray icon appears, and the main window opens (or the app starts minimized if launched with
--minimized).
Autostart is managed by the app’s autostart plugin. On Linux it creates a ~/.config/autostart/ entry; on macOS it registers a LaunchAgent; on Windows it writes a Run key in the current user’s registry. Toggle it from the tray menu or from within the app’s Settings page.
The app window is 1200×800 by default, with a minimum of 800×500. Close clicks hide the window rather than quit; Hypercolor stays in the tray. To fully quit, use the tray menu.
#Linux: systemd user service
The prebuilt installer and just install both install a systemd user service. Manage it with the CLI:
hypercolor service enable # enable autostart on login
hypercolor service start # start the daemon now
hypercolor service stop # stop it
hypercolor service restart # restart
hypercolor service status # check current state
hypercolor service logs # last 50 lines
hypercolor service logs --follow # live tailOn Linux this wraps systemctl --user: it is a user service, not a system service. Never use sudo systemctl to manage it.
The unit file lives at ~/.config/systemd/user/hypercolor.service and uses %h/.local/bin/hypercolor-daemon as the executable path.
#macOS: LaunchAgent
The macOS app install registers a LaunchAgent (tech.hyperbliss.hypercolor) in ~/Library/LaunchAgents. The same hypercolor service subcommands work on macOS, wrapping launchctl.
#Choose the macOS daemon owner
Hypercolor supports four local daemon topologies:
- App sidecar: the desktop app supervises its bundled daemon. This is the default for the DMG and cask.
- Direct launchd: Hypercolor’s per-user LaunchAgent supervises the daemon.
- Homebrew service:
brew servicessupervises the formula daemon. - Standalone: a daemon started directly from a terminal. This topology can be observed and stopped, but it is not selected for autostart.
Only one topology can hold the per-user daemon guard. Select a persistent owner with one of these local commands:
hypercolor service choose-owner app-sidecar
hypercolor service choose-owner direct-launchd
hypercolor service choose-owner homebrewOwner changes are journaled across stop, guard handoff, autostart changes, and startup. A failed handoff rolls back to the prior owner. If a standalone daemon owns the guard, the command reports its process ID and asks you to stop it before repeating the selection.
When a selected external owner is offline, use the remedy named by Settings or status output:
# Direct launchd owner
hypercolor service start
# Homebrew owner
brew services start hypercolorOpen Hypercolor.app to restore the app-sidecar owner. An ownership conflict is not a daemon crash; the losing managed contender exits without entering a restart loop.
#Verify the daemon is running
Regardless of install method, confirm the daemon is up:
curl http://localhost:9420/healthA 200 OK response means the daemon is healthy and accepting connections. The web UI is available at http://localhost:9420 in your browser.
#Developer install: build from source
This section is for contributors and platform porters. Ordinary users do not need to build from source.
#Prerequisites
- Rust 1.94+ (Edition 2024). Install via rustup.
just, the task runner.cargo install justor your distro’s package manager.- Bun, required for the web UI and TypeScript SDK.
curl -fsSL https://bun.sh/install | bash. - Platform libraries: see the distribution-specific lists below.
#Bootstrap (recommended)
git clone https://github.com/hyperb1iss/hypercolor.git
cd hypercolor
just setupjust setup installs system packages, the Rust toolchain, the WASM target, cargo tools (trunk, cargo-deny, sccache), and frontend dependencies. It is idempotent: re-running only installs what is missing.
Setup flags:
just setup -- -y # non-interactive (no sudo prompts)
just setup -- --minimal # Rust + wasm target only
just setup -- --no-system # skip system package install
just setup -- --with-servo # include Servo HTML renderer build depsOn Windows the same recipe dispatches to scripts/setup.ps1. Use PowerShell-style flags: -Yes, -Minimal, -NoSystem, -WithServo.
#System libraries
Debian / Ubuntu:
sudo apt install build-essential pkg-config cmake nasm \
libudev-dev libusb-1.0-0-dev libhidapi-dev \
libasound2-dev libpulse-dev libpipewire-0.3-dev \
libxdo-dev libgtk-3-dev libwebkit2gtk-4.1-dev \
libayatana-appindicator3-dev librsvg2-dev libssl-dev \
clang lldFedora:
sudo dnf install gcc gcc-c++ pkg-config cmake nasm \
systemd-devel libusb1-devel hidapi-devel \
alsa-lib-devel pulseaudio-libs-devel pipewire-devel \
libxdo-devel gtk3-devel webkit2gtk4.1-devel \
libappindicator-gtk3-devel librsvg2-devel openssl-devel \
clang lldArch Linux:
sudo pacman -S base-devel pkgconf cmake nasm \
libusb hidapi alsa-lib libpulse pipewire \
xdotool gtk3 webkit2gtk-4.1 \
libappindicator-gtk3 librsvg openssl \
clang lldmacOS:
xcode-select --install
brew install hidapi pkg-config cmake nasmWindows: Install Visual Studio 2022 Build Tools with the “Desktop development with C++” workload.
#WASM target
Required for the web UI:
rustup target add wasm32-unknown-unknown
# or use the shortcut:
just setup-wasm#Additional dev tools
cargo install --locked trunk cargo-deny # required
cargo install --locked sccache # optional; speeds rebuilds#Frontend dependencies
cd crates/hypercolor-ui && bun install --frozen-lockfile # Tailwind v4
cd ../../sdk && bun install --frozen-lockfile # TypeScript SDK#Build
just build # debug build
just build-preview # preview profile (optimized, fast compile)
just release # full release bundle in dist/
just check # type-check only, no artifact
just verify # fmt + lint + test; run this before committing#Install from source
After building, install the daemon and CLI to ~/.local/bin, the web UI assets, the systemd user service, and, by default, udev rules plus i2c-dev setup:
just installPass --skip-system-hooks if you want to skip the sudo-backed udev and SMBus setup:
just install -- --skip-system-hooks#Run the desktop app from source
just appThis builds the daemon and the Tauri app at the preview profile and launches hypercolor-app. The app supervisor handles starting the daemon.
To run the daemon directly without the app shell:
just daemonThe daemon starts on 127.0.0.1:9420 by default with debug logging enabled.
#What’s next
With Hypercolor running, head to First launch to walk through the welcome wizard and connect your first device, or jump straight to the Quick start if you already know your way around.