Pankha is an open-source Distributed fan control system with a Centralized Management Web Interface for monitoring and controlling hardware cooling across multiple machines. Production-ready with real-time hardware monitoring, WebSocket communication, and PostgreSQL database.
- Real-time Temperature Monitoring - Manage Sensors across multiple hardware types and and Operating System.
- PWM Fan Control - Direct hardware control with RPM feedback, Profiles, and Safety features, historical data visualization.
- Multi-System Support - Monitor and control multiple machines from one dashboard
- Web Dashboard - Modern Web UI Interface with real-time updates
- WebSocket Communication - Bidirectional real-time data transmission to centralize control
- Easy Deployment - Docker based server deployment, with one command setup for agents
- PostgreSQL Database - Production ready data storage.
- Open Source - Pankha is an open source project, Contribute to the project.
- ✅ Reduced Fan Wear - Fewer speed changes extend fan lifespan
- ✅ Quieter Operation - Smooth transitions eliminate abrupt noise changes
- ✅ Stable UI - No flickering fan speed indicators
- ✅ Better UX - Professional, predictable behavior
- ✅ Energy Efficiency - Smoother transitions reduce power spikes
- ✅ User Control - Tune behavior per system/use case
- ✅ Safety - Emergency override ensures critical temps handled immediately
- ✅ Multi-System Support - Monitor and control multiple machines from one dashboard
- ✅ Open Source - Easy to deploy, manage, and scale
- ✅ Real-time Updates - Instant feedback on temperature and fan speed changes
- ✅ Real-time Profiles - Customizable fan profiles for different workloads
- ✅ Real-time Data - Historical data visualization for better planning
- Docker and Docker Compose for server deployment
- System with fan control capabilities (for agents)
- Download the Docker Compose file:
or,
wget -O compose.yml https://github.com/Anexgohan/pankha/releases/latest/download/compose.yml
curl -fsSLo compose.yml https://github.com/Anexgohan/pankha/releases/latest/download/compose.yml
- Download the .env file
or,
wget -O .env https://github.com/Anexgohan/pankha/releases/latest/download/example.env
curl -fsSLo .env https://github.com/Anexgohan/pankha/releases/latest/download/example.env
- Start Docker Compose
docker pull && docker compose up -d
-
Clone the repository
this creates a pankha directory in your current pathgit clone https://github.com/Anexgohan/pankha.git cd pankhaor, clone to current directory without creating pankha/ folder
git clone https://github.com/Anexgohan/pankha.git .NOTE:
Edit.envandcomposewith your configuration, if needed. -
Start the system
docker compose pull && docker compose up -d
That's it! The backend is now running with:
- Access the Web Dashboard at http://localhost:3000 or http://[serverIP]:[PANKHA_PORT]
- To stop the system, run:
docker compose down
Requirements: Windows 10/11, .NET 8 Runtime.
- Download Installer:
- Download
pankha-agent-windows_x64.msifrom Latest Releases.
- Download
- Install:
- Run the installer. It will install the Background Service and Tray Application.
- Configure:
- Launch "Pankha Fan Control" from the Start Menu.
- Right-click the Tray Icon -> Settings to configure the backend URL.
Performance: Single binary, <10MB RAM, <1% CPU. Zero dependencies.
- With wget
wget -O pankha-agent https://github.com/Anexgohan/pankha/releases/latest/download/pankha-agent-linux_x86_64 chmod +x pankha-agent
- Or, With curl
curl -fsSLo pankha-agent https://github.com/Anexgohan/pankha/releases/latest/download/pankha-agent-linux_x86_64 chmod +x pankha-agent
Configure and manage the agent using the following commands:
- Configure agent (Required for first time)
./pankha-agent --setup
- Manage Service (Auto-start on boot)
./pankha-agent --install-service ./pankha-agent --uninstall-service
- Check status & Health
./pankha-agent --status ./pankha-agent --check
- Start/Stop daemon
./pankha-agent --start ./pankha-agent --stop
- Help, or list all commands and options
./pankha-agent --help
- With wget
wget -O pankha-agent https://github.com/Anexgohan/pankha/releases/latest/download/pankha-agent-linux_arm64 chmod +x pankha-agent
- Or, With curl
curl -fsSLo pankha-agent https://github.com/Anexgohan/pankha/releases/latest/download/pankha-agent-linux_arm64 chmod +x pankha-agent
Configure and manage the agent using the same commands as above:
- Interactive Setup:
./pankha-agent --setup - Manage Service:
./pankha-agent --install-service - Check Status:
./pankha-agent --status - View Logs:
./pankha-agent --log-show
The agent will connect to the backend and start sending hardware data. You can now manage the agent from the dashboard.
Browser ←HTTP/WS→ Backend (Docker) ←WebSocket→ Agents ←Direct→ Hardware
- Backend: Node.js + Express + WebSocket + PostgreSQL (Dockerized)
- Frontend: React + TypeScript + Vite (served by nginx)
- Agents:
- Linux: Rust single binary processes (sysfs)
- Windows: .NET 8 Service (LibreHardwareMonitor)
-
Verify installation
# Check services are running docker compose ps # Check backend health curl http://localhost:${PANKHA_PORT:-3000}/health # Access dashboard open http://localhost:3000
-
Cleanup
# To stop services docker compose down # To remove volumes (data loss) docker compose down -v
Build from source:
Clone repository
git clone https://github.com/Anexgohan/pankha.git
cd pankhaBuild Docker image
docker compose pull
docker compose build --no-cacheRun with compose
docker compose up -dEnvironment variables in .env:
# Database Configuration
POSTGRES_DB=db_pankha
POSTGRES_USER=pankha_user
POSTGRES_PASSWORD=your_secure_password
DATABASE_URL=postgresql://pankha_user:your_secure_password@pankha-postgres:5432/db_pankha
# Server Configuration
PANKHA_PORT=3000
NODE_ENV=productionGenerate Agent config with
./pankha-agent --setupAgent configuration file: config.json (running directory)
{
"agent": {
"id": "OS-mysystem-randomhash",
"name": "hostname-or-custom-name",
"update_interval": 3.0,
"log_level": "INFO"
},
"backend": {
"server_url": "ws://192.168.1.100:3000/websocket",
"reconnect_interval": 30.0,
"max_reconnect_attempts": -1,
"connection_timeout": 10.0
},
"hardware": {
"enable_fan_control": true,
"enable_sensor_monitoring": true,
"fan_safety_minimum": 30,
"filter_duplicate_sensors": false,
"duplicate_sensor_tolerance": 2.0,
"fan_step_percent": 5,
"hysteresis_temp": 3.0,
"emergency_temp": 85.0
},
"logging": {
"enable_file_logging": true,
"log_file": "/var/log/pankha-agent/agent.log",
"max_log_size_mb": 10,
"log_retention_days": 7
}
}
Issue: Cannot connect to database
# Check PostgreSQL is running
docker compose ps
# Check logs
docker compose logs postgres
# Verify DATABASE_URL in .env
cat .env | grep DATABASE_URLIssue: Port already in use
# Change port in compose
ports:
- "${PANKHA_PORT:-7000}:3000"
# or in .env file
PANKHA_PORT=7000
# Restart
docker compose down
docker compose up -dIssue: Agent cannot connect to backend
# Test backend connectivity
curl http://your-backend:3000/health
# Check agent logs
tail -f /var/log/pankha-agent/agent.log
# Verify config
./pankha-agent --configIssue: No sensors detected
# Verify lm-sensors
sensors
# Check permissions
ls -la /sys/class/hwmon/
# Run as root
sudo ./pankha-agent --startIssue: Fan control not working
# Check PWM support
cat /sys/class/hwmon/hwmon*/pwm*
# Test manual control
echo 128 | sudo tee /sys/class/hwmon/hwmon0/pwm1We welcome contributions! Please see our contributing guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- CPU: x86_64 or ARM64
- RAM: 256MB minimum
- Disk: 1GB (for database)
- OS: Linux, Windows (Docker supported), Mac support in future
- CPU: <1% usage
- RAM: <50MB
- OS: Linux with hwmon support, Windows
- Requirements:
- PWM-controllable fans
- ✅ PWM fans (4-pin, Speed control)
- ✅ DC fans (voltage control, On/Off)
- Hardware monitoring chips (IPMI, Supermicro, Dell iDRAC), coming soon
This project is licensed under the AGPL-3.0 License , see the LICENSE file for details.
- GitHub: https://github.com/Anexgohan/pankha
- Docker Hub: https://hub.docker.com/r/anexgohan/pankha
- Issues: https://github.com/Anexgohan/pankha/issues
- Discussions: https://github.com/Anexgohan/pankha/discussions
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Discord: Discore coming Soon
- Built with Node.js, React, and PostgreSQL
- Inspired by the need for centralized hardware monitoring
- Thanks to the open source community
Made with ❤️ for the self-hosting community






