Professional fan-speed telemetry, CPU/GPU temperature monitoring, and RGB lighting control
Built with .NET 10 + Avalonia UI ยท Developed by Ionity Global (Pty) Ltd
- Overview
- Features
- Requirements
- Quick Start
- Installation
- Usage
- RGB Lighting Effects
- Fan Profiles
- Email Notifications
- Project Structure
- Architecture
- Contributing
- License
FANZi (Fan + Zi) is a desktop application for real-time hardware telemetry and fan management. It reads CPU and GPU sensor data via LibreHardwareMonitor, lets you set individual fan channel speeds, and drives RGB lighting across all OpenRGB-compatible devices with a rich built-in effects engine.
The UI is built with Avalonia so the rendering layer is cross-platform; however, hardware sensor access (fan control, temperature readings) requires Windows, where LibreHardwareMonitor has full kernel-level support.
| Category | Details |
|---|---|
| ๐ก๏ธ Temperature Monitoring | CPU package, average, and hotspot temperatures; GPU core & hotspot temps |
| โก Load & Clock Tracking | CPU total load %, per-core readings, average clock MHz, package power (W) |
| ๐ฎ GPU Telemetry | GPU load %, core clock MHz, power draw, VRAM usage |
| ๐ Fan Telemetry | Per-channel RPM display for all fans detected by LibreHardwareMonitor |
| ๐๏ธ Fan Speed Control | Set any controllable fan channel to a specific % via software PWM |
| ๐พ Fan Profiles | Save/load named profiles with per-channel percentages and warning thresholds |
| ๐ RGB Lighting | 9 built-in lighting effects, 12 preset themes, per-channel colour pickers |
| ๐ Email Alerts | SMTP-based notifications when CPU temperature exceeds a configurable threshold |
| ๐ฅ๏ธ Cross-Platform UI | Avalonia renders on Windows, macOS, and Linux (hardware monitoring on Windows only) |
| Requirement | Minimum |
|---|---|
| Operating System | Windows 10 / 11 (64-bit) for full hardware control |
| .NET Runtime | .NET 10 |
| OpenRGB (optional) | OpenRGB with SDK Server enabled (port 6742) |
| Tool | Version |
|---|---|
| .NET SDK | 10.0 or later |
| IDE | Visual Studio 2022+, JetBrains Rider, or VS Code with C# extension |
Admin rights: LibreHardwareMonitor requires elevated privileges to read hardware sensors on Windows. Run FANZi as Administrator for full fan-control capability.
# Clone the repository
git clone https://github.com/AntwerpDesignsIonity/FANZi.git
cd FANZi
# Run directly (Release mode)
dotnet run --project src/Fanzi.FanControl/Fanzi.FanControl.csproj --configuration ReleaseOr use the pre-made launchers in the launchers/ directory:
| OS | Launcher |
|---|---|
| Windows | launchers\FANZI-Windows.bat |
| macOS | launchers/FANZI-Mac.command |
| Linux | launchers/FANZI-Linux.sh |
- Install the .NET 10 SDK.
- Clone this repository.
- Open a terminal in the repository root and run:
dotnet run --project src/Fanzi.FanControl/Fanzi.FanControl.csproj --configuration Release
dotnet publish src/Fanzi.FanControl/Fanzi.FanControl.csproj \
-c Release \
-r win-x64 \
--self-contained true \
-o ./publishThe output in ./publish/ contains a single folder you can copy anywhere and run.
- Open
FANZI.slnxin Visual Studio 2022+ or JetBrains Rider. - Set
Fanzi.FanControlas the startup project. - Press Run / F5.
On launch, FANZi polls all available hardware and displays:
- CPU card โ package temp, average temp, hotspot, load %, clock MHz, package power, core voltage
- GPU card โ core temp, hotspot temp, load %, clock MHz, power, VRAM used/total
- Fan Channels panel โ one row per detected fan with current RPM and a % slider
- Profiles panel โ tabbed list of saved profiles
- Locate the fan channel you want to adjust in the Fan Channels panel.
- Drag the slider or type a percentage into the numeric field.
- Click Apply to commit the change to the hardware.
- Click Auto to return the channel to motherboard-managed (automatic) control.
- Click + Add Profile to create a new named profile.
- Fill in:
- Name โ human-readable label
- CPU Fan % โ desired speed for the CPU fan
- Warning threshold ยฐC โ temperature at which an email alert fires
- Email โ destination address for thermal alerts
- Per-channel % โ individual overrides for each detected fan channel
- Click the profile tab to make it active; the percentages are applied automatically on startup.
- Settings persist to
%APPDATA%\FANZI\settings.json.
FANZi's built-in effects engine runs at 30 fps and drives all OpenRGB-connected devices.
| Effect | Description |
|---|---|
| Static | Solid colour, no animation |
| Pulse | Brightness fades in and out (breathing) |
| Rainbow | Full HSV hue rotation across all LEDs |
| ColorWave | Colour sweeps across devices left-to-right |
| TemperatureReactive | Cool blue at idle โ red at thermal limit |
| CpuLoadReactive | Speed and brightness follow CPU load % |
| Performance | Combines load (speed) with temperature (colour) |
| Strobe | Rapid flash |
| DualColorFlash | Alternates between two user-chosen colours |
| Preset | Effect | Description |
|---|---|---|
| ๐ Ocean | Pulse | Deep blue breathing |
| ๐ฅ Inferno | ColorWave | Scorching rainbow wave |
| โ Glacier | Static | Ice-cold static glow |
| โก Neon | DualColorFlash | Cyan/magenta dual flash |
| ๐ฟ Nature | Pulse | Calm green breathe |
| ๐ Sunset | ColorWave | Orange to purple palette |
| ๐ Spectrum | Rainbow | Full HSV rainbow cycle |
| ๐ฉธ Blood Moon | Pulse | Deep crimson pulse |
| ๐ง Arctic | Static | Pure static ice white |
| ๐ก Temp Reactive | TemperatureReactive | Colour follows CPU/GPU temperature |
| ๐ Performance | Performance | Speed + colour follow real load & temps |
| ๐ก Strobe | Strobe | Rapid strobe flash |
- Download and install OpenRGB.
- In OpenRGB, go to Settings โ SDK Server and click Start Server.
- Launch FANZi โ it will automatically connect on port 6742.
FANZi can send a thermal-alert email when the CPU temperature exceeds the profile's warning threshold.
Configure SMTP settings in the Profile panel:
- SMTP Host (e.g.
smtp.gmail.com) - SMTP Port (e.g.
587) - SMTP Username / Password
- Recipient email address
Click Send Test Email to verify your settings before relying on them.
FANZi/
โโโ FANZI.slnx # Solution file
โโโ FANZI.code-workspace # VS Code workspace
โโโ README.md # This file
โโโ CONTRIBUTING.md # Contribution guide
โโโ launchers/
โ โโโ FANZI-Windows.bat # Windows launch script
โ โโโ FANZI-Mac.command # macOS launch script
โ โโโ FANZI-Linux.sh # Linux launch script
โโโ src/
โโโ Fanzi.FanControl/
โโโ Fanzi.FanControl.csproj # Project file & NuGet dependencies
โโโ Program.cs # Entry point
โโโ App.axaml / App.axaml.cs # Avalonia application root
โโโ Assets/ # Icons and images
โโโ Models/ # Plain data / record types
โโโ Services/ # Business logic & hardware access
โโโ ViewModels/ # MVVM ViewModels (CommunityToolkit)
โโโ Views/ # Avalonia XAML views
See docs/FILE-STRUCTURE.md for a detailed description of every file.
FANZi follows the MVVM (Model-View-ViewModel) pattern:
Views (AXAML)
โโโ bind to โโโบ ViewModels (CommunityToolkit.Mvvm)
โโโ call โโโบ Services (interfaces)
โโโ HardwareMonitorService (LibreHardwareMonitor)
โโโ OpenRgbService (OpenRGB.NET)
โโโ SettingsService (JSON persistence)
โโโ EmailNotificationService (SMTP)
See docs/WIKI.md for a deeper architectural walkthrough.
Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request.
Copyright ยฉ 2026 Ionity Global (Pty) Ltd. All rights reserved.
This software is proprietary. Redistribution or modification without written permission from Ionity Global (Pty) Ltd is not permitted.
Built with โค๏ธ by Johan Wilhelm van Antwerp โ Ionity Global
