
Case study Personal project
A local system monitor that shows where your programs are sending data.
- Client
- Personal project
- Type
- System utility
- Role
- Design & development
- Year
- 2026
01Overview
A personal system monitor for Linux: one Python sampling engine behind two interfaces, a full-screen terminal dashboard and a local web page, covering CPU, memory, disks, network, processes and the live connections each program has open.
02The problem
Knowing what a computer is doing right now usually means juggling top, ss, df and a desktop system monitor. None of them answers, in one place, which program is using the machine and who each of its connections is talking to.
02The approach
One small sampling engine, two faces. A shared collector reads the whole system with psutil, and a terminal dashboard and a web page both render the same snapshot. It runs only when called: no daemon, no background service, and the web server listens on localhost only.
03The build
What was actually built
- 01
A shared collector built on psutil: per-core CPU, memory and swap, disk usage and I/O, network rates, every process and every established connection, sampled into one snapshot.
- 02
A terminal dashboard with Rich: a full-screen live view, sorting by CPU or memory from the keyboard, a one-shot mode and an optional JSON Lines log.
- 03
A web interface on Python's standard-library HTTP server, bound to localhost: a sampler thread keeps about three minutes of history, the page polls a single JSON endpoint, and a button shuts the server down.
- 04
A front end with no dependencies or build step, in plain HTML, CSS and JavaScript: gauges drawn with conic gradients, hand-written SVG charts, searchable and sortable tables, light and dark themes, and reverse DNS resolved in the background so a lookup never blocks a refresh.
Technology
- Python
- psutil
- Rich
- JavaScript
- HTML
- CSS
- SVG
04The experience





05Where it stands
A working personal tool that runs locally on Linux and is started on demand. Not packaged or published.
