A modern, lightweight, and professional hardware telemetry and fan control suite designed specifically for Linux-based NVIDIA GPU workstations, AI compute servers, and main home-lab rigs (tailored for GeForce RTX 50-series such as RTX 5090 and RTX 40-series cards).
Unlike Windows, Linux workstations and AI inference servers traditionally lacked an intuitive, responsive graphical fan controller. n-control bridges this gap: it runs natively on the Linux host as a dedicated systemctl --user daemon (FastAPI + WebSockets + NVML) and serves a sleek, glassmorphic React web interface (Vite + Tailwind CSS). This allows you to monitor and control your GPU directly in a local browser or manage it remotely from your Windows workstation, laptop, or mobile device across the network.
- ๐ง AI & LLM Inference Servers: Running local AI workloads like Ollama, vLLM, PyTorch, or ComfyUI? Monitor exact VRAM allocations per process and prevent thermal throttling during heavy continuous generation.
- ๐ฅ๏ธ Linux Workstations & GPU Servers: Full zero-RPM and custom multi-fan control for your daily driver Linux machine (Pop!_OS, Ubuntu, Debian, etc.).
- ๐ Remote GPU Management from Windows: Keep your power-hungry Linux AI/compute rig in another room or rack while monitoring thermals, switching profiles, and tweaking curves from your Windows desktop via browser or encrypted SSH tunnel.
-
๐ Real-Time Hardware Telemetry (1 Hz):
- Physical GPU core temperature, hotspot, and GDDR7/GDDR6X VRAM junction temperatures.
- True physical tachometer feedback (RPM & %) with hardware zero-RPM detection (no fake states).
- Core and memory clock frequencies (MHz), power draw (Watts & % of power envelope).
- VRAM utilization gauge and core utilization tracking.
-
๐ Interactive Fan Curve Editor with Auto-Apply:
- Drag-and-drop curve control points directly on the chart canvas.
- Live Temperature Tracker: A vertical real-time indicator shows the current GPU temperature and its active target fan speed.
- Auto-Apply: Curve changes immediately take effect upon releasing points.
- Hysteresis Drop Protection: Smooth cooling transitions prevent fan ramping up and down during transient temperature spikes.
- Hardware Zero-RPM Support: Automatically activates BIOS-level quiet mode (
GPUFanControlState=0) under 50ยฐC. - Emergency Thermal Safeguard: Automated 100% emergency override if temperatures reach critical limits (e.g. 88ยฐC).
-
๐ Integrated
nvidia-smiSuite & Process Explorer:- VRAM Process Monitor: Detailed breakdown of every process running on the GPU (PID, executable name, compute/graphics classification, exact VRAM footprint in MB and %).
- Live CLI Terminal: Authentic, monospaced
nvidia-smiASCII box output in a terminal view with a 1-click copy button and auto-refresh. - PCIe & Power Limits: Real-time PCIe link generation and bus width (Current vs. Max, e.g. Gen 4 @ 16x) and enforced power envelopes (Min, Default, Current, Max).
-
โ๏ธ Profile Management & Live Timeline:
- Built-in presets: Silent / Zero-RPM, Gaming / Balanced, Extreme Cool, and Factory Default.
- Create and switch custom profiles stored persistently in
profiles.json. - 60-second rolling telemetry graph for core temperature and fan speeds.
-
โ๏ธ 1-Click Cooldown Turbo Mode:
- Instantly ramps all fans to 100% turbo power for 60 seconds with an animated live countdown.
- Safely cancels at any moment with a single click, returning fans smoothly to the active curve.
-
๐ ๏ธ System Diagnostics & Coolbits Validation:
- Instant checks for NVIDIA driver readiness (580.x+), NVML handle status, Coolbits (28) activation, and
nvidia-settingsexecution permissions.
- Instant checks for NVIDIA driver readiness (580.x+), NVML handle status, Coolbits (28) activation, and
- ๐ Seamless Remote Access & Dual Language (EN / DE):
- Native bilingual interface with instant
[ DE | EN ]toggle in the header navbar. - Optimized for remote browser management from Windows, macOS, or Linux clients.
- Native bilingual interface with instant
- ๐ Structured Live Log Stream:
- Transparent in-memory and file-based execution logging (
n-control.log). - Records every driver command, exit code, STDOUT, and STDERR with keyword filtering and line-by-line copying.
- Transparent in-memory and file-based execution logging (
The installer handles the complete setup in one step: Python virtual environment, dependencies, Coolbits 28 configuration, Linux firewall opening, sudoers permissions, and systemd user service registration.
On your Linux GPU machine / server:
git clone <repository-url>
cd n-control./install_service.shWhat the installer automatically configures:
- Python Virtual Environment: Installs dependencies (
fastapi,uvicorn,pynvml). - NVIDIA Coolbits 28: Writes
/etc/X11/xorg.conf.d/20-nvidia-coolbits.confto unlock manual GPU fan speed control. - Linux Firewall (Port 9191/tcp): Automatically permits incoming TCP traffic on port
9191in UFW or firewalld for LAN/remote management. - Driver Sudoers Rule: Sets up
/etc/sudoers.d/n-control-nvidiasonvidia-settingscan execute uninterrupted in the background. - Systemd User Service: Registers and starts
n-control.servicewithloginctl enable-linger(keeps running across logouts and headless reboots).
โ ๏ธ One-Time Reboot Required if Coolbits was just enabled: The NVIDIA proprietary Linux driver requires a single reboot to apply Coolbits permissions:sudo rebootAfter rebooting, verify fan control status:
nvidia-settings -q [gpu:0]/GPUFanControlState(Returns
Attribute 'GPUFanControlState' ...: 0$\rightarrow$ Hardware fan control active!)
Once installed, the web interface is immediately available at: ๐ http://localhost:9191
| Task | Command |
|---|---|
| Check service status | systemctl --user status n-control |
| View live log stream | journalctl --user -u n-control -f |
| Restart daemon | systemctl --user restart n-control |
| Stop daemon | systemctl --user stop n-control |
| Inspect raw log file | cat n-control/backend/n-control.log |
You can manage your Linux GPU / AI server from any client on the local network:
Enter your Linux machine's local network IP in your Windows browser:
http://192.168.1.XX:9191
Forward the daemon port securely to your Windows PC via PowerShell or Command Prompt:
ssh -N -L 9191:localhost:9191 user@pop-os-ip(Alternatively, double-click the included scripts/start_tunnel_windows.bat file!)
Then open in your Windows browser: http://localhost:9191
The installer automatically opens port 9191, but if you manage your firewall manually:
- UFW (Ubuntu / Pop!_OS / Debian):
sudo ufw allow 9191/tcp comment "n-control Daemon" - firewalld (Fedora / RHEL / CentOS):
sudo firewall-cmd --add-port=9191/tcp --permanent sudo firewall-cmd --reload
n-control/
โโโ backend/
โ โโโ app/
โ โ โโโ hardware/
โ โ โ โโโ nvidia.py # NVML controller, hardware sensors, nvidia-smi data
โ โ โ โโโ fan_engine.py # Fan curve math, hysteresis smoothing & safe fallback
โ โ โโโ models/ # Pydantic schemas (Telemetry, Profiles, SMI models)
โ โ โ โโโ telemetry.py
โ โ โ โโโ profile.py
โ โ โ โโโ smi.py
โ โ โโโ logger.py # Structured file logging & live in-memory ring buffer
โ โ โโโ main.py # FastAPI REST/WebSocket server & static asset host
โ โโโ install_service.sh # Systemd user-service installer & sudoers setup
โ โโโ uninstall_service.sh # Clean uninstaller script
โ โโโ profiles.json # Persistent curve & fan configuration
โ โโโ requirements.txt # Python dependencies
โโโ docs/
โ โโโ images/ # Screenshots for documentation & README
โโโ frontend/
โ โโโ src/
โ โ โโโ components/ # UI components (CurveEditor, NvidiaSmiModal, Gauges, ...)
โ โ โโโ i18n/ # Localization context & translations (DE / EN)
โ โ โโโ hooks/ # WebSocket & telemetry synchronization
โ โ โโโ App.tsx # Root application component
โ โโโ dist/ # Pre-compiled production bundles (committed to Git)
โโโ scripts/
โ โโโ set_fans.sh # Execution wrapper for nvidia-settings commands
โ โโโ setup_coolbits.sh # Automated Coolbits 28 X11 configurator
โ โโโ start_tunnel_windows.bat # 1-click Windows SSH tunnel launcher
โ โโโ test_fans.py # Standalone CLI hardware diagnostic tool
โโโ GEMINI.md # Engineering rules & hardware constraints
โโโ IDEAS.md # Roadmap & planned feature ideas
โโโ README.md # Project documentation
- Open the
Logsmodal in the top header navbar. - Check that driver commands return
exit code: 0. - If you see
Operation not permittedor permission issues, re-run./install_service.shon the Linux host to ensure the/etc/sudoers.d/n-control-nvidiarule is in place.
- This is the intentional Zero-RPM feature active in the Silent / Zero-RPM profile. The fans spin down silently below 50ยฐC by delegating control to the GPU BIOS (
GPUFanControlState=0). - As temperature rises or when adjusting the curve upwards in the Curve Editor, fans will engage automatically at their calibrated starting speed (30%+).
- Click the
[ nvidia-smi ]button in the header. - The Processes (VRAM) tab will display each active process (e.g.
ollama_llama_server,python,Xorg), its PID, whether it is a CUDA compute or graphics task, and the exact megabytes of VRAM consumed.
This project is open-source and licensed under the MIT License.




