Everything that glows or spins.
One list. One SDK. One AI.

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.

Apache-2.0 · signed.NET 10 Windows x6419 tests green Ionity Global (Pty) Ltd

#Live rig previewer

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.

cyberpunk storm molten lava flowing fast arctic frost, slow and still royal purple heartbeat ionity signature wave warn me when it heats up

#IonityRGB SDK

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.

🔌 OpenRGB provider

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.

🌀 Fan provider

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.

🧩 Your provider

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

#Lumina AI

The AI this stack was missing: a scene director with two brains and one voice.

🗣 Natural-language scenes

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.

🌡 Adaptive Ambience

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.

🛡 Anomaly Sentry

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.

#The icc command line

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.

#Protocol notes

The clean-room OpenRGB client implements the published wire format only.

FrameLayout
Header (16 B)"ORGB" magic · u32 device index · u32 packet id · u32 payload size (LE)
Stringsu16 length (incl. NUL) + ASCII bytes + NUL
ColorsR,G,B,pad — 4 bytes each
Key packets0 count · 1 controller data · 40 version · 50 client name · 1050 update LEDs · 1100 custom mode
VersioningClient sends its version with packet 40; effective = min(client, server). iCC speaks v0–3.

Full details in the wiki protocol page.