iCC detects every RGB device and every fan in your PC, drives them with the open IonityRGB SDK, and lets Lumina AI direct the whole show from plain language.
Building Tomorrow, Today.
This is the same planner logic that ships inside icc scene — type a mood,
Lumina plans a palette, effect and tempo, and this virtual rig (4 ARGB fans, 2 RAM sticks, a
motherboard strip) plays it. No install needed.
A .NET 10 library with a provider plug-in model. Two providers ship in the box — and fans are first-class citizens, not an afterthought.
A clean-room client for the OpenRGB SDK network protocol (v0–3, auto-negotiated). Hundreds of community-supported devices — motherboards, DRAM, GPUs, ARGB hubs, strips, peripherals — through one local socket. No GPL code inside, which is why iCC is honestly Apache-2.0.
LibreHardwareMonitor-backed detection of physical fans: Super I/O headers, embedded controllers, GPU and AIO fans — with live RPM and PWM duty. Fans with zero lighting still make the list.
Implement IRgbProvider, register it,
and your devices join the same unified inventory. Direct-HID vendor backends are on the
roadmap — contributions welcome.
// One list for everything that glows or spins
await using var icc = IccDeviceManager.CreateDefault();
var inventory = await icc.DetectAsync();
foreach (var device in inventory.Devices)
Console.WriteLine(device); // fans report RPM/PWM alongside RGB devices
var ram = inventory.RgbCapable.First(d => d.Type == DeviceType.Dram);
await icc.SetColorAsync(ram, RgbColor.IonityBlue); // #00BFFF, naturally
The AI this stack was missing: a scene director with two brains and one voice.
icc scene "cyberpunk storm" —
Lumina plans name, mood, palette, effect and tempo. With ANTHROPIC_API_KEY set,
Claude (claude-sonnet-5) directs; without it, a deterministic offline planner
answers instantly. The exe never needs a network.
Live thermals mapped onto a cool→hot gradient: brand-blue at idle, red under load. Your case tells you what your CPU is doing before any dashboard does.
icc fans --watch keeps rolling
statistics per fan and flags a stall or sudden stop the moment it deviates from its own
baseline. A dying fan announces itself.
One self-contained exe. No .NET install, no setup.
icc detect # scan RGB devices + fans into one list
icc set #00BFFF # everything goes Ionity blue
icc effect rainbow --speed 2 # classic, on every device at once
icc scene "cyberpunk storm" # Lumina AI directs; your rig obeys
icc fans --watch # live RPM + AI anomaly sentry
icc export --out inventory.json # machine-readable inventory
Lighting requires the free OpenRGB app with its SDK server enabled; full fan telemetry appears when run as Administrator.
The clean-room OpenRGB client implements the published wire format only.
| Frame | Layout |
|---|---|
| Header (16 B) | "ORGB" magic · u32 device index · u32 packet id · u32 payload size (LE) |
| Strings | u16 length (incl. NUL) + ASCII bytes + NUL |
| Colors | R,G,B,pad — 4 bytes each |
| Key packets | 0 count · 1 controller data · 40 version · 50 client name · 1050 update LEDs · 1100 custom mode |
| Versioning | Client sends its version with packet 40; effective = min(client, server). iCC speaks v0–3. |
Full details in the wiki protocol page.