Back to rankings

psalias2006/gpu-hot

JavaScriptpsalias2006.github.io/gpu-hot/

๐Ÿ”ฅ Real-time NVIDIA GPU dashboard

chartscudadockerflaskgpugpu-monitoringnvidianvidia-smipythonreal-time-monitoringsystem-monitoringdashboard
Star Growth
Stars
1.6k
Forks
78
Weekly Growth
โ€”
Issues
4
1k1.5k
Oct 25Jan 26Apr 26Jul 26
Artifactsnpmnpm install gpu-hot
README

GPU Hot

Real-time NVIDIA GPU monitoring dashboard. Lightweight, web-based, and self-hosted.

Python Docker License: MIT NVIDIA

GPU Hot Dashboard

Live Demo


Usage

Monitor a single machine or an entire cluster with the same Docker image.

Single machine:

docker run -d --gpus all -p 1312:1312 ghcr.io/psalias2006/gpu-hot:latest

Multiple machines:

# On each GPU server
docker run -d --gpus all -p 1312:1312 -e NODE_NAME=$(hostname) ghcr.io/psalias2006/gpu-hot:latest

# On a hub machine (no GPU required)
docker run -d -p 1312:1312 -e GPU_HOT_MODE=hub -e NODE_URLS=http://server1:1312,http://server2:1312,http://server3:1312 ghcr.io/psalias2006/gpu-hot:latest

Open http://localhost:1312

Older GPUs: Add -e NVIDIA_SMI=true if metrics don't appear.

Process monitoring: Add --init --pid=host to see process names. Note: This allows the container to access host process information.

From source:

git clone https://github.com/psalias2006/gpu-hot
cd gpu-hot
docker-compose up --build

Requirements: Docker + NVIDIA Container Toolkit


Features

  • Real-time metrics (sub-second)
  • Automatic multi-GPU detection
  • Process monitoring (PID, memory usage)
  • Historical charts (utilization, temperature, power, clocks)
  • System metrics (CPU, RAM)
  • Scale from 1 to 100+ GPUs

Metrics: Utilization, temperature, memory, power draw, fan speed, clock speeds, PCIe info, P-State, throttle status, encoder/decoder sessions


Configuration

Environment variables:

NVIDIA_VISIBLE_DEVICES=0,1     # Specific GPUs (default: all)
NVIDIA_SMI=true                # Force nvidia-smi mode for older GPUs
GPU_HOT_MODE=hub               # Set to 'hub' for multi-node aggregation (default: single node)
NODE_NAME=gpu-server-1         # Node display name (default: hostname)
NODE_URLS=http://host:1312...  # Comma-separated node URLs (required for hub mode)
UPDATE_INTERVAL=0.5            # Optional. NVML polling interval in seconds (default: 0.5)
NVIDIA_SMI_INTERVAL=2.0        # Optional. nvidia-smi fallback polling interval (default: 2.0)

Polling is paused automatically when no clients are connected, so idle CPU usage stays near zero.

Backend (core/config.py):

PORT = 1312            # Server port

API

HTTP

GET /              # Dashboard
GET /api/gpu-data  # JSON metrics snapshot
GET /api/version   # Version and update info

WebSocket

const ws = new WebSocket('ws://localhost:1312/socket.io/');

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  // data.gpus      โ€” per-GPU metrics
  // data.processes  โ€” active GPU processes
  // data.system     โ€” host CPU, RAM, swap, disk, network
};

Project Structure

gpu-hot/
โ”œโ”€โ”€ app.py                      # FastAPI server + routes
โ”œโ”€โ”€ version.py                  # Version info
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ config.py               # Configuration
โ”‚   โ”œโ”€โ”€ monitor.py              # NVML GPU monitoring
โ”‚   โ”œโ”€โ”€ handlers.py             # WebSocket handlers
โ”‚   โ”œโ”€โ”€ hub.py                  # Multi-node hub aggregator
โ”‚   โ”œโ”€โ”€ hub_handlers.py         # Hub WebSocket handlers
โ”‚   โ”œโ”€โ”€ nvidia_smi_fallback.py  # nvidia-smi fallback for older GPUs
โ”‚   โ””โ”€โ”€ metrics/
โ”‚       โ”œโ”€โ”€ collector.py        # Metrics collection
โ”‚       โ””โ”€โ”€ utils.py            # Metric utilities
โ”œโ”€โ”€ static/
โ”‚   โ”œโ”€โ”€ css/
โ”‚   โ”‚   โ”œโ”€โ”€ tokens.css          # Design tokens (colors, spacing)
โ”‚   โ”‚   โ”œโ”€โ”€ layout.css          # Page layout (sidebar, main)
โ”‚   โ”‚   โ””โ”€โ”€ components.css      # UI components (cards, charts)
โ”‚   โ”œโ”€โ”€ js/
โ”‚   โ”‚   โ”œโ”€โ”€ chart-config.js     # Chart.js configurations
โ”‚   โ”‚   โ”œโ”€โ”€ chart-manager.js    # Chart data + lifecycle
โ”‚   โ”‚   โ”œโ”€โ”€ chart-drawer.js     # Correlation drawer
โ”‚   โ”‚   โ”œโ”€โ”€ gpu-cards.js        # GPU card rendering
โ”‚   โ”‚   โ”œโ”€โ”€ socket-handlers.js  # WebSocket + batched rendering
โ”‚   โ”‚   โ”œโ”€โ”€ ui.js               # Sidebar navigation
โ”‚   โ”‚   โ””โ”€โ”€ app.js              # Init + version check
โ”‚   โ””โ”€โ”€ favicon.svg
โ”œโ”€โ”€ templates/index.html
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ docker-compose.yml
โ””โ”€โ”€ requirements.txt

Troubleshooting

No GPUs detected:

nvidia-smi  # Verify drivers work
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi  # Test Docker GPU access

Hub can't connect to nodes:

curl http://node-ip:1312/api/gpu-data  # Test connectivity
sudo ufw allow 1312/tcp                # Check firewall

Performance issues: Increase UPDATE_INTERVAL (env var, seconds โ€” e.g. -e UPDATE_INTERVAL=2.0)


Star History

Star History Chart

Contributing

PRs welcome. Open an issue for major changes.

License

MIT - see LICENSE

Related repositories
d3/d3

Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

ShellISC Licensevisualizationdata-visualization
d3js.org
113.3k22.7k
apache/echarts

Apache ECharts is a powerful, interactive charting and data visualization library for browser

TypeScriptnpmApache License 2.0echartsdata-visualization
echarts.apache.org
66.9k19.8k
umami-software/umami

Umami is a modern, privacy-focused analytics platform. An open-source alternative to Google Analytics, Mixpanel and Amplitude.

TypeScriptnpmMIT Licenseanalyticscharts
umami.is
37.8k7.6k
helm/helm

The Kubernetes Package Manager

GoGo ModulesApache License 2.0cncfchart
helm.sh
30k7.7k
plotly/plotly.js

Open-source JavaScript charting library behind Plotly and Dash

JavaScriptnpmMIT Licensedata-visualizationd3
plotly.com/javascript/
18.3k2k
tradingview/lightweight-charts

Performant financial charts built with HTML5 canvas

TypeScriptnpmApache License 2.0financial-charting-librarycharting-library
tradingview.com/lightweight-charts/
16.6k2.5k
Canner/WrenAI

GenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.

PythonPyPIOtherbigqueryduckdb
docs.getwren.ai/oss/introduction
16.5k1.9k
helm/charts

โš ๏ธ(OBSOLETE) Curated applications for Kubernetes

GoGo ModulesApache License 2.0kubernetescharts
15.4k16.3k
apexcharts/apexcharts.js

๐Ÿ“Š Interactive JavaScript Charts built on SVG

JavaScriptnpmOtherchartsgraphs
apexcharts.com
15.1k1.4k
sqshq/sampler

Tool for shell commands execution, visualization and alerting. Configured with a simple YAML file.

GoGo ModulesGNU General Public License v3.0shellvisualization
sampler.dev
14.7k667
plouc/nivo

nivo provides a rich set of dataviz components, built on top of the awesome d3 and React libraries

TypeScriptnpmMIT Licensedatavizreact
nivo.rocks
14.1k1.1k
primefaces/primeng

The Most Complete Angular UI Component Library

TypeScriptnpmOtherangularui
primeng.org
12.5k5.1k