<p align="center">
<img src="assets/brand/social/hypercolor-banner.png" alt="Hypercolor" width="800">
</p>
<p align="center">
<strong>Open-source RGB lighting engine for Linux, Windows, and macOS</strong><br>
<sub>✦ Your world is a canvas: paint every pixel. ✦</sub>
</p>
<p align="center">
<img src="docs/images/dashboard.png" alt="Hypercolor dashboard running the Neon City effect" width="800">
</p>
<p align="center">
<img src="https://img.shields.io/badge/Rust-2024_Edition-e135ff?style=for-the-badge&logo=rust&logoColor=white" alt="Rust">
<img src="https://img.shields.io/badge/Servo-Web_Engine-80ffea?style=for-the-badge&logo=servo&logoColor=black" alt="Servo">
<img src="https://img.shields.io/badge/Leptos-WASM_UI-ff6ac1?style=for-the-badge&logo=webassembly&logoColor=white" alt="Leptos">
<img src="https://img.shields.io/badge/TypeScript-Effect_SDK-f1fa8c?style=for-the-badge&logo=typescript&logoColor=black" alt="SDK">
<img src="https://img.shields.io/badge/wgpu-GPU_Compositor-50fa7b?style=for-the-badge&logo=vulkan&logoColor=white" alt="wgpu">
</p>
<p align="center">
<a href="https://github.com/hyperb1iss/hypercolor/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/hyperb1iss/hypercolor?style=flat-square&logo=apache&logoColor=white" alt="License">
</a>
</p>
<p align="center">
<a href="#-the-vision">Vision</a> •
<a href="#-how-it-works">How It Works</a> •
<a href="#-features">Features</a> •
<a href="#-the-ui">The UI</a> •
<a href="#️-the-tui">The TUI</a> •
<a href="#-get-started">Get Started</a> •
<a href="#-the-effect-sdk">Effect SDK</a> •
<a href="#️-architecture">Architecture</a> •
<a href="#-status">Status</a> •
<a href="#security-and-conduct">Security</a> •
<a href="#-contributing">Contributing</a>
</p>
---
## 🔮 The Vision
RGB lighting is a mess. Single-vendor tools that don't talk to each other, half-working daemons,
and effects that look like they were designed in 2012. The one great effects engine is proprietary,
Windows-only, and behind a subscription.
**Hypercolor is the fix.**
One app. Every RGB device you own. Motherboards, keyboards, mice, LED strips, smart lights,
case fans, all driven by the same engine at up to 60fps. Effects aren't hardcoded routines.
They're web pages, rendered by an embedded Servo browser and sampled onto your physical LED
layout every frame. And it runs on Linux, Windows, and macOS.
## ⚡ How It Works
```mermaid
graph LR
subgraph Input
A[Audio FFT]
B[Screen Capture]
C[Keyboard / MIDI]
end
subgraph Engine
D[Effect Renderer<br><i>Servo · Native Rust</i>]
E[Canvas<br><i>640 × 480 default</i>]
SF[SparkleFlinger<br><i>compositor</i>]
F[Spatial Sampler]
end
subgraph Hardware
G[Razer · Corsair · ASUS<br><i>USB / HID / I2C</i>]
H[WLED · Hue · Nanoleaf<br><i>UDP / REST / mDNS</i>]
I[QMK · Push 2<br><i>USB HID · USB MIDI</i>]
end
A & B & C --> D
D --> E --> SF --> F
F --> G & H & I
```
Effects render to a virtual RGBA canvas, 640×480 by default and configurable.
**SparkleFlinger**, the GPU compositor (wgpu, with a CPU fallback), latches the newest
surface from each producer every frame and blends them into one canonical canvas, and the
spatial engine samples it at each LED's physical position. Effects use normalized
coordinates, so they stay resolution-independent. Audio, screen capture, and keyboard input
feed every frame. One effect paints the whole room: your keyboard, LED strip, and case fans
all draw from the same source.
## 🌈 Features
### 🔌 Supported Hardware
<!-- BEGIN COMPAT -->
<!-- GENERATED by scripts/gen-compat.ts. Do not edit inside the BEGIN/END COMPAT block. Run `just compat` to refresh. -->
Hypercolor tracks **420 devices** across **32 vendors** in `data/drivers/vendors/`. **184** ship with a working driver today across **12 driver families**. **1** are actively in development. **233 more** are researched or known, awaiting implementation or hardware to test.
| Vendor | Supported | In progress | Researched | Blocked | Drivers |
|---|--:|--:|--:|--:|---|
| [Ableton](docs/content/hardware/compatibility.md#ableton) | 1 | — | — | — | `push2` |
| [Alienware](docs/content/hardware/compatibility.md#alienware) | — | — | 3 | — | — |
| [Aqua Computer](docs/content/hardware/compatibility.md#aquacomputer) | — | — | 4 | — | — |
| [ASRock](docs/content/hardware/compatibility.md#asrock) | — | — | 4 | — | — |
| [ASUS](docs/content/hardware/compatibility.md#asus) | 10 | — | 10 | — | `asus` |
| [Cooler Master](docs/content/hardware/compatibility.md#coolermaster) | — | — | 20 | — | — |
| [Corsair](docs/content/hardware/compatibility.md#corsair) | 49 | — | 34 | — | `corsair` |
| [Dygma](docs/content/hardware/compatibility.md#dygma) | — | — | — | 2 | `dygma` |
| [EVGA](docs/content/hardware/compatibility.md#evga) | — | — | 7 | — | — |
| [Fnatic](docs/content/hardware/compatibility.md#fnatic) | — | — | 3 | — | — |
| [Gigabyte](docs/content/hardware/compatibility.md#gigabyte) | — | — | 8 | — | — |
| [Glorious](docs/content/hardware/compatibility.md#glorious) | 1 | — | 4 | — | `qmk` |
| [Govee](docs/content/hardware/compatibility.md#govee) | 4 | — | — | — | `govee` |
| [HyperX](docs/content/hardware/compatibility.md#hyperx) | — | — | 16 | — | — |
| [HYTE](docs/content/hardware/compatibility.md#hyte) | — | — | 2 | — | — |
| [Lian Li](docs/content/hardware/compatibility.md#lianli) | 13 | 1 | 2 | — | `lianli` |
| [Logitech](docs/content/hardware/compatibility.md#logitech) | — | — | 9 | — | — |
| [Mountain](docs/content/hardware/compatibility.md#mountain) | — | — | 4 | — | — |
| [MSI](docs/content/hardware/compatibility.md#msi) | — | — | 11 | — | — |
| [Nanoleaf](docs/content/hardware/compatibility.md#nanoleaf) | 1 | — | — | — | `nanoleaf` |
| [Nollie](docs/content/hardware/compatibility.md#nollie) | 19 | — | — | — | `nollie` |
| [NZXT](docs/content/hardware/compatibility.md#nzxt) | — | — | 17 | — | — |
| [Philips](docs/content/hardware/compatibility.md#philips) | 1 | — | — | — | `hue` |
| [PrismRGB](docs/content/hardware/compatibility.md#prismrgb) | 3 | — | — | — | `nollie`, `prismrgb` |
| [QMK](docs/content/hardware/compatibility.md#qmk) | 10 | — | — | — | `qmk` |
| [Razer](docs/content/hardware/compatibility.md#razer) | 71 | — | 38 | — | `razer` |
| [Roccat](docs/content/hardware/compatibility.md#roccat) | — | — | 14 | — | — |
| [Sony](docs/content/hardware/compatibility.md#sony) | — | — | 3 | — | — |
| [SteelSeries](docs/content/hardware/compatibility.md#steelseries) | — | — | 6 | — | — |
| [Thermaltake](docs/content/hardware/compatibility.md#thermaltake) | — | — | 10 | — | — |
| [WLED](docs/content/hardware/compatibility.md#wled) | 1 | — | — | — | `wled` |
| [Wooting](docs/content/hardware/compatibility.md#wooting) | — | — | 4 | — | — |
New drivers land often. Full matrix: [docs/content/hardware/compatibility.md](docs/content/hardware/compatibility.md). If you own hardware Hypercolor doesn't support yet, see [CONTRIBUTING.md](CONTRIBUTING.md).
<!-- END COMPAT -->
### 🌉 OpenRGB Fallback
Hardware without a native driver can still join your effects and layout through the opt-in
**OpenRGB bridge**: Hypercolor renders the colors, and a separately installed OpenRGB SDK
server delivers them. Native drivers keep the devices they already support, and OpenRGB is
neither needed for native hardware nor bundled.
Run `hypercolor devices coverage` to see where the bridge would help and
`hypercolor openrgb hints` for setup. Hypercolor can configure a managed OpenRGB server and
start it with the overlapping detectors disabled. The
[OpenRGB fallback guide](docs/content/hardware/openrgb-fallback.md) covers hub LED counts and
troubleshooting.
### 🖥️ Dual Render Path
- **Servo:** an embedded browser rendering HTML Canvas, WebGL, and GLSL shaders headless at
60fps. Existing community effects work unmodified.
- **Native Rust:** compiled-in CPU renderers for the built-in effects, with no browser in the
frame path.
### 🎨 58 Built-In Effects
Hypercolor ships 58 built-in effects across ambient, audio-reactive, shader, generative, and
interactive styles, plus 7 display faces for devices with LCD panels. Keystrike lights up
under your keystrokes, and Touch Ripple throws light from wherever you touch a ROLI Lightpad
or an Ableton Push 2. Every effect is open source and built to be forked, with curated cover
art and tuned presets.
| | | | |
| ------------- | ----------------- | ------------- | ------------- |
| Borealis | Neon City | Hyperspace | Cymatics |
| Synth Horizon | Fractalux | Iris | Arc Storm |
| Voidweaver | Lava Lamp | Ink Tide | Wormhole |
| Nebula Drift | Frequency Cascade | Spectral Fire | Cyber Descent |
| Bubble Garden | Nyan Dash | Deep Current | Breakthrough |
### 🗺️ Spatial Layout Engine
Map your physical desk in the UI. Drag devices onto a 2D canvas, define LED topologies (strips,
matrices, rings), and the spatial sampler resolves pixels to LEDs. Pick nearest, bilinear, area
average, or Gaussian sampling at every position.
### 🎧 Audio-Reactive Pipeline
FFT with beat detection, mel-band analysis, chromagram, and spectral features. Effects react
to bass hits, BPM, spectral centroid, or the full 200-bin spectrum. Lock-free buffering keeps
the render loop from ever blocking on audio.
### ⌨️ Interactive Effects
Effects can react to your keyboard and mouse. Input is consent-gated and off by default, and
Hypercolor opens input devices only while an interactive effect is running. The
[input capture guide](docs/content/guide/input-capture.md) covers what it can and can't see.
### 🌊 And More
- **Scene engine** with priority stacking, Oklab cross-fades, and automation rules
- **Display faces** for LCD-equipped devices: clocks, sensor dashboards, now-playing panels
- **Screen capture** input for ambient backlighting
- **Portable device identity**: devices keep their identity across cable moves, IP churn,
and BIOS renumbering, and layouts can be rebound after hardware swaps
- **REST API + WebSocket** for full programmatic control, with a Python client on
[PyPI](https://pypi.org/project/hypercolor/)
- **MCP server** for AI assistant integration (Claude Code, Cursor, and friends)
- **CLI tool** (`hypercolor`) with table/JSON output and shell completions
- **Hot-reload** on effect changes, no restart required
- **Session and power awareness**: lights go dark when the machine sleeps and come back on
resume, and screen lock can dim or turn them off too
## 💎 The UI
The web UI is built right in: open `http://localhost:9420` and everything is there, no
separate install. Browse effects, tweak controls live, manage devices, and design spatial
layouts from any browser. The whole thing is responsive, so your phone works as a remote
control for the rig.
<table>
<tr>
<td align="center">
<img src="docs/images/effects-browser.png" alt="Effects Browser" width="400"><br>
<sub>Effects browser with live preview</sub>
</td>
<td align="center">
<img src="docs/images/effect-controls.png" alt="Effect Controls" width="400"><br>
<sub>Control panel with canvas preview</sub>
</td>
</tr>
<tr>
<td align="center">
<img src="docs/images/layout-editor.png" alt="Layout Editor" width="400"><br>
<sub>Drag-and-drop spatial layout editor</sub>
</td>
<td align="center">
<img src="docs/images/devices.png" alt="Devices" width="400"><br>
<sub>Device management</sub>
</td>
</tr>
<tr>
<td align="center">
<img src="docs/images/canvas-fullscreen-bubbles.png" alt="Bubble Garden on the fullscreen canvas" width="400"><br>
<sub>Fullscreen canvas: Bubble Garden</sub>
</td>
<td align="center">
<img src="docs/images/canvas-fullscreen-cymatics.png" alt="Cymatics on the fullscreen canvas" width="400"><br>
<sub>Fullscreen canvas: Cymatics, audio-reactive</sub>
</td>
</tr>
</table>
- **Effects browser:** search, filter by category, favorites, audio-reactive tags
- **Live canvas preview:** the active effect streams in the sidebar and control panel
- **Auto-generated controls:** sliders, dropdowns, color pickers, and toggles derived from
effect metadata
- **Spatial layout editor:** drag-and-drop device placement on a 2D canvas
- **Ambient reactivity:** the UI tints its edges to match the active effect
- **Command palette** (⌘K) for keyboard-driven navigation
## 🖥️ The TUI
A terminal UI with true-color LED preview, audio visualization, and fullscreen effect rendering.
Runs wherever you have a terminal.
<table>
<tr>
<td align="center">
<img src="docs/images/tui-dashboard.png" alt="TUI Dashboard" width="400"><br>
<sub>Dashboard with live preview and device table</sub>
</td>
<td align="center">
<img src="docs/images/tui-effects.png" alt="TUI Effects Browser" width="400"><br>
<sub>Effects browser with control sliders</sub>
</td>
</tr>
</table>
- **Live effect preview** rendered in true-color half-block characters
- **Fullscreen mode** (`z`) fills the entire terminal with the active effect
- **Audio spectrum** with level meter and beat indicators
- **Quick actions:** number keys for instant effect switching
## 🎯 Get Started
Every tagged release ships Linux, Windows, and macOS installers on the
[GitHub releases page](https://github.com/hyperb1iss/hypercolor/releases), and the
[download page](https://hyperb1iss.github.io/hypercolor/download/) walks through every install
path. Hue, WLED, Nanoleaf, and Govee work out of the box on every platform. USB-HID lighting
(Razer, Corsair, Lian Li, and friends) does too on Windows and macOS, and on Linux it needs
the udev rules covered below.
### Install on Linux
The release installer downloads the right tarball, verifies its checksum, and sets up the
systemd user service:
```bash
curl -fsSL https://raw.githubusercontent.com/hyperb1iss/hypercolor/main/scripts/install-release.sh | bash
```
Device permissions are a separate step. The
[udev rules guide](docs/content/guide/installation.md#linux-udev-rules-usb-and-input-device-access)
has the commands for this installer, and a source checkout runs `just udev-install`. The
`.deb` from the releases page and
[`hypercolor-bin`](https://aur.archlinux.org/packages/hypercolor-bin) from the AUR ship the
rules themselves, so they skip this step. Homebrew works on Linux too
(`brew install hyperb1iss/tap/hypercolor`), and NixOS users get a flake with a
`services.hypercolor` module; `nix run github:hyperb1iss/hypercolor` tries the CLI without
installing anything.
Building from source instead:
```bash
git clone https://github.com/hyperb1iss/hypercolor.git
cd hypercolor
cargo install just
just setup
just install
```
`just setup` installs the Rust toolchain, system packages, Bun, Trunk, cargo-deny, and
frontend dependencies. `just install` builds the daemon, CLI, TUI, web UI, and bundled
effects, installs the systemd user service and the USB udev rules, and persists `i2c-dev` so
SMBus RGB devices survive reboot. Interactive effects also need the input rules from
`just udev-install`.
### Install on Windows
Grab `Hypercolor_<version>_x64-setup.exe` from the releases page. The install is
per-machine, so expect one UAC prompt. When it detects compatible hardware, that same
elevated pass offers the optional [PawnIO](https://github.com/namazso/PawnIO) driver for
motherboard and DRAM SMBus lighting. Native SMBus support covers ASUS Aura today, and other
vendors may work through the [OpenRGB bridge](docs/content/hardware/openrgb-fallback.md).
Tested on Windows 10 22H2 and Windows 11 23H2/24H2, x64.
> Windows builds are not code-signed yet, so SmartScreen will warn on first run.
> Choose **More info**, then **Run anyway**.
### Install on macOS
Download `Hypercolor-<version>-arm64.dmg` from the releases page, drag the app into
`/Applications`, and launch. The DMG is signed and notarized, and it needs Apple silicon
and macOS 15.2 (Sequoia) or newer. Homebrew works too:
```bash
brew install --cask hyperb1iss/tap/hypercolor-app
```
The plain `hypercolor` formula (`brew install hyperb1iss/tap/hypercolor`) skips the app
bundle and installs the daemon, CLI, TUI, and web UI. Hypercolor asks for Microphone,
Screen Recording, or Input Monitoring access only when you turn on the audio, screen, or
keyboard feature that needs it.
### What works where
| Capability | Linux | Windows | macOS |
| --- | --- | --- | --- |
| Effects, devices, web UI, TUI, CLI | ✓ | ✓ | ✓ |
| Audio-reactive (microphone) | ✓ | ✓ | ✓ |
| Audio-reactive (system audio) | ✓ native monitor | loopback device¹ | loopback device¹ |
| Screen capture | Wayland portal, opt-in | Desktop Duplication, default on | ScreenCaptureKit system picker |
| Keyboard/mouse input | evdev | Raw Input² | Core Graphics event tap³ |
| Motherboard / DRAM RGB (SMBus) | `i2c-dev` | PawnIO helper | not available |
| Session and power integration | logind + screensaver | power + session lock | NSWorkspace + IOKit |
| Background service | systemd user service | Windows service⁴ | launchd agent |
¹ System-audio reactivity needs a loopback input the OS exposes: Stereo Mix or a virtual
cable on Windows, BlackHole or Loopback on macOS.
² A daemon installed as a Windows service cannot see host input across the session
boundary; run it in your session for interactive effects.
³ Keyboard listening needs Input Monitoring. Pointer-only effects do not.
⁴ Or per-user autostart via the desktop app.
### Run
Installed the desktop app? Just launch **Hypercolor** and you're done: it starts the
engine, sits in your tray, and opens the UI. The terminal route works everywhere too:
```bash
# Start the engine (serves the UI at http://localhost:9420)
hypercolor-daemon
# Control from the command line
hypercolor effects list
hypercolor effects activate "Neon City"
hypercolor devices list
# Or drop into the interactive terminal dashboard (auto-starts a local daemon)
hypercolor tui
```
### 🪄 Set Up Your Rig with an Agent
Tell your agent which case you own and where the fans, strips, and controllers sit.
Hypercolor's **rig-setup** skill reads the connected hardware, researches the case's
dimensions, asks about your wiring, and generates a spatial layout and scene. You check
the preview together, then watch the real LEDs to dial in chain order and orientation.
You need an agent that can read local skills and run commands, with Hypercolor running and
Python 3 installed. Copy the whole `rig-setup` and `hypercolor-control` folders, scripts and
references included, from the release bundle's `share/hypercolor/skills/` (or from
[skills/](skills/)) into your agent's skill directory. Then ask:
> Use rig-setup to map my PC in Hypercolor. I have an O11D EVO RGB with three
> bottom fans, three side fans, and a top radiator. Check device coverage, ask me
> what is plugged into each controller port, and show me the layout before applying it.
The skill saves your wiring and verified orientation in a reusable rig spec, so a
controller swap does not mean rebuilding the layout by hand. The **hypercolor-control**
skill handles everyday requests such as saving a scene, adjusting an effect, or
diagnosing a dark strip. Agents can use the CLI and REST API directly; MCP is an
optional connection for structured lighting tools. See
[agent rig setup](docs/content/agents/rig-setup.md), the [user skills](skills/README.md),
and [MCP setup](docs/content/agents/mcp-setup.md).
### Development
Hacking on Hypercolor itself? We use [just](https://github.com/casey/just) for development
workflows.
```bash
just daemon # Run daemon locally
just tui # Run the TUI
just ui-dev # Leptos UI dev server on :9430
just sdk-dev # SDK dev server with HMR
just verify # fmt + lint + test
```
`just verify` covers the Rust workspace. Use the focused gates for surfaces outside
that workspace: `just ui-test && just ui-build` for the Leptos UI, `just sdk-lint
&& just sdk-check && just sdk-build` for the TypeScript SDK, `just python-verify`
for the Python client, `just compat-check` for device data, and `just docs-build`
for documentation.
## ✦ The Effect SDK
Effects are TypeScript, Canvas, or pure GLSL. The SDK compiles them to self-contained HTML
files that the engine renders at 60fps. Audio data, control values, and canvas context are
all injected automatically.
```typescript
import { effect } from "hypercolor";
import shader from "./fragment.glsl";
export default effect(
"Borealis",
shader,
{
speed: [1, 10, 5], // → slider
intensity: [0, 100, 82], // → slider
palette: ["Northern Lights", "SilkCircuit", "Cyberpunk"], // → dropdown
},
{
description: "Aurora borealis, layered curtains of light",
},
);
```
Four tiers, pick the one that fits: **GLSL** (single file, zero JS), **`effect()`** (one-liner
shader binding), **`canvas()`** (Canvas 2D draw functions), and **full OOP** (class-based with
lifecycle hooks).
The SDK is on npm as [`hypercolor`](https://www.npmjs.com/package/hypercolor), and
`bun create hypercolor` scaffolds an effect workspace through
[`create-hypercolor`](https://www.npmjs.com/package/create-hypercolor). See the
[Effect SDK Guide](docs/content/effects/_index.md) for the full API reference.
## 🏗️ Architecture
```mermaid
graph TD
subgraph vocab [Shared Vocabulary]
CK[hypercolor-color<br><i>pixel types · conversions · blending</i>]
T[hypercolor-types<br><i>devices · scenes · effects · API contracts</i>]
GF[hypercolor-gpu-frame<br><i>imported GPU frame vocabulary</i>]
end
subgraph hal [hypercolor-hal]
H[USB/HID Drivers<br><i>Razer · Corsair · ASUS · Nollie · QMK · ...</i>]
end
subgraph platform [Platform Interop]
LGI[linux-gpu-interop<br><i>GL→wgpu import</i>]
MGI[macos-gpu-interop<br><i>IOSurface import</i>]
WGI[windows-gpu-interop<br><i>ANGLE/D3D11 import</i>]
WCA[windows-capture<br><i>Desktop Duplication</i>]
WIN[windows-input<br><i>Raw Input</i>]
WPI[windows-pawnio<br><i>SMBus via PawnIO</i>]
WT[windows-telemetry<br><i>WMI sensors · board identity</i>]
end
subgraph core [hypercolor-core]
C[Engine<br><i>render loop · spatial · audio · effects</i>]
end
subgraph drivers [Network Drivers]
API[driver-api]
DB[driver-builtin<br><i>compile-time bundle</i>]
API --> HUE[Hue]
API --> NL[Nanoleaf]
API --> WL[WLED]
API --> GV[Govee]
HUE & NL & WL & GV --> DB
end
subgraph daemon [hypercolor-daemon]
D[REST API · WebSocket · MCP<br><i>Axum on :9420</i>]
end
subgraph clients [Clients]
CLI[CLI<br><i>hypercolor</i>]
TUI[TUI<br><i>Ratatui</i>]
UI[Web UI<br><i>Leptos WASM</i>]
DT[Desktop<br><i>Tauri</i>]
TR[Tray<br><i>System applet</i>]
APP[app<br><i>unified shell</i>]
end
CK --> T
CK & T --> H & C & D & CLI & TUI & UI
T --> API & DB & APP & WIN & WT
GF --> C & D & LGI & MGI & WGI
WPI --> H & WT
H --> C & DB
LGI & MGI & WGI & WCA & WIN & WT --> C
MGI & WGI & WCA --> D
API --> C & DB & D
C --> D & CLI & TUI & APP
DB --> D
D -. serves .-> CLI & TUI & UI
APP -. owns .-> DT & TR
APP -. supervises .-> D
```
Solid arrows are Cargo dependencies, pointing from the dependency to the crate that
consumes it; dashed arrows are runtime relationships, not build edges. `hypercolor-color`
and `hypercolor-types` reach nearly every crate in the workspace, so only the structural
edges are drawn here. The full graph is in [AGENTS.md](AGENTS.md).
It's Rust all the way down: the daemon, CLI, TUI, desktop app, and HAL drivers are Rust,
the web UI is Rust compiled to WASM via Leptos, and even the embedded browser is Servo. The
only non-Rust code is the TypeScript effect SDK and the GLSL shaders it compiles.
The render loop runs on a dedicated thread with adaptive FPS, shifting across five tiers
from 10 to 60 based on measured frame budget. SparkleFlinger takes a zero-copy fast path
when a single full-opacity layer is active. The event bus uses lock-free
`tokio::sync::watch` channels for high-frequency frame data and `broadcast` for discrete
events, and `zerocopy` structs encode device wire formats with no per-frame allocation.
Workspace lints forbid `unsafe` outside the audited platform crates (GPU surface import,
screen capture, host input on macOS and Windows, session and power monitors, macOS
now-playing media, the PawnIO SMBus broker, the signed Windows helper, and filesystem glue)
and the desktop app shell.
Each opts out explicitly and denies undocumented unsafe blocks. Edition 2024, Rust 1.95+.
## 📡 Status
Hypercolor is in active development. The core engine, effect SDK, web UI, TUI, and 12
shipping driver families work today on Linux, Windows, and macOS, and every screenshot in
this README was captured from a live instance on real hardware.
**Coming soon:** effect marketplace, Wasmtime plugin system for community backends, Wooting
analog keyboards, and driver families for Cooler Master, NZXT, and Logitech. See the
[full compatibility matrix](docs/content/hardware/compatibility.md) for researched hardware
waiting on implementation.
## Security And Conduct
Please report vulnerabilities through the process in [`SECURITY.md`](SECURITY.md). Community
participation follows the [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).
## 💜 Contributing
Hypercolor grows on contributions. Drivers, effects, UI polish, docs, all of it lands here.
**Writing effects** is the fastest way in. The SDK compiles TypeScript, Canvas, or GLSL
straight to HTML, and the engine picks them up on save. **Device drivers** are where the
leverage is highest. If you own hardware that isn't on the supported list, you're the person
to add it.
See [`CONTRIBUTING.md`](CONTRIBUTING.md) for guidelines.
## 📄 License
Apache-2.0. See [LICENSE](LICENSE).
---
<p align="center">
<a href="https://github.com/hyperb1iss/hypercolor">
<img src="https://img.shields.io/github/stars/hyperb1iss/hypercolor?style=social" alt="Star on GitHub">
</a>
<a href="https://ko-fi.com/hyperb1iss">
<img src="https://img.shields.io/badge/Ko--fi-Support%20Development-ff5e5b?logo=ko-fi&logoColor=white" alt="Ko-fi">
</a>
</p>
<p align="center">
<sub>
If Hypercolor lights up your desk, give us a ⭐ or <a href="https://ko-fi.com/hyperb1iss">support the project</a>
<br><br>
✦ Built with obsession by <a href="https://hyperbliss.tech"><strong>Hyperbliss</strong></a> ✦
</sub>
</p>