A tiny, dependency-free web dashboard for Glances.
One file, no build step, no CDN, no npm. Point it at a running Glances web server and open it on your phone: CPU, memory, network, disks, temperatures and top processes, refreshed once per second, with the last 3 minutes of history already drawn the moment the page loads.
python3 minipulse.py --demo # no Glances needed, fake dataBecause opening a monitoring page should not take three seconds. Tools that sample over SSH start a new session every time you open them and wait for the first sample to come back. minipulse runs as a long-lived process next to Glances: the server samples continuously, keeps a 3-minute ring buffer in memory, and serves a ~1.5 KB JSON snapshot. The page polls that snapshot once per second, so it is fully populated on first paint.
- Python 3.8+ (standard library only - nothing to
pip installfor minipulse) - A running Glances web server (
glances -w), reachable over HTTP
pip install "glances[web]" # or: uv tool install "glances[web]"
glances -w --bind 127.0.0.1 -p 61207 --quiet# 1. Glances on loopback (it only needs to be reachable by minipulse)
glances -w --bind 127.0.0.1 -p 61207 --quiet &
# 2. minipulse
python3 minipulse.py --port 61208 --bind 0.0.0.0 --title my-serverOpen http://<host>:61208/. On Android/iOS use "Add to home screen": the page
ships a manifest.webmanifest and a 512px icon, so the shortcut opens
full-screen without browser chrome.
Put icon.png next to minipulse.py (or in assets/icon.png). Rebuild it from
assets/icon.svg with rsvg-convert -w 512 -h 512 assets/icon.svg -o icon.png.
| Flag | Default | Meaning |
|---|---|---|
--glances URL |
http://127.0.0.1:61207 |
Glances web server base URL |
--port N |
61208 |
listen port |
--bind ADDR |
0.0.0.0 |
listen address |
--auth USER:PASS |
(off) | HTTP basic auth |
--title TEXT |
minipulse |
page title / home-screen label |
--interval N |
1.0 |
sampling interval, seconds |
--demo |
serve generated data, no Glances required | |
--no-temp |
skip temperature probing | |
--version |
print version |
Endpoints: / (page), /api/metrics (JSON), /icon.png,
/manifest.webmanifest, /healthz.
- systemd -
examples/minipulse.service - Windows -
examples/install-windows-task.ps1 - Docker -
examples/Dockerfile(Glances and minipulse in one container)
Do not expose this to the internet without
--auth. It has no TLS and no rate limiting. Put it behind a VPN (Tailscale/WireGuard), an SSH tunnel, or a TLS reverse proxy - or at least pass--auth user:pass, which is plain HTTP basic auth and therefore only as private as the transport.
minipulse reads the sensors itself, because Glances reports none on Windows:
| OS | Source | Notes |
|---|---|---|
| Windows | PDH counter \Thermal Zone Information(*)\Temperature via ctypes |
ACPI thermal zones, ~0.4 ms per read, no subprocess |
| Linux | /sys/class/thermal/thermal_zone*/temp |
falls back to Glances' sensors plugin |
These are board / ACPI zone readings, not per-core die temperatures. Real core temps and fan speeds on Windows need LibreHardwareMonitor running as a service, which is out of scope for a zero-dependency tool.
Glances REST API (127.0.0.1:61207)
| ~9 small GETs per second, process list every 5 s
v
minipulse -- ring buffer, 180 samples
| GET /api/metrics (~1.5 KB)
v
phone browser -- poll 1x/s, draw canvas sparklines
Only the endpoints actually used are queried. Do not point it at
/api/4/all: that makes Glances evaluate every plugin on every request, and on
Windows net_connections + programlist are slow enough to burn a whole CPU
core.
- Glances 4.x has no web UI.
glances -wserves the REST API only; the old bundled UI was removed. That is what minipulse is for. pythonw.exewill crash on Windows. Glances writes to stdout during startup; a windowless interpreter has no stdout. Usepython.exewith output redirected to a log.- Task Scheduler kills child processes. If the scheduled task's action exits
immediately (e.g. a
.vbslauncher that returns), the server it spawned dies with it. Make the task run the server itself so it stays inRunning. - Linux mount points:
/is shown as/; WindowsC:\\becomesC:.
- Glances - GPL-3.0. It does all the
measuring; minipulse only consumes its REST API over HTTP. No Glances code is
copied, linked or bundled here, so the MIT license above is not affected.
The one exception is
examples/Dockerfile, which installs Glances into the image: if you redistribute that image, ship the GPL-3.0 text and a pointer to the Glances source along with it.
MIT - see LICENSE.