OpenRGB compatible high-performance SDK server for VIA per-key RGB.
✨ Features:
- 🎮 OpenRGB Protocol v3 Support - Full compatibility with OpenRGB clients
- 🔋 Optimized Updates - Only sends changed LED data in minimal chunks
- 🎨 Flexible Brightness Control - Choose between hue/saturation-only or full RGB+brightness
- ⌨️ Multi-Keyboard Support - Manage multiple connected devices simultaneously
- 🦀 Rust-Powered - Async I/O and thread-safe concurrency
- 🌐 Cross-Platform - Windows/macOS/Linux support (x86 & ARM)
- 💾 Profile Management - Save/load lighting configurations
Usage: ColorHoster [OPTIONS]
Options:
-d, --directory <DIRECTORY> Set a directory to look for VIA `.json` definitions for keyboards [default: ./]
-j, --json <JSON> Add a direct path to a VIA `.json` file (can be multiple)
-b, --brightness Allow direct mode to change brightness values
--profiles <PROFILES> Set a directory for storing and loading profiles [default: ./profiles]
-p, --port <PORT> Set the port to listen on [default: 6742]
-h, --help Print help
-V, --version Print version
Example: ./ColorHoster -b -j ./p1_he_ansi_v1.0.json
Download the latest release for your OS.
- Get your keyboard's VIA JSON file with led positions defined in the
keymap
section (example: p1_he_ansi_v1.0.json) - Flash QMK firmware with VIA RGB support (example implementation)
./ColorHoster --brightness --json ./path/to/your_keyboard.json
ColorHoster should be compatible with any OpenRGB v3 protocol client, enabling RGB control through various applications. Some example clients include:
- OpenRGB (can be use as a client as well)
- Project Aurora (may require renaming the binary to
OpenRGB.exe
to be detected) - Artemis RGB
- Launch ColorHoster with your keyboard configuration
- In your RGB control software:
- Add a new OpenRGB SDK device
- Set address to
127.0.0.1
- Set port to
6742
(default)
- The client should automatically detect:
- Keyboard LED layout
- Available lighting modes
- Real-time control capabilities
VIA's RGB protocol doesn't seem to be documented anywhere, so it was reverse-engineered from the keyboard API in the VIA app. The protocol in ColorHoster is also extended to support per-key brightness adjustments (originally it allowed to modify only hue and saturation).