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: <executable directory>]
-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]
-s, --service <SERVICE> Manage Color Hoster service [possible values: create, delete, start, stop]
-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.
JAO1988 made an excellent guide on how to get ColorHoster running with your keyboard. His repo also has a collection of prebuilt VIA JSON configurations for various keyboards.
For my personal setup you can take a look at my QMK fork for Lemokey P1 HE with ColorHoster support and other cool features (the repo also has my VIA JSON config). For ColorHoster implementation there refer to this commit.
If you have any issues patching VIA RGB support into your firmware or creating a VIA JSON config for your keyboard, ask around in OpenRGB Community Discord (qmk-firmware-hacking
channel is a good place to start).
./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
ColorHoster can run as a background service on any OS using the --service
option: create
, start
, stop
, or delete
. When you run --service create
with any CLI options, those options are saved to a colorhoster.toml
config file next to the executable and will become the default options for both service and CLI usage (unless overridden).
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).