Skip to content

klebertiko/NightwolfRGB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐺 Nightwolf RGB - Professional RGB Control Software

The Ultimate RGB Control Interface for OpenRGB

License: MIT Node.js React OpenRGB Compatible

Features β€’ Quick Start β€’ Documentation β€’ Screenshots β€’ License


🎯 Overview

Nightwolf RGB is a premium, full-stack RGB control application that integrates seamlessly with OpenRGB. It provides an intuitive, modern interface for controlling all your RGB devices without the bloat of manufacturer software.

Why Nightwolf RGB?

  • 🎨 Premium UI: Stunning, futuristic design that makes RGB control a visual experience
  • ⚑ Real-time Control: Instant hardware response via WebSocket communication
  • 🧹 RGB Cleanup: Exclusive feature to eliminate conflicting RGB software
  • πŸ’Ύ Profile System: Save and restore complex lighting configurations
  • πŸ”„ Universal Sync: Synchronize all RGB components of your PC simultaneously*
  • 🌐 Web-based: Access from anywhere on your local network
  • πŸ†“ Open Source: Free, transparent, and community-driven

*What are "devices"? In OpenRGB/Nightwolf context, "devices" means the individual RGB components connected to your PC, such as:

  • Motherboard RGB headers:
    • ARGB (Addressable RGB / 5V / 3-pin) - Individual LED control
    • RGB (Non-addressable / 12V / 4-pin) - All LEDs same color
  • RAM modules (DDR4/DDR5 with RGB/ARGB)
  • Graphics card RGB lighting
  • AIO liquid coolers (pump + radiator fans with ARGB/RGB)
  • Case fans (ARGB or RGB)
  • LED strips (Addressable or Non-addressable)
  • RGB controllers (Corsair Commander, NZXT Hue, etc.)
  • Some RGB peripherals (keyboards, mice - if supported by OpenRGB)

ARGB vs RGB Support: βœ… ARGB (Addressable): Full support - control each LED individually
βœ… RGB (Non-addressable): Full support - all LEDs change to same color

Example: Your gaming PC might have 5 "devices": Z790 Motherboard (ARGB header), Corsair RAM (ARGB - 4 sticks = 1 device), NZXT AIO Cooler (ARGB), GPU (RGB), and LED Strip (ARGB). Nightwolf RGB can control all 5 simultaneously with one click.


✨ Features

Core Functionality

  • βœ… Device Discovery: Automatic detection of all OpenRGB-compatible RGB components in your PC
  • βœ… Color Control: Hex color picker with 10 preset palettes
  • βœ… Brightness Control: Master illumination slider (0-100%)
  • βœ… Global Sync: Apply same color to all RGB components at once (motherboard, RAM, fans, etc.)
  • βœ… Individual Control: Target specific components independently (e.g., only RAM)
  • βœ… Native Modes: Access hardware-specific lighting effects (breathing, rainbow, etc.)

Advanced Features

  • 🧹 RGB Cleanup (Exclusive): Automatically detect and terminate conflicting RGB software:

    Corsair:

    • iCUE, iCUE Service, Corsair Service, LLA Service

    ASUS:

    • Armoury Crate (Service + User Helper), Aura Service, Lighting Service, System Analysis

    Razer:

    • Synapse, Chroma SDK, Central Service, Ingame Engine, Stream Server

    MSI:

    • Afterburner, Dragon Center, Mystic Light, MSI SDK

    NZXT:

    • CAM, CAM Service

    Gigabyte:

    • RGB Fusion, RGB Fusion 2, GCC

    ASRock:

    • Polychrome RGB, ASR Services

    Others:

    • SignalRGB, Logitech G HUB, SteelSeries GG, HyperX NGenuity, Thermaltake TT RGB Plus, Cooler Master Portal, EVGA Precision, EKWB Connect, JackNet RGB Sync

    Total: 70+ processes detected

  • πŸ’Ύ Profile Management:

    • Create snapshots of current configuration
    • Save unlimited profiles
    • One-click profile application
    • Profile metadata (created date, description)
  • 🎨 Visual Effects (Planned):

    • Constant Aura (Static)
    • Wolf Heartbeat (Breathing)
    • Thunder Strike (Flash)
    • Sonic Reaction (Audio-reactive)

Technical Features

  • πŸ”Œ WebSocket Communication: Real-time bidirectional updates
  • πŸ”„ Auto-reconnect: Resilient connection handling
  • πŸ“‘ REST API: Complete HTTP API for external integrations
  • 🎯 Type-safe: Structured data validation
  • βš™οΈ Modular Architecture: Easy to extend and customize

πŸš€ Quick Start

Prerequisites

  1. OpenRGB (Download from openrgb.org)
  2. Node.js v18 or higher
  3. Windows (Linux/Mac support planned)

Installation

# Clone the repository
git clone https://github.com/klebertiko/NightwolfRGB.git
cd nightwolf-rgb

# Install backend dependencies
cd backend
npm install

# Install frontend dependencies  
cd ../frontend
npm install

Configuration

  1. Open OpenRGB
  2. Navigate to SDK Server tab
  3. Click Start Server
  4. Verify status shows Online on port 6742

Running the Application

# Terminal 1 - Start backend
cd backend
npm run dev

# Terminal 2 - Start frontend
cd frontend
npm run dev

Access the interface at: http://localhost:5173


πŸ“– Documentation

API Endpoints

Status & Connection

GET /api/status

Returns connection status and device count.

Devices

GET    /api/devices              # List all devices
GET    /api/devices/:id          # Get specific device
POST   /api/devices/:id/color    # Set device color
POST   /api/devices/:id/mode     # Change device mode
POST   /api/devices/:id/brightness  # Adjust brightness
POST   /api/devices/sync         # Sync all devices

Profiles

GET    /api/profiles             # List profiles
POST   /api/profiles             # Create profile
POST   /api/profiles/snapshot    # Snapshot current state
POST   /api/profiles/:id/apply   # Apply profile
DELETE /api/profiles/:id         # Delete profile

RGB Cleanup (Windows Only)

GET    /api/cleanup/status       # Get cleanup status
GET    /api/cleanup/detect       # Detect conflicts
POST   /api/cleanup/kill-processes   # Kill RGB processes
POST   /api/cleanup/disable-services # Stop RGB services
POST   /api/cleanup/full         # Complete cleanup

Frontend Hooks

// WebSocket connection
const { connected, deviceCount, status } = useOpenRGB();

// Device management
const { devices, loading, setColor, setMode, setBrightness, syncAll } = useDevices();

// Profile management
const { profiles, createProfile, applyProfile, deleteProfile } = useProfiles();

// RGB Cleanup
const { status, detectConflicts, fullCleanup } = useCleanup();

🎨 Screenshots

Main Dashboard

Dashboard

RGB Matrix Control

Matrix

RGB Cleanup Feature

Cleanup

Profile Management

Profiles


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      HTTP/WS      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  React Frontend │◄─────────────────►│ Express Backend  β”‚
β”‚   (Port 5173)   β”‚                   β”‚   (Port 3001)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚ OpenRGB
                                                β”‚ SDK Protocol
                                                β”‚ TCP:6742
                                        β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
                                        β”‚  OpenRGB SDK   β”‚
                                        β”‚    Server      β”‚
                                        β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚ USB/I2C/SMBus
                                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                    β”‚                       β”‚
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
                            β”‚ Motherboard β”‚         β”‚     RAM     β”‚
                            β”‚ RGB Headers β”‚         β”‚  (4 sticks) β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                    β”‚                       β”‚
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚           β”‚           β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
                 β”‚  AIO/Pump β”‚ β”‚  Fans  β”‚ β”‚   GPU   β”‚
                 β”‚  Cooler   β”‚ β”‚  RGB   β”‚ β”‚   RGB   β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
                 β”‚  LED Strips  β”‚
                 β”‚  (Addressable)β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

      β–² ALL components in ONE PC = "Devices"

Key Points:

  • One instance of Nightwolf RGB = One PC's RGB components
  • "Sync All" = Synchronize motherboard + RAM + AIO + fans + GPU + strips
  • Each component can also be controlled individually

Tech Stack

Frontend:

  • React 18.2
  • Vite (Build tool)
  • Lucide React (Icons)
  • Axios (HTTP client)
  • WebSocket (Real-time)

Backend:

  • Node.js Express
  • openrgb-sdk 0.6.0
  • WebSocket (ws library)
  • File-based storage (JSON)

πŸ› οΈ Development

Project Structure

nightwolf-rgb/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ controllers/
β”‚   β”‚   β”œβ”€β”€ openrgb.controller.js    # OpenRGB SDK integration
β”‚   β”‚   β”œβ”€β”€ profiles.controller.js   # Profile CRUD
β”‚   β”‚   └── cleanup.controller.js    # RGB cleanup logic
β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”œβ”€β”€ devices.routes.js
β”‚   β”‚   β”œβ”€β”€ profiles.routes.js
β”‚   β”‚   └── cleanup.routes.js
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   └── color.utils.js           # Color conversions
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   └── profiles.json            # Saved profiles
β”‚   └── server.js                    # Main server
└── frontend/
    β”œβ”€β”€ src/
    β”‚   β”œβ”€β”€ components/
    β”‚   β”‚   β”œβ”€β”€ ConnectionStatus.jsx
    β”‚   β”‚   └── CleanupPanel.jsx
    β”‚   β”œβ”€β”€ hooks/
    β”‚   β”‚   β”œβ”€β”€ useOpenRGB.js
    β”‚   β”‚   β”œβ”€β”€ useDevices.js
    β”‚   β”‚   β”œβ”€β”€ useProfiles.js
    β”‚   β”‚   └── useCleanup.js
    β”‚   β”œβ”€β”€ api/
    β”‚   β”‚   └── client.js
    β”‚   └── App.jsx                  # Main application
    └── package.json

Environment Variables

Backend (.env):

OPENRGB_HOST=localhost
OPENRGB_PORT=6742
SERVER_PORT=3001
NODE_ENV=development

Frontend (.env):

VITE_API_URL=http://localhost:3001

πŸ”§ Troubleshooting

Backend won't connect to OpenRGB

Symptoms:
❌ Failed to connect to OpenRGB

Solutions:

  1. Ensure OpenRGB is running
  2. Check SDK Server is "Online" in OpenRGB
  3. Verify port 6742 is not blocked by firewall
  4. Try restarting OpenRGB with --server flag

Frontend shows "Disconnected"

Symptoms:
Red status indicator, no devices shown

Solutions:

  1. Verify backend is running on port 3001
  2. Check browser console for WebSocket errors
  3. Confirm .env file exists in frontend folder
  4. Try hard refresh (Ctrl+Shift+R)

Colors don't change on hardware

Symptoms:
UI updates but hardware doesn't respond

Solutions:

  1. Close other RGB software (iCUE, Armoury Crate, etc)
  2. Use built-in RGB Cleanup feature
  3. Set device to "Direct" mode in OpenRGB first
  4. Check device permissions (may need admin rights)

RGB Cleanup doesn't work

Symptoms:
Processes still running after cleanup

Requirements:

  • Windows only (currently)
  • Run backend as Administrator for service control
  • Some processes may require manual termination

πŸ—ΊοΈ Roadmap

v1.1 (Upcoming)

  • Audio-reactive effects
  • Custom effect builder
  • Gradient color picker
  • Per-zone control

v1.2

  • Scheduler (time-based profiles)
  • Game integration hooks
  • Mobile responsive design
  • Dark/Light theme toggle

v2.0

  • Electron desktop app
  • System tray integration
  • Auto-start with Windows
  • Cloud profile sync
  • Community profile marketplace

🀝 Contributing

We welcome contributions! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow existing code style
  • Add comments for complex logic
  • Test with real RGB hardware
  • Update documentation for new features

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • OpenRGB Team - For the amazing open-source RGB control software
  • Lucide Icons - Beautiful icon library
  • React Community - Excellent documentation and support
  • All Contributors - Thank you for making this project better!

❓ FAQ (Frequently Asked Questions)

Q: O Nightwolf RGB sendo web-based pode controlar vΓ‘rios PCs simultaneamente?

R: NΓ£o. Cada instΓ’ncia do Nightwolf RGB (backend + OpenRGB) controla apenas o hardware do computador onde estΓ‘ instalado.

Como funciona:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  PC Gaming (192.168.1.100)              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚ OpenRGB + Nightwolf Backend     β”‚    β”‚
β”‚  β”‚ Controla: MB, RAM, GPU deste PC β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β–²
         β”‚ HTTP/WebSocket
         β”‚ (Acesso via rede)
         β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Qualquer dispositivo na rede         β”‚
β”‚  - Notebook, Tablet, Celular          β”‚
β”‚  - Acessa http://192.168.1.100:5173   β”‚
β”‚  - Controla o RGB do PC Gaming        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

BenefΓ­cios do Web-based:

  • βœ… Acesse de qualquer navegador (nΓ£o precisa instalar nada)
  • βœ… Controle do sofΓ‘ via tablet/celular
  • βœ… MΓΊltiplos usuΓ‘rios podem ver/controlar (desde que na mesma rede)
  • βœ… Interface nΓ£o depende de sistema operacional

Para controlar mΓΊltiplos PCs: VocΓͺ precisaria instalar Nightwolf RGB em cada PC:

Q: Quantos "devices" um PC tΓ­pico tem?

R: Depende da configuraΓ§Γ£o, mas um setup gaming comum tem entre 3-8 devices:

Exemplo - PC Gaming MΓ©dio:

  1. ASUS ROG STRIX Z790 (Motherboard) - 1 device
  2. Corsair Dominator Platinum 64GB (4x16GB) - 1 device (RAM Γ© agrupada)
  3. NZXT Kraken Z73 AIO - 1 device
  4. QL120 RGB Fans (6x) - 1 device (fans conectadas ao mesmo hub)
  5. NVIDIA RTX 4090 - 1 device
  6. LED Strip Addressable - 1 device

Total: 6 devices que podem ser controlados individual ou simultaneamente.

Setup Extremo (Entusiasta):

  • Motherboard RGB
  • RAM (pode ser 2 devices se canais separados)
  • AIO Pump
  • AIO Radiator Fans (separado do pump)
  • Case Fans Intake
  • Case Fans Exhaust
  • GPU
  • LED Strip Teto
  • LED Strip Mesa
  • Vertical GPU Mount RGB
  • Cable Combs RGB

Total: 11+ devices

Q: Preciso deixar o backend rodando sempre?

R: Sim, para controle em tempo real. PorΓ©m, as configuraΓ§Γ΅es salvas nos dispositivos (modos nativos) persistem mesmo apΓ³s fechar a aplicaΓ§Γ£o.

Q: Funciona em Linux/Mac?

R:

  • Backend: Sim, Node.js Γ© multiplataforma
  • OpenRGB: Sim, suporta Linux e Mac
  • RGB Cleanup: Apenas Windows (usa comandos especΓ­ficos do Windows)

Q: Por que nΓ£o usar os softwares oficiais (iCUE, Armoury Crate)?

R:

  • Bloatware: Softwares oficiais consomem muita RAM/CPU
  • Conflitos: MΓΊltiplos softwares brigam pelo controle
  • LimitaΓ§Γ΅es: Cada um controla apenas sua marca
  • OpenRGB + Nightwolf: Leve, universal, open-source, sem telemetria

Q: Γ‰ seguro matar processos do iCUE/Armoury Crate?

R: Sim. Os processos RGB sΓ£o apenas para iluminaΓ§Γ£o. Funcionalidades crΓ­ticas (atualizaΓ§Γ£o de firmware, monitoring) nΓ£o sΓ£o afetadas. VocΓͺ pode reiniciar os softwares depois, se necessΓ‘rio.

Q: O RGB Cleanup precisa de privilΓ©gios de administrador?

R:

  • Matar processos: NΓ£o (maioria dos casos)
  • Parar serviΓ§os: Sim (requer admin)

Execute o backend como administrador para funcionalidade completa:

# Windows (PowerShell como Admin)
cd backend
npm run dev

πŸ“ž Support


Made with ❀️ and RGB

⬆ Back to Top

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors