CLI reference

The hypercolor command-line tool: 18 commands, global flags, env vars, and scripting-friendly JSON output.

The hypercolor binary is the terminal interface to the daemon. It speaks the daemon’s REST API over HTTP, renders results as styled tables by default, and drops to plain text or JSON when you ask it to. Every command in this reference maps to a route documented in the REST reference; the CLI is a thin, ergonomic shell over that contract.

If you would rather drive Hypercolor from an AI agent, the same JSON output and exit codes make this CLI a clean tool surface. See Agents & MCP for both the CLI-scripting angle and the MCP server alternative.

The daemon must be running. The CLI talks to the daemon on :9420. If nothing is listening, you will get a connection error. Start it with hypercolor service start, or launch the desktop app, and verify with hypercolor status. The one exception is hypercolor service, which manages the daemon process directly and never touches the API.

πŸ”—Global flags

Every flag below is global: it applies to any subcommand and can appear before or after it. Connection flags fall back to environment variables, so you set them once and forget them.

hypercolor [OPTIONS] <COMMAND>
FlagEnv varDefaultPurpose
--host <HOST>HYPERCOLOR_HOSTlocalhostDaemon hostname or IP.
--port <PORT>HYPERCOLOR_PORT9420Daemon port.
--api-key <KEY>HYPERCOLOR_API_KEY(none)Bearer token for authenticated requests.
--profile <NAME>HYPERCOLOR_PROFILE(none)Named connection profile from cli.toml.
--format <FORMAT>tableOutput format. One of table, json, plain.
-j, --jsonShorthand for --format json.
-q, --quietSuppress non-essential output.
--no-colorDisable colored output.
--theme <NAME>HYPERCOLOR_THEMEColor theme name.
-v, --verboseIncrease log verbosity. Repeatable: -v info, -vv debug, -vvv trace.

--format hides its allowed values in --help, so they are easy to miss. The three valid formats are table (the styled default), json (machine output, the full daemon envelope), and plain (one bare value per line, ideal for piping into cut, grep, or a shell loop).

πŸ”—Loopback needs no key

Connecting from the same machine? You do not need an API key. The daemon exempts loopback clients from authentication, which is why local CLI, TUI, and web UI all work with zero configuration. You only need --api-key (or HYPERCOLOR_API_KEY) when reaching a daemon over the network with auth enabled. The full auth model lives in the REST reference.

πŸ”—Command tree

Eighteen top-level commands, grouped by what they touch. Three of them are easy to confuse, so read the next callout before you script against them.

hypercolor
β”œβ”€β”€ status            System state, render loop, active effect
β”œβ”€β”€ effects           Browse, activate, and control effects
β”‚   β”œβ”€β”€ list
β”‚   β”œβ”€β”€ activate
β”‚   β”œβ”€β”€ stop
β”‚   β”œβ”€β”€ info
β”‚   β”œβ”€β”€ patch
β”‚   β”œβ”€β”€ reset
β”‚   β”œβ”€β”€ rescan
β”‚   └── layout {show | set | clear}
β”œβ”€β”€ brightness        {get | set}
β”œβ”€β”€ scenes            {list | active | create | activate | deactivate | delete | info}
β”œβ”€β”€ devices           Discovery, pairing, hardware control
β”‚   β”œβ”€β”€ list
β”‚   β”œβ”€β”€ discover
β”‚   β”œβ”€β”€ pair
β”‚   β”œβ”€β”€ info
β”‚   β”œβ”€β”€ identify
β”‚   β”œβ”€β”€ set-color
β”‚   β”œβ”€β”€ controls
β”‚   β”œβ”€β”€ set-control
β”‚   └── action
β”œβ”€β”€ controls          {list | show | set | action}
β”œβ”€β”€ drivers           {list | controls | set-control | action}
β”œβ”€β”€ layouts           {list | show | update | create | delete | active | apply | preview}
β”œβ”€β”€ audio             {devices}
β”œβ”€β”€ library
β”‚   β”œβ”€β”€ favorites     {list | add | remove}
β”‚   β”œβ”€β”€ presets       {create | list | info | update | apply | delete}
β”‚   └── playlists     {create | list | info | update | activate | active | stop | delete}
β”œβ”€β”€ profiles          {list | create | apply | delete | info}
β”œβ”€β”€ server            {info | health}
β”œβ”€β”€ servers           {discover | adopt}
β”œβ”€β”€ service           {start | stop | restart | status | enable | disable | logs}
β”œβ”€β”€ config            {show | get | set | reset | path | profile {…}}
β”œβ”€β”€ diagnose          Health checks and diagnostic reports
β”œβ”€β”€ completions       {bash | zsh | fish | powershell}
└── tui               Launch the interactive terminal dashboard

server, servers, and service are three different commands.

  • hypercolor server (singular) queries the one daemon you are connected to: its version, identity, and health.
  • hypercolor servers (plural) discovers other daemons on your network over mDNS and saves them as connection profiles.
  • hypercolor service manages the local daemon process through systemctl (Linux) or launchctl (macOS). It does not call the API at all.

πŸ”—Lighting

πŸ”—status

Show the current system state: the active effect, connected device count, render FPS, and audio capture status.

hypercolor status
Effect:  Borealis (borealis)
FPS:     60.0
Devices: 3 connected
Audio:   enabled (level: 0.42)
FlagDefaultPurpose
--watchLive-updating status that re-renders on state change. Stop with Ctrl-C.
--interval <SECONDS>1Refresh interval for --watch. Floored at 0.2.
hypercolor status --watch --interval 0.5
hypercolor status --json | jq '.active_effect'

πŸ”—effects

Browse the catalog, activate an effect, tune its live controls, and manage the spatial layout it renders against. Hypercolor ships native built-in effects plus a large library of HTML effects from the SDK, so rather than memorize a count, list the catalog and search it.

hypercolor effects list
hypercolor effects list --audio --category ambient
hypercolor effects list --search aurora

effects list flags:

FlagPurpose
--engine <TYPE>Filter by engine: native, web, wasm.
--audioAudio-reactive effects only.
--search <TEXT>Match name or description.
--category <NAME>Filter by category.

Activate an effect by name or slug (fuzzy-matched). Tune it with repeatable --param key=value pairs, or the --speed / --intensity shorthands.

hypercolor effects activate borealis
hypercolor effects activate borealis --speed 30 --intensity 70
hypercolor effects activate plasma-engine --param hue_shift=120 --param density=0.8

effects activate flags:

FlagDefaultPurpose
-p, --param <KEY=VALUE>Arbitrary control value. Repeatable. Values parse as JSON when valid, otherwise as a string.
--speed <0-100>Speed-control shorthand.
--intensity <0-100>Intensity-control shorthand.
--transition <MS>0Reserved for effect crossfades. Only 0 is accepted today.

--param values are parsed as JSON first. So --param density=0.8 sends a number, --param wrap=true sends a boolean, and --param label=neon falls back to a string. Quote anything with shell-special characters.

The remaining effects subcommands act on the currently running effect or on effect metadata:

hypercolor effects info borealis          # Show effect details
hypercolor effects stop                   # Stop the active effect
hypercolor effects patch --param speed=45 # Live-patch controls, no re-apply
hypercolor effects reset                  # Restore controls to defaults
hypercolor effects rescan                 # Re-scan the library for new effects

effects patch updates the live effect without re-applying it; it targets PATCH /api/v1/effects/current/controls and requires at least one --param. Run hypercolor effects rescan after dropping a freshly built HTML effect into the effects directory so the daemon picks it up.

Effects can be pinned to a specific spatial layout:

hypercolor effects layout show borealis           # Show the linked layout
hypercolor effects layout set borealis desk-ring  # Pin to a layout
hypercolor effects layout clear borealis          # Remove the association

The effects gallery in the Hypercolor web UI

πŸ”—brightness

Global output brightness, clamped to 0-100.

hypercolor brightness get
hypercolor brightness set 75

πŸ”—scenes

Scenes are whole-rig configurations: an entire lighting setup you can switch to in one move. They are not per-room presets, and zones are a separate, finer-grained partition of the canvas.

hypercolor scenes list
hypercolor scenes active
hypercolor scenes create "Movie Night" --description "Dim and warm"
hypercolor scenes activate "Movie Night"
hypercolor scenes deactivate          # Return to the Default scene
hypercolor scenes info "Movie Night"
hypercolor scenes delete "Movie Night" --yes

scenes create flags:

FlagDefaultPurpose
--description <TEXT>Human-readable description.
--enabled <BOOL>trueWhether the scene starts enabled.
--mutation-mode <MODE>livelive lets runtime actions rewrite the scene; snapshot freezes it.

πŸ”—Devices

πŸ”—devices

Discover hardware, pair network lights, and drive individual devices. USB and HID devices are auto-discovered; network devices (Hue, Nanoleaf, WLED, Govee) need a discovery scan and, for credential-based vendors, a pairing step.

hypercolor devices list
hypercolor devices list --status connected --driver razer
hypercolor devices discover --target wled --target hue --timeout 15
hypercolor devices info "Razer Huntsman"
hypercolor devices identify "Razer Huntsman" --duration 8
hypercolor devices set-color "Lian Li Strip" "#ff00aa"

devices list filters by --status, --backend-id, and --driver. devices discover takes repeatable --target values (for example wled, usb, hue) and a --timeout in seconds (default 10).

Network devices that require credentials are paired with devices pair. This is the credential path for Hue’s link button, Nanoleaf’s power-button hold, and similar flows; see the per-vendor pages under Hardware for the timed pairing steps.

hypercolor devices pair "Living Room Bridge"
hypercolor devices pair "Shapes" --no-activate

The control subcommands reach into a device’s dynamic control surface (color order, mode toggles, per-device actions):

hypercolor devices controls "Aura Motherboard"
hypercolor devices set-control <device> color_order enum:grb
hypercolor devices set-control <device> brightness duration:1500 --dry-run
hypercolor devices action <device> reset --input force=true --yes

set-control takes a <device> <field> <value> triple where the value is typed, for example enum:grb, bool:true, or duration:1500. Add --expected-revision <N> for optimistic concurrency and --dry-run to validate without applying. action takes a <device> <action> pair with repeatable -i/--input assignments and --yes to confirm guarded actions.

Connected devices in the Hypercolor web UI

πŸ”—controls

The same dynamic control surfaces, addressed by surface, driver, or device. Use this when you want to enumerate or batch-set typed fields rather than reach through devices.

hypercolor controls list --device "WLED Desk"
hypercolor controls list --driver wled --include-driver
hypercolor controls show <surface-id>
hypercolor controls set <surface> -v power=bool:true -v ip=ip:10.0.0.2
hypercolor controls action <surface> reboot --yes

controls set requires at least one -v/--value assignment in field=type:value form, and accepts --expected-revision and --dry-run.

πŸ”—drivers

List loaded driver modules and reach driver-level control surfaces (settings that belong to the driver as a whole, not a single device).

hypercolor drivers list
hypercolor drivers controls wled
hypercolor drivers set-control wled transport enum:ddp
hypercolor drivers action wled rescan --yes

πŸ”—layouts

Spatial layouts map the composed canvas onto physical LED positions. Create, inspect, apply, and preview them here. The coordinate system is normalized to [0.0, 1.0], so layouts stay resolution-independent.

hypercolor layouts list
hypercolor layouts active
hypercolor layouts show desk-ring
hypercolor layouts create --name desk-ring --data ./ring.json
hypercolor layouts update desk-ring --data '{"rotation": 90}'
hypercolor layouts apply desk-ring      # Make it the active layout
hypercolor layouts preview desk-ring    # Preview without committing
hypercolor layouts delete desk-ring

create and update take --data, which accepts inline JSON or a path to a JSON file describing the layout.

πŸ”—audio

List the audio input devices the daemon can capture from. For audio-reactive effects you want a monitor source, not a microphone; the selection and PipeWire/PulseAudio setup live in the Guide.

hypercolor audio devices

The active capture device is marked in the table; --json returns the full list with sample rates and channel counts.

πŸ”—Library

πŸ”—library

Saved effect configurations in three flavors: favorites (quick-access effect bookmarks), presets (an effect plus a saved set of control values), and playlists (timed sequences of effects and presets).

# Favorites
hypercolor library favorites list
hypercolor library favorites add borealis
hypercolor library favorites remove borealis

# Presets
hypercolor library presets create "Warm Pulse" --effect breathing \
  -c hue=30 -c speed=20 -t cozy --description "Slow amber breathing"
hypercolor library presets list
hypercolor library presets info "Warm Pulse"
hypercolor library presets apply "Warm Pulse"
hypercolor library presets update "Warm Pulse" --data '{"description": "Updated"}'
hypercolor library presets delete "Warm Pulse" --yes

# Playlists
hypercolor library playlists create "Evening" \
  -i effect:borealis:30000 -i preset:warm-pulse:60000:1500
hypercolor library playlists list
hypercolor library playlists activate "Evening"
hypercolor library playlists active
hypercolor library playlists stop
hypercolor library playlists delete "Evening" --yes

presets create takes repeatable -c/--control key=value pairs and -t/--tag values. playlists create takes repeatable -i/--item specs in the form effect:<name> or preset:<name>, optionally suffixed with :duration_ms and :duration_ms:transition_ms. Playlists loop by default; pass --no-loop to play through once.

πŸ”—profiles

A profile saves your full system state (active effect, controls, brightness, layout) so you can restore it later.

hypercolor profiles list
hypercolor profiles create "My Setup" --description "Desk default"
hypercolor profiles apply "My Setup"
hypercolor profiles info "My Setup"
hypercolor profiles delete "My Setup" --yes

create accepts --force to overwrite an existing profile. Profile apply is immediate; --transition is reserved for crossfades and only accepts 0 today.

πŸ”—Network

πŸ”—server

Query the daemon you are connected to.

hypercolor server info     # Version, identity, capabilities
hypercolor server health   # Quick health check

πŸ”—servers

Find other Hypercolor daemons on the local network over mDNS and save them as named connection profiles.

hypercolor servers discover --timeout 5
hypercolor servers adopt "studio-rig" --as studio --timeout 5

adopt saves a discovered instance as a profile (defaulting to the instance name) that you can later select with the global --profile flag.

πŸ”—service

Manage the daemon process through your platform’s service manager (systemctl on Linux, launchctl on macOS). These commands do not call the daemon API.

hypercolor service start
hypercolor service stop
hypercolor service restart
hypercolor service status
hypercolor service enable      # Autostart on login
hypercolor service disable
hypercolor service logs --follow --lines 100
hypercolor service logs --since 1h

logs flags: -f/--follow to tail live, -n/--lines <N> (default 50), and --since <WHEN> accepting expressions like 1h, today, or an ISO date.

πŸ”—System

πŸ”—config

Read and write daemon configuration, and manage CLI connection profiles. Keys are dotted paths into the config tree (for example daemon.fps, audio.gain, daemon.canvas_width).

hypercolor config show
hypercolor config get daemon.canvas_width
hypercolor config set audio.gain 1.5
hypercolor config set daemon.fps 60 --live    # Hot-reload into the running daemon
hypercolor config reset audio.gain
hypercolor config reset --yes                  # Full reset
hypercolor config path                         # Print the config file location

config set --live applies the change to the running daemon immediately rather than only on next restart. The full configuration schema is documented in the Guide.

Connection profiles for the CLI itself live under config profile:

hypercolor config profile list
hypercolor config profile show studio
hypercolor config profile add studio --host 192.168.1.40 --port 9420 --label "Studio rig"
hypercolor config profile set studio host 192.168.1.41
hypercolor config profile default studio
hypercolor config profile remove studio

There are two unrelated β€œprofile” concepts. hypercolor profiles saves lighting state on the daemon. hypercolor config profile saves CLI connection settings (host, port, key) locally so you can switch which daemon you talk to. The global --profile flag selects the latter.

πŸ”—diagnose

Run health checks against the daemon and, optionally, write a full diagnostic report for bug filing.

hypercolor diagnose
hypercolor diagnose --check audio --check render
hypercolor diagnose --system
hypercolor diagnose --report ./hypercolor-report.txt
FlagPurpose
--check <NAME>Run specific checks only. Repeatable: daemon, devices, audio, render, config, permissions.
--report <PATH>Write a full diagnostic report file for bug reports.
--systemInclude verbose system info (GPU, kernel, audio version).

πŸ”—completions

Generate shell completion scripts to stdout.

hypercolor completions bash > ~/.local/share/bash-completion/completions/hypercolor
hypercolor completions zsh  > ~/.zfunc/_hypercolor
hypercolor completions fish > ~/.config/fish/completions/hypercolor.fish
hypercolor completions powershell | Out-String | Invoke-Expression

Supported shells: bash, zsh, fish, powershell.

πŸ”—tui

Launch the interactive terminal dashboard. The TUI auto-starts a local daemon if one is not already running, so it is a one-command way into a live session.

hypercolor tui
hypercolor tui --log-level info

--log-level sets the TUI session log level (error, warn, info, debug, trace); the default is warn. TUI logs route to a file rather than your terminal so they do not corrupt the display.

πŸ”—Scripting and JSON output

The CLI is built for automation. Three output modes cover the common shapes:

hypercolor effects list --format table   # Styled, human-readable (default)
hypercolor effects list --format plain   # One name per line, no decoration
hypercolor effects list --json           # Full daemon envelope, for jq

JSON output returns the daemon’s response envelope. Pull fields with jq:

# Current effect name
hypercolor status --json | jq -r '.active_effect'

# Names of all audio-reactive effects
hypercolor effects list --audio --json | jq -r '.items[].name'

# Apply an effect only if a device is connected
if [ "$(hypercolor devices list --json | jq '.items | length')" -gt 0 ]; then
  hypercolor effects activate borealis
fi

On error the CLI prints the message to stderr and exits non-zero, so the usual shell control flow (&&, ||, set -e) works as expected. Pair --quiet with --plain or --json to keep output clean inside scripts.

πŸ”—Environment variables

VariableSets
HYPERCOLOR_HOSTDaemon host (same as --host).
HYPERCOLOR_PORTDaemon port (same as --port).
HYPERCOLOR_API_KEYBearer token (same as --api-key).
HYPERCOLOR_PROFILECLI connection profile (same as --profile).
HYPERCOLOR_THEMEColor theme (same as --theme).
  • REST API reference β€” every route these commands call.
  • Agents & MCP β€” driving Hypercolor from AI agents, over both this CLI and the MCP server.
  • Guide β€” installation, first launch, audio setup, and the full configuration schema.
  • Hardware β€” per-vendor discovery and pairing flows for Hue, Nanoleaf, WLED, and Govee.