A terminal-based system monitor (TUI) for NVIDIA Grace Blackwell (GB10) and hybrid CPU architectures
Project description
SPARK-SMI
A specialized terminal-based system monitor (TUI) built for NVIDIA Grace Blackwell (GB10) and hybrid ARM architectures — because
nvidia-smialone doesn't tell the full story.
Demo
Why SPARK-SMI?
The NVIDIA DGX Spark (GB10) is a unique system — a Grace Blackwell chip with unified CPU+GPU memory, hybrid Cortex-X925/A725 core clusters, and high-speed MT2910 200G networking. Standard tools like nvidia-smi, htop, and nvtop were not built with this topology in mind. SPARK-SMI was.
| What it handles correctly | Standard tools |
|---|---|
| Hybrid P-core / E-core CPU clusters | ❌ |
| GB10 Unified Memory (CPU+GPU shared) | ❌ |
| MT2910 200G NIC bandwidth monitoring | ❌ |
| Mixed GPU architectures in one system | ❌ |
| NVML with graceful CLI fallback | ✅ |
| Zero system dependencies | ✅ |
Features
- Snapshot Mode — Runs once and prints to stdout with full ANSI colors, just like
nvidia-smi. Pipe it, log it, script it. - Live Mode (
-l) — Flicker-free TUI that refreshes every second with responsive terminal resize handling. - Hybrid CPU Topology — Correctly splits and labels Cortex-X925 (Performance) and Cortex-A725 (Efficiency) core clusters with individual per-core load bars.
- Unified Memory Aware — Detects GB10 unified memory architecture and maps system RAM to GPU memory display accurately.
- Dual GPU Support — Handles mixed architectures (e.g. sm_121 GB10 + sm_86 RTX 3090 via OcuLink) simultaneously.
- NIC Monitoring — Real-time bandwidth utilization across all interfaces: MT2910 200G ports (1–4) and Realtek 10G (port 5), read directly from sysfs.
- Driver & CUDA Info — Footer displays live Driver version and CUDA version via NVML or nvidia-smi fallback.
- Robust Fallbacks — NVML → nvidia-smi CLI → graceful degradation. Adapts to missing sensors, fan controllers, and unsupported queries without crashing.
Screenshots
| Full Dashboard | Resize-Safe |
|---|---|
| Scales cleanly from narrow to full-width |
Prerequisites
- Linux (aarch64 recommended — built and tested on DGX Spark)
- Python 3.6+
- NVIDIA Drivers installed
nvidia-smiin PATH
Installation
Option 1: Quick Run (Virtual Environment)
The safest method on DGX appliances — no system libraries touched.
git clone https://github.com/chappa-ai-llc/spark-smi.git
cd spark-smi
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
# Snapshot (single output)
./venv/bin/python3 spark-smi.py
# Live mode
./venv/bin/python3 spark-smi.py -l
Option 2: System Alias (Recommended)
Type spark-smi from anywhere.
echo "alias spark-smi='~/spark-smi/venv/bin/python3 ~/spark-smi/spark-smi.py'" >> ~/.bashrc
source ~/.bashrc
Usage
| Command | Action |
|---|---|
spark-smi |
Snapshot — print once and exit |
spark-smi -l |
Live mode — interactive TUI |
spark-smi -n 0.5 -l |
Live mode at 0.5s refresh rate |
Interactive Controls
| Key | Action |
|---|---|
q |
Quit |
t |
Toggle temperature units (°C / °F) |
u |
Toggle memory units (GiB / GB) |
Tested Hardware
| Component | Details |
|---|---|
| System | NVIDIA DGX Spark |
| SoC | GB10 Grace Blackwell (sm_121) |
| External GPU | RTX 3090 via M.2 OcuLink (sm_86) — mixed architecture, single dashboard |
| NICs | MT2910 × 4 (200G, 100G & 40G DAC), Realtek × 1 (10G, 5G, 2.5G, 1G) |
| OS | Linux 6.17.0-nvidia |
| Driver | 580.126.09 |
| CUDA | 13.0 |
Roadmap
- Fan Monitoring — Read GB10 chassis fan speeds without
sudo(currently blocked bynvsm/IPMI privilege requirements) - REST API / Prometheus Exporter — Expose a lightweight JSON HTTP endpoint for Grafana and Prometheus integration
- CSV Logging Mode —
--csvflag to pipe raw metrics to stdout or file for external processing - PyPI Package —
pip install spark-smione-liner install - Multi-node Support — Monitor clustered DGX Spark nodes from a single dashboard
About
Built by chappa-ai-llc — a solo homelab project born out of frustration with existing tools on novel hardware.
If this saved you time, a ⭐ on the repo is appreciated.
License
MIT — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spark_smi-3.6.0.tar.gz.
File metadata
- Download URL: spark_smi-3.6.0.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcd24931b186afa1f4a8dfbad48371170033ad692ff9c7e4624d491917ff449f
|
|
| MD5 |
9cf7ef78c0b9aac2e9bf1a806b632b87
|
|
| BLAKE2b-256 |
4584adceba913b1274f4fdeb23131f78c846dbca2ebcd28ed68a1881db82fc9e
|
File details
Details for the file spark_smi-3.6.0-py3-none-any.whl.
File metadata
- Download URL: spark_smi-3.6.0-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddc66d31ac096583bb355458c914c26e3e5a92f631455aca43c7d0699d6df991
|
|
| MD5 |
53d1009b7617a5acd9a61fac2646884b
|
|
| BLAKE2b-256 |
957418d6fad833bbef6546db80d55426c7ac0fd05a3ae58bbef0849997ba1367
|