{"id":51391055,"url":"https://github.com/hyperb1iss/hypercolor","last_synced_at":"2026-07-03T23:33:35.311Z","repository":{"id":357995228,"uuid":"1171316788","full_name":"hyperb1iss/hypercolor","owner":"hyperb1iss","description":"Open-source RGB lighting orchestration engine for Linux, Windows, and Mac ","archived":false,"fork":false,"pushed_at":"2026-07-03T03:59:35.000Z","size":57534,"stargazers_count":3,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T05:32:36.833Z","etag":null,"topics":["ableton-push","corsair","full-rgb","hid","led","leptos","lighting","lightscript","linux","linux-first","macos","razer","rgb","rgb-lighting","rust","servo","usb","wasm","webgl"],"latest_commit_sha":null,"homepage":"https://hypercolor.lighting","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperb1iss.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["hyperb1iss"],"ko_fi":"hyperb1iss"}},"created_at":"2026-03-03T05:06:36.000Z","updated_at":"2026-07-03T03:59:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hyperb1iss/hypercolor","commit_stats":null,"previous_names":["hyperb1iss/hypercolor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hyperb1iss/hypercolor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperb1iss%2Fhypercolor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperb1iss%2Fhypercolor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperb1iss%2Fhypercolor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperb1iss%2Fhypercolor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperb1iss","download_url":"https://codeload.github.com/hyperb1iss/hypercolor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperb1iss%2Fhypercolor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35105483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ableton-push","corsair","full-rgb","hid","led","leptos","lighting","lightscript","linux","linux-first","macos","razer","rgb","rgb-lighting","rust","servo","usb","wasm","webgl"],"created_at":"2026-07-03T23:33:34.662Z","updated_at":"2026-07-03T23:33:35.302Z","avatar_url":"https://github.com/hyperb1iss.png","language":"Rust","funding_links":["https://github.com/sponsors/hyperb1iss","https://ko-fi.com/hyperb1iss"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/dashboard.png\" alt=\"Hypercolor dashboard running the Neon City effect\" width=\"800\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eHypercolor\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eLinux-first open-source RGB lighting engine\u003c/strong\u003e\u003cbr\u003e\n  \u003csub\u003e✦ Your world is a canvas: paint every pixel. ✦\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Rust-2024_Edition-e135ff?style=for-the-badge\u0026logo=rust\u0026logoColor=white\" alt=\"Rust\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Servo-Web_Engine-80ffea?style=for-the-badge\u0026logo=servo\u0026logoColor=black\" alt=\"Servo\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Leptos-WASM_UI-ff6ac1?style=for-the-badge\u0026logo=webassembly\u0026logoColor=white\" alt=\"Leptos\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-Effect_SDK-f1fa8c?style=for-the-badge\u0026logo=typescript\u0026logoColor=black\" alt=\"SDK\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/wgpu-GPU_Shaders-50fa7b?style=for-the-badge\u0026logo=vulkan\u0026logoColor=white\" alt=\"wgpu\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/hyperb1iss/hypercolor/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/hyperb1iss/hypercolor?style=flat-square\u0026logo=apache\u0026logoColor=white\" alt=\"License\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-the-vision\"\u003eVision\u003c/a\u003e •\n  \u003ca href=\"#-how-it-works\"\u003eHow It Works\u003c/a\u003e •\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-the-ui\"\u003eThe UI\u003c/a\u003e •\n  \u003ca href=\"#️-the-tui\"\u003eThe TUI\u003c/a\u003e •\n  \u003ca href=\"#-get-started\"\u003eGet Started\u003c/a\u003e •\n  \u003ca href=\"#-the-effect-sdk\"\u003eEffect SDK\u003c/a\u003e •\n  \u003ca href=\"#-architecture\"\u003eArchitecture\u003c/a\u003e •\n  \u003ca href=\"#-status\"\u003eStatus\u003c/a\u003e •\n  \u003ca href=\"#security-and-conduct\"\u003eSecurity\u003c/a\u003e •\n  \u003ca href=\"#-contributing\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 🔮 The Vision\n\nRGB lighting is a mess. Single-vendor tools that don't talk to each other, half-working daemons,\nand effects that look like they were designed in 2012. The one great effects engine is proprietary,\nWindows-only, and behind a subscription.\n\n**Hypercolor is the fix.**\n\nOne daemon. Every RGB device you own. Motherboards, keyboards, mice, LED strips, smart lights,\ncase fans, all driven by the same engine at 60fps. Effects aren't hardcoded routines. They're\nweb pages, rendered by an embedded Servo browser and sampled onto your physical LED layout\nevery frame.\n\nYour world is a canvas. Paint every pixel.\n\n## ⚡ How It Works\n\n```mermaid\ngraph LR\n    subgraph Input\n        A[Audio FFT]\n        B[Screen Capture]\n        C[Keyboard / MIDI]\n    end\n\n    subgraph Engine\n        D[Effect Renderer\u003cbr\u003e\u003ci\u003eServo · wgpu · Canvas\u003c/i\u003e]\n        E[Canvas\u003cbr\u003e\u003ci\u003e640 × 480 default\u003c/i\u003e]\n        SF[SparkleFlinger\u003cbr\u003e\u003ci\u003ecompositor\u003c/i\u003e]\n        F[Spatial Sampler]\n    end\n\n    subgraph Hardware\n        G[Razer · Corsair · ASUS\u003cbr\u003e\u003ci\u003eUSB / HID / I2C\u003c/i\u003e]\n        H[WLED · Hue · Nanoleaf\u003cbr\u003e\u003ci\u003eUDP / REST / mDNS\u003c/i\u003e]\n        I[QMK · Push 2\u003cbr\u003e\u003ci\u003eUSB HID · USB MIDI\u003c/i\u003e]\n    end\n\n    A \u0026 B \u0026 C --\u003e D\n    D --\u003e E --\u003e SF --\u003e F\n    F --\u003e G \u0026 H \u0026 I\n```\n\nEffects render to a virtual RGBA canvas, 640×480 by default and tunable in the daemon's rendering\nsettings. **SparkleFlinger**, the render-thread compositor, latches the newest surface from each\nproducer at the frame boundary and blends them into one canonical frame every tick. The spatial\nengine samples that frame at each LED's physical position. Effects use normalized `[0.0, 1.0]`\ncoordinates, so they stay resolution-independent across canvas sizes. Audio, screen capture, and\nkeyboard input feed the render every frame. One effect paints the whole room. Your keyboard,\nyour LED strip, your case fans, all drawing from the same source.\n\n## 🌈 Features\n\n### 🔌 Supported Hardware\n\n\u003c!-- BEGIN COMPAT --\u003e\n\u003c!-- GENERATED by scripts/gen-compat.ts. Do not edit inside the BEGIN/END COMPAT block. Run `just compat` to refresh. --\u003e\n\nHypercolor tracks **414 devices** across **32 vendors** in `data/drivers/vendors/`. **179** ship with a working driver today across **12 driver families**. **233 more** are researched or known, awaiting implementation or hardware to test.\n\n| Vendor | Supported | In progress | Researched | Blocked | Drivers |\n|---|--:|--:|--:|--:|---|\n| [Ableton](docs/content/hardware/compatibility.md#ableton) | 1 | — | — | — | `push2` |\n| [Alienware](docs/content/hardware/compatibility.md#alienware) | — | — | 3 | — | — |\n| [Aqua Computer](docs/content/hardware/compatibility.md#aquacomputer) | — | — | 4 | — | — |\n| [ASRock](docs/content/hardware/compatibility.md#asrock) | — | — | 4 | — | — |\n| [ASUS](docs/content/hardware/compatibility.md#asus) | 10 | — | 10 | — | `asus` |\n| [Cooler Master](docs/content/hardware/compatibility.md#coolermaster) | — | — | 20 | — | — |\n| [Corsair](docs/content/hardware/compatibility.md#corsair) | 49 | — | 34 | — | `corsair` |\n| [Dygma](docs/content/hardware/compatibility.md#dygma) | — | — | — | 2 | `dygma` |\n| [EVGA](docs/content/hardware/compatibility.md#evga) | — | — | 7 | — | — |\n| [Fnatic](docs/content/hardware/compatibility.md#fnatic) | — | — | 3 | — | — |\n| [Gigabyte](docs/content/hardware/compatibility.md#gigabyte) | — | — | 8 | — | — |\n| [Glorious](docs/content/hardware/compatibility.md#glorious) | 1 | — | 4 | — | `qmk` |\n| [Govee](docs/content/hardware/compatibility.md#govee) | 4 | — | — | — | `govee` |\n| [HyperX](docs/content/hardware/compatibility.md#hyperx) | — | — | 16 | — | — |\n| [HYTE](docs/content/hardware/compatibility.md#hyte) | — | — | 2 | — | — |\n| [Lian Li](docs/content/hardware/compatibility.md#lianli) | 9 | — | 2 | — | `lianli` |\n| [Logitech](docs/content/hardware/compatibility.md#logitech) | — | — | 9 | — | — |\n| [Mountain](docs/content/hardware/compatibility.md#mountain) | — | — | 4 | — | — |\n| [MSI](docs/content/hardware/compatibility.md#msi) | — | — | 11 | — | — |\n| [Nanoleaf](docs/content/hardware/compatibility.md#nanoleaf) | 1 | — | — | — | `nanoleaf` |\n| [Nollie](docs/content/hardware/compatibility.md#nollie) | 19 | — | — | — | `nollie` |\n| [NZXT](docs/content/hardware/compatibility.md#nzxt) | — | — | 17 | — | — |\n| [Philips](docs/content/hardware/compatibility.md#philips) | 1 | — | — | — | `hue` |\n| [PrismRGB](docs/content/hardware/compatibility.md#prismrgb) | 3 | — | — | — | `nollie`, `prismrgb` |\n| [QMK](docs/content/hardware/compatibility.md#qmk) | 10 | — | — | — | `qmk` |\n| [Razer](docs/content/hardware/compatibility.md#razer) | 70 | — | 38 | — | `razer` |\n| [Roccat](docs/content/hardware/compatibility.md#roccat) | — | — | 14 | — | — |\n| [Sony](docs/content/hardware/compatibility.md#sony) | — | — | 3 | — | — |\n| [SteelSeries](docs/content/hardware/compatibility.md#steelseries) | — | — | 6 | — | — |\n| [Thermaltake](docs/content/hardware/compatibility.md#thermaltake) | — | — | 10 | — | — |\n| [WLED](docs/content/hardware/compatibility.md#wled) | 1 | — | — | — | `wled` |\n| [Wooting](docs/content/hardware/compatibility.md#wooting) | — | — | 4 | — | — |\n\nNew 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).\n\u003c!-- END COMPAT --\u003e\n\n### 🖥️ Dual Render Path\n\n- **Servo:** an embedded browser rendering HTML Canvas, WebGL, and GLSL shaders headless at\n  60fps. Existing community effects work unmodified.\n- **wgpu:** native GPU shaders compiled to Vulkan, OpenGL, or Metal for maximum performance.\n\n### 🎨 44 Built-In Effects\n\nHypercolor ships 44 built-in effects spanning ambient, audio-reactive, shader, and generative\nstyles. Ambient backgrounds, shader-heavy showpieces, and beat-synced visualizers. Every one is\nopen source and built to be forked.\n\n|               |                   |               |               |\n| ------------- | ----------------- | ------------- | ------------- |\n| Borealis      | Neon City         | Hyperspace    | Cymatics      |\n| Synth Horizon | Fractalux         | Iris          | Arc Storm     |\n| Voidweaver    | Lava Lamp         | Ink Tide      | Wormhole      |\n| Nebula Drift  | Frequency Cascade | Spectral Fire | Cyber Descent |\n| Bubble Garden | Nyan Dash         | Deep Current  | Breakthrough  |\n\n### 🗺️ Spatial Layout Engine\n\nMap your physical desk in the UI. Drag devices onto a 2D canvas, define LED topologies (strips,\nmatrices, rings), and the spatial sampler resolves pixels to LEDs. Pick nearest, bilinear, area\naverage, or Gaussian sampling at every position.\n\n### 🎧 Audio-Reactive Pipeline\n\nFFT with beat detection, mel-band analysis, chromagram, and spectral features. Effects react\nto bass hits, BPM, spectral centroid, or the full 200-bin spectrum. Lock-free buffering keeps\nthe render loop from ever blocking on audio.\n\n### 🌊 And More\n\n- **Scene engine** with priority stacking, Oklab cross-fades, and automation rules\n- **REST API + WebSocket** for full programmatic control\n- **MCP server** for AI assistant integration (Claude Code, Cursor, and friends)\n- **CLI tool** (`hypercolor`) with table/JSON output and shell completions\n- **Hot-reload** on effect changes, no restart required\n- **Screen capture** input for ambient backlighting\n- **Linux session integration** (logind, screensaver) via D-Bus\n\n## 💎 The UI\n\nA web UI served directly by the daemon. Browse effects, tweak controls live, manage devices,\nand design spatial layouts from any browser.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/effects-browser.png\" alt=\"Effects Browser\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eEffects browser with live preview\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/effect-controls.png\" alt=\"Effect Controls\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eControl panel with canvas preview\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/layout-editor.png\" alt=\"Layout Editor\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eDrag-and-drop spatial layout editor\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/devices.png\" alt=\"Devices\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eDevice management\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n- **Effects browser:** search, filter by category, favorites, audio-reactive tags\n- **Live canvas preview:** the active effect streams in the sidebar and control panel\n- **Auto-generated controls:** sliders, dropdowns, color pickers, and toggles derived from\n  effect metadata\n- **Spatial layout editor:** drag-and-drop device placement on a 2D canvas\n- **Ambient reactivity:** the UI tints its edges to match the active effect\n- **Command palette** (⌘K) for keyboard-driven navigation\n\n## 🖥️ The TUI\n\nA terminal UI with true-color LED preview, audio visualization, and fullscreen effect rendering.\nRuns wherever you have a terminal.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/tui-dashboard.png\" alt=\"TUI Dashboard\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eDashboard with live preview and device table\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/tui-effects.png\" alt=\"TUI Effects Browser\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eEffects browser with control sliders\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/tui-fullscreen-bubbles.png\" alt=\"Bubble Garden fullscreen\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eBubble Garden fullscreen\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"docs/images/tui-fullscreen-cymatics.png\" alt=\"Cymatics fullscreen\" width=\"400\"\u003e\u003cbr\u003e\n      \u003csub\u003eCymatics fullscreen\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n- **Live effect preview** rendered in true-color half-block characters\n- **Fullscreen mode** (F11) fills the entire terminal with the active effect\n- **Audio spectrum** with level meter and beat indicators\n- **Quick actions:** number keys for instant effect switching\n\n## 🎯 Get Started\n\nHypercolor is Linux-first. macOS release builds and Windows source builds exist, but Linux is\nthe supported launch path for hardware permissions, services, and full runtime verification.\n\n### Install on Linux\n\n```bash\ngit clone https://github.com/hyperb1iss/hypercolor.git\ncd hypercolor\ncargo install just\njust setup\njust install\n```\n\nSetup installs the Rust toolchain, system packages, Bun, Trunk, cargo-deny, and frontend\ndependencies. The installer then builds the daemon, CLI, TUI, web UI, and bundled effects,\ninstalls a systemd user service, sets up udev rules for USB device access, and persists\n`i2c-dev` so SMBus RGB devices survive reboot.\n\n### Install on Windows\n\nDownload the installer from the\n[GitHub releases page](https://github.com/hyperb1iss/hypercolor/releases) and run it.\nPer-user install (no UAC unless you opt into motherboard/RAM RGB hardware support, which\ninstalls the [PawnIO](https://github.com/namazso/PawnIO) kernel driver via a one-click\nflow). Tested on Windows 10 22H2 and Windows 11 23H2/24H2, x64.\n\nHue, WLED, Nanoleaf, Govee, and USB-HID lighting (Razer, Corsair, Lian Li, etc.) work out\nof the box. Motherboard / DRAM SMBus lighting (ASUS Aura, MSI, Gigabyte) requires the\noptional PawnIO install — Hypercolor prompts you only if compatible hardware is detected.\n\n### Install on macOS\n\nDownload `Hypercolor-\u003cversion\u003e-arm64.dmg` (Apple Silicon) or `-x86_64.dmg` (Intel)\nfrom the [GitHub releases page](https://github.com/hyperb1iss/hypercolor/releases),\ndrag the app into `/Applications`, and launch. Minimum macOS 11 (Big Sur).\n\nOr via Homebrew Cask once the tap is published:\n\n```bash\nbrew install --cask hyperb1iss/tap/hypercolor-app\n```\n\n\u003e While we're finishing the Developer ID + notarization rollout, current builds are\n\u003e unsigned. Gatekeeper will block them on first launch — right-click the app and choose\n\u003e **Open** to confirm. Signed + notarized builds land with the next release.\n\nHue, WLED, Nanoleaf, Govee, and USB-HID lighting (Razer, Corsair, Lian Li, etc.) work\nout of the box. On first run, Hypercolor will prompt for Microphone and Screen Recording\npermissions only if you enable audio- or screen-reactive effects.\n\n### Run\n\n```bash\n# Start the daemon (serves UI at http://localhost:9420)\nhypercolor-daemon\n\n# Control from the command line\nhypercolor effects list\nhypercolor effects activate \"Neon City\"\nhypercolor devices list\n\n# Or drop into the interactive terminal dashboard (auto-starts a local daemon)\nhypercolor tui\n```\n\n### Development\n\nHacking on Hypercolor itself? We use [just](https://github.com/casey/just) for development\nworkflows.\n\n```bash\njust daemon          # Run daemon locally\njust tui             # Run the TUI\njust ui-dev          # Leptos UI dev server on :9430\njust sdk-dev         # SDK dev server with HMR\njust verify          # fmt + lint + test\n```\n\n`just verify` covers the Rust workspace. Use the focused gates for surfaces outside\nthat workspace: `just ui-test \u0026\u0026 just ui-build` for the Leptos UI, `just sdk-lint\n\u0026\u0026 just sdk-check \u0026\u0026 just sdk-build` for the TypeScript SDK, `just python-verify`\nfor the Python client, `just compat-check` for device data, and `just docs-build`\nfor documentation.\n\n## ✦ The Effect SDK\n\nEffects are TypeScript, Canvas, or pure GLSL. The SDK compiles them to self-contained HTML\nfiles that the engine renders at 60fps. Audio data, control values, and canvas context are\nall injected automatically.\n\n```typescript\nimport { effect } from \"@hypercolor/sdk\";\nimport shader from \"./fragment.glsl\";\n\nexport default effect(\n  \"Borealis\",\n  shader,\n  {\n    speed: [1, 10, 5], // → slider\n    intensity: [0, 100, 82], // → slider\n    palette: [\"Northern Lights\", \"SilkCircuit\", \"Cyberpunk\"], // → dropdown\n  },\n  {\n    description: \"Aurora borealis, layered curtains of light\",\n  },\n);\n```\n\nFour tiers, pick the one that fits: **GLSL** (single file, zero JS), **`effect()`** (one-liner\nshader binding), **`canvas()`** (Canvas 2D draw functions), and **full OOP** (class-based with\nlifecycle hooks).\n\nSee the [Effect SDK Guide](docs/content/effects/_index.md) for the full API reference.\n\n## 🏗️ Architecture\n\n```mermaid\ngraph TD\n    subgraph types [hypercolor-types]\n        T[Shared vocabulary\u003cbr\u003e\u003ci\u003ezero deps\u003c/i\u003e]\n    end\n\n    subgraph hal [hypercolor-hal]\n        H[USB/HID Drivers\u003cbr\u003e\u003ci\u003eRazer · Corsair · ASUS · Nollie · QMK · ...\u003c/i\u003e]\n    end\n\n    subgraph platform [Platform Interop]\n        LGI[linux-gpu-interop\u003cbr\u003e\u003ci\u003eGL→wgpu texture import\u003c/i\u003e]\n        WPI[windows-pawnio\u003cbr\u003e\u003ci\u003eSMBus via PawnIO\u003c/i\u003e]\n    end\n\n    subgraph core [hypercolor-core]\n        C[Engine\u003cbr\u003e\u003ci\u003erender loop · spatial · audio · effects\u003c/i\u003e]\n    end\n\n    subgraph drivers [Network Drivers]\n        API[driver-api]\n        DB[driver-builtin\u003cbr\u003e\u003ci\u003ecompile-time bundle\u003c/i\u003e]\n        API --\u003e HUE[Hue]\n        API --\u003e NL[Nanoleaf]\n        API --\u003e WL[WLED]\n        API --\u003e GV[Govee]\n        HUE \u0026 NL \u0026 WL \u0026 GV --\u003e DB\n    end\n\n    subgraph daemon [hypercolor-daemon]\n        D[REST API · WebSocket · MCP\u003cbr\u003e\u003ci\u003eAxum on :9420\u003c/i\u003e]\n    end\n\n    subgraph clients [Clients]\n        CLI[CLI\u003cbr\u003e\u003ci\u003ehypercolor\u003c/i\u003e]\n        TUI[TUI\u003cbr\u003e\u003ci\u003eRatatui\u003c/i\u003e]\n        UI[Web UI\u003cbr\u003e\u003ci\u003eLeptos WASM\u003c/i\u003e]\n        DT[Desktop\u003cbr\u003e\u003ci\u003eTauri\u003c/i\u003e]\n        TR[Tray\u003cbr\u003e\u003ci\u003eSystem applet\u003c/i\u003e]\n        APP[app\u003cbr\u003e\u003ci\u003eunified shell\u003c/i\u003e]\n    end\n\n    T --\u003e H \u0026 C \u0026 LGI \u0026 WPI\n    H --\u003e C\n    LGI \u0026 WPI --\u003e C\n    C --\u003e API\n    H --\u003e DB\n    C \u0026 H \u0026 DB --\u003e D\n    D --\u003e CLI \u0026 TUI \u0026 UI\n    APP --\u003e DT \u0026 TR \u0026 D\n```\n\nIt's Rust all the way down. The daemon, CLI, TUI, tray applet, and HAL drivers are\nall Rust. The web UI is Rust compiled to WASM via Leptos. Even the embedded browser\nis Servo (Rust). The only non-Rust code is the TypeScript effect SDK and the GLSL\nshaders it compiles.\n\nThe render thread runs on a dedicated OS thread with adaptive FPS (10 to 60, auto-shifting\nacross 5 tiers based on measured budget). Each tick, SparkleFlinger composes frame producers\ninto one canonical surface, with a zero-copy bypass fast path when a single full-opacity\nlayer is active. The event bus uses lock-free `tokio::sync::watch` channels for high-frequency\nframe data and `broadcast` for discrete events. `zerocopy` structs handle wire-format encoding\nat zero allocation cost per frame. The spatial engine caches LED positions and samples the\ncomposed frame with configurable interpolation (nearest, bilinear, area average, Gaussian).\n\nWorkspace lints forbid `unsafe` in application, driver, and domain crates. The explicit\nexceptions are audited platform interop crates:\n[`hypercolor-linux-gpu-interop`](crates/hypercolor-linux-gpu-interop) for Linux GPU\nsurface import and [`hypercolor-windows-pawnio`](crates/hypercolor-windows-pawnio)\nfor Windows service/process boundaries. Both deny undocumented unsafe blocks. Edition\n2024. Rust 1.94+.\n\n## 📡 Status\n\nHypercolor is in active development (v0.1.0). The core engine, effect SDK, web UI, TUI, and\n11 shipping driver families all work today on Linux. macOS arm64 release artifacts and\nWindows source builds are experimental until their installer and runtime gates match Linux.\nEvery screenshot in this README was captured from a live instance running on real hardware.\n\nKnown launch limitations:\n\n- Linux is the only fully supported install and runtime path for v0.1.0.\n- SDK packages are pre-release and use local checkout or `file:` dependencies until npm publish.\n- The Python client is source-only for launch and is not published to PyPI yet.\n- Windows hardware service setup remains experimental.\n\n**Coming soon:** effect marketplace, Wasmtime plugin system for community backends, Wooting\nanalog keyboards, and driver families for Cooler Master, NZXT, and Logitech. See the\n[full compatibility matrix](docs/content/hardware/compatibility.md) for researched hardware\nwaiting on implementation.\n\n## Security And Conduct\n\nPlease report vulnerabilities through the process in [`SECURITY.md`](SECURITY.md). Community\nparticipation follows the [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).\n\n## 💜 Contributing\n\nHypercolor grows on contributions. Drivers, effects, UI polish, docs, all of it lands here.\n\n**Writing effects** is the fastest way in. The SDK compiles TypeScript, Canvas, or GLSL\nstraight to HTML, and the engine picks them up on save. **Device drivers** are where the\nleverage is highest. If you own hardware that isn't on the supported list, you're the person\nto add it.\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md) for guidelines.\n\n## 📄 License\n\nApache-2.0. See [LICENSE](LICENSE).\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/hyperb1iss/hypercolor\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/hyperb1iss/hypercolor?style=social\" alt=\"Star on GitHub\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://ko-fi.com/hyperb1iss\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Ko--fi-Support%20Development-ff5e5b?logo=ko-fi\u0026logoColor=white\" alt=\"Ko-fi\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003e\n    If Hypercolor lights up your desk, give us a ⭐ or \u003ca href=\"https://ko-fi.com/hyperb1iss\"\u003esupport the project\u003c/a\u003e\n    \u003cbr\u003e\u003cbr\u003e\n    ✦ Built with obsession by \u003ca href=\"https://hyperbliss.tech\"\u003e\u003cstrong\u003eHyperbliss\u003c/strong\u003e\u003c/a\u003e ✦\n  \u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperb1iss%2Fhypercolor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperb1iss%2Fhypercolor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperb1iss%2Fhypercolor/lists"}