Aether Control

An all-in-one control suite for custom gaming PCs — hardware monitoring, a real portrait-display mode, a Windows optimisation centre, RGB control without extra software, and per-game automation. One clean, fast, unpackaged Windows app.

Windows 10 / 11 .NET 8.0 WinUI 3 v0.9.1 Active development

Why

Every existing option asks for a trade-off

Every existing option is either bloated and slow (HWiNFO's sheer density, Armoury Crate's background services), locked to one vendor's ecosystem (NZXT CAM, ASUS Aura), or asks you to install something else first (OpenRGB, RTSS, iCUE) just to see your own hardware. Aether Control is built to be significantly cleaner, faster, and more focused than any of them — real sensor data, real RGB control, real Windows tuning, with as few extra moving parts as the platform allows.

Features

What it actually does

Overview dashboard

One panel answers "is my PC OK right now?" — a system verdict in words, headline CPU/GPU/memory gauges, last-minute load trends, then live CPU / GPU / RAM / Storage / Motherboard / Network cards with sparkline history and tone-based severity colouring. Card rows scale with the window — edge to edge at any width. A Top Processes panel answers "what's using my CPU" without opening Task Manager.

Portrait Mode

A dedicated layout for a second monitor rotated to portrait — usage rings with history sparklines, per-fan RPM with click-to-rename, RAM/drive temp, live FPS via RTSS shared memory, and a top-processes panel. Resizable from its edges, one-click fill, and FILL keeps following the display you drag it onto.

Performance (Optimisation Centre)

Memory optimisation with a live readout (used %, in use / available / total) and before/after/freed result cards, a Storage Cleaner that scans real on-disk sizes before touching anything, a Startup Manager with publisher/impact per entry, Fan Control that reads and writes PWM headers with a safety floor, and Game Profiles that auto-apply a performance plan while a tracked game is running.

RGB Control

Corsair keyboards and mice controlled directly over USB — no iCUE, no OpenRGB, nothing to install. Everything else routes through OpenRGB's SDK server if it's running. Peripheral detection works independently and needs zero vendor software either.

Device Utilities & Firmware

Detected peripherals by vendor, quick links to each vendor's own configuration software, and an honest firmware/driver overview — BIOS version + ROM date, GPU name + driver, chipset INF (or a real motherboard-model row), each linked to that vendor's support page. An optional Windows Update search lists pending driver/firmware updates; Aether never installs anything.

Alerts, Tray & History

Toast notifications when CPU/GPU temperature crosses a threshold you set, with hysteresis so it doesn't spam you at the line. Live metrics on tray hover. History records every tracked metric on a 60-second cadence and rolls it up daily/weekly/monthly, charted.

Diagnostics & support bundle

A capability report (app and library versions, OS, elevation state, detected hardware, live sensor counts) plus one-click export of a support zip — report, latest snapshot and recent logs — so a bug report carries its own evidence.

Plugin framework

IAetherPlugin plus optional capability interfaces (IDashboardWidgetProvider, ITrayMetricProvider, IOptimisationTaskProvider). Each plugin loads into its own collectible AssemblyLoadContext — add or remove one without restarting the app.

Design principles

Ideas that shaped real decisions

No extra software required, wherever avoidable Corsair RGB is controlled directly over USB HID — the same wire-level access OpenRGB itself uses, just without needing OpenRGB installed. FPS reads RTSS's shared memory segment directly rather than requiring a plugin.
Confidently wrong is worse than honestly unavailable When a sensor doesn't exist for a given board/CPU, the UI hides that card rather than display a plausible-looking wrong number. Stale, unsupported and unconnected readings are labelled as exactly that — never shown as zero.
Trace real data before fixing More than one "obvious" sensor-mapping bug turned out to be real hardware/OS behaviour (Windows core-parking rotating which CPU cores are active at idle looks identical to a flicker bug at a glance) — chased down with a real diagnostic trace instead of a fourth guess.
A vendor library's own number isn't automatically the right one GPU% is read from the same Windows GPU-engine performance counter Task Manager itself uses rather than LibreHardwareMonitor's driver-level load sensor; RAM usage is read via GlobalMemoryStatusEx directly after LibreHardwareMonitor's own Memory sensor was caught, via a live diagnostic, reporting physically impossible numbers on real hardware.
Reversibility for anything touching live hardware state Fan control clamps away from 0% and always reverts to automatic/BIOS control on exit; memory optimisation never terminates a process; Storage Cleaner previews real sizes before deleting anything.

Architecture

What's in the solution

ProjectTFMPurpose
AetherControl.Corenet8.0Models, enums, service interfaces, events — no dependencies
AetherControl.Plugins.Abstractionsnet8.0IAetherPlugin and capability interfaces third-party modules implement
AetherControl.Datanet8.0SQLite schema, migrations, repositories (settings, history, layouts)
AetherControl.Servicesnet8.0-windowsHardware monitoring, optimisation, RGB (Corsair direct HID + OpenRGB), firmware/driver detection, plugin loading
AetherControl.Appnet8.0-windows10.0.19041.0WinUI 3 shell — overview, portrait mode, tray, all feature pages
AetherControl.Plugins.Samplenet8.0Reference plugin (system uptime widget)
tests/AetherControl.Testsnet8.0-windowsxUnit tests against the Data/Services layer (run in CI on every push)

MVVM throughout the app layer (CommunityToolkit.Mvvm), one safe LibreHardwareMonitor session shared across the whole app (with self-healing reads that detect poisoned Super I/O values and reopen instead of publishing garbage), SQLite (WAL mode) for durable state, and small JSON stores for state that doesn't need a relational shape. Ships as its own standalone .exe — unpackaged, not MSIX.

Roadmap

Where things stand

Built in tracked phases — ROADMAP.md is the full, honest build log: what's done, what's deliberately deferred and why, and bugs that were root-caused with real diagnostic traces rather than guessed at.

Shipped

  • Overview hero — system verdict, headline gauges, last-minute trends, quick actions
  • Grouped navigation & page heroes — Overview / Performance / Lighting / Devices / History, shared design tokens (spacing, radii, type, colour roles)
  • Full hardware monitoring with radial gauges, sparklines, tone-based severity
  • Portrait Mode — a real, complete port, not a stub
  • Performance: memory, storage, startup, fan control (read and write), game profiles
  • RGB Control: direct-HID Corsair + OpenRGB, merged behind one interface
  • Peripheral detection by USB vendor ID, zero vendor software required
  • Temperature alerts, tray live metrics, swappable accent theming
  • Diagnostics page + one-click support bundle; About panel with check-only update check
  • History recording (60s cadence + retention), file logging, silent-elevation autostart
  • Plugin framework with a working sample plugin
  • Self-healing Super I/O reads — poisoned sensor values detected, withheld and recovered

In progress / next

  • Phase 39 — premium UI/UX programme: area consolidation, unified profiles with preview & revert, first-run onboarding, accessibility & packaging pass
  • Bundled OpenRGB management for non-Corsair RGB devices
  • Logitech/Razer direct control, same approach as Corsair
  • Product-style imagery on device/drive cards

Deliberately not done

  • Undervolting — needs a kernel-mode driver and register values tuned for different silicon
  • HP-style BIOS auto-checking — the reference is laptop-specific and mostly just links out
  • Per-game RGB profiles — possible now, just not wired up yet

Provenance

Reused from Matt's existing projects

Rather than re-deriving hardware-sensor behaviour from scratch, the parts that needed real-hardware validation were ported from proven, already-tested code.

Portrait Stats

CPU/GPU/RAM sensor name-matching, best-GPU-by-VRAM selection, FanLabelStore, ProcessRankerService, RtssFpsSource, and Portrait Mode's entire layout and control set.

OmenCore

CorsairHidDirect ported into CorsairHidDirectService — direct-HID Corsair RGB control, including the full known-product table and per-PID HID report layouts.

Radium PCs Companion

Visual reference for radial gauges, animated numbers, severity-based tone colouring, the RAM cleaner technique, and Startup Manager's layout.