A live system dashboard in Python: terminal and web UIs, smart alerts, recordings and HTML reports.

The complete version of our hardware and system information tutorial: a live terminal dashboard (every core, RAM, disks, network, NVIDIA GPU, sensors, processes), a live web dashboard served by the standard library, alerts with duration and hysteresis, long recordings to SQLite and self-contained HTML reports with charts. Works on Windows, macOS and Linux.
Upgrades the free tutorial: How to Get Hardware and System Information in Python
Everything the tutorial leaves as an exercise, done properly.
CPU with every core, RAM, disks, network, GPU, sensors and a sortable process list, sized to your terminal.
A single-page dashboard with live charts over Server-Sent Events. No Flask, no CDN.
"CPU above 90% for 30 s": duration, hysteresis and cooldown, with native desktop notifications.
Record for hours or weeks to SQLite or CSV, with a background sampler that never freezes the UI.
One self-contained file with summary cards, SVG charts and the alerts that would have fired.
Load, VRAM, temperature and power through nvidia-smi, with no extra package.
psutil is injectable, so every metric can be tested and faked.
11 pytest tests with a fake psutil: rates, alerts, recorder, reports, dashboard and web API.
Real output of the tools. Sample data is used wherever a screenshot would show private information (networks, emails, processes).
The tutorial is great for learning the basics. This is the version you'd actually ship.
| Free tutorial | System Monitor Pro | |
|---|---|---|
| Output | A printed report | Live terminal + web dashboards |
| Refresh | Once | Continuous, in a background thread |
| History | — | Sparklines, charts, recordings |
| Alerts | — | ✓ duration, hysteresis, notifications |
| Reports | Text/JSON | HTML with charts |
| Processes | — | Sortable, per-process CPU and memory |
| Tests | — | 11 pytest tests |
Clean, commented, modular Python. Here's the start of sysmon_pro/alerts.py:
def check(self, get_metric: Callable[[str], Optional[float]], now: float) -> List[Event]:
"""Evaluate every rule; ``get_metric`` maps a metric path to its value."""
events = []
for rule in self.rules:
if not rule.enabled:
continue
value = get_metric(rule.metric)
st = self._state[rule.name]
if value is None:
st.since = None
continue
if st.active:
if rule.recovered(value):
st.active, st.since = False, None
The Python Tools Pro Pack includes System Monitor Pro plus our other premium tools, for $21.75 instead of $65 when bought one by one.
What's in the pack?
Python 3.8 or newer with psutil and rich (pip install -r requirements.txt). Windows, macOS and Linux. NVIDIA GPUs are read through nvidia-smi, installed with the driver.
You're sent straight to your download page, and we email you the link too. The link keeps working, so you can re-download updated versions later. Lost it? Recover your downloads with your email.
If you've followed our free tutorial, yes. The code is split into small, commented modules, and the README walks through the architecture. It's the ideal next step after the tutorial.
Yes. You can modify it, learn from it, and ship your own tools and apps built on it, even commercially. The only thing you can't do is redistribute or resell the source code itself.
Email us within 14 days and we'll refund you. No questions asked.
$9 one-time. Instant download, free updates.
Scan, analyse and improve your Wi-Fi in Python: best channel, security checkup, site survey and reports
Global hotkeys, a text expander and a macro recorder in Python that work in every app
Transcripts and subtitles from any audio or video in Python, locally or with the OpenAI and Groq APIs
Search, back up, export and clean up any IMAP mailbox in Python, with Gmail-style queries and rules
All five premium Python games in one download: Tetromino, Flappy Wings, Chess, Snake and Platformer Pro