Skip to content
ymf2317-techPublic

About

A tiny, dependency-free web dashboard for Glances - one file, no build step.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

minipulse

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 data

Why another dashboard?

Because 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.

Requirements

  • Python 3.8+ (standard library only - nothing to pip install for 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

Quick start

# 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-server

Open 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.

Options

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.

Deploy

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.

Temperature

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.

How it works

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.

Gotchas worth knowing

  • Glances 4.x has no web UI. glances -w serves the REST API only; the old bundled UI was removed. That is what minipulse is for.
  • pythonw.exe will crash on Windows. Glances writes to stdout during startup; a windowless interpreter has no stdout. Use python.exe with output redirected to a log.
  • Task Scheduler kills child processes. If the scheduled task's action exits immediately (e.g. a .vbs launcher that returns), the server it spawned dies with it. Make the task run the server itself so it stays in Running.
  • Linux mount points: / is shown as /; Windows C:\\ becomes C:.

Credits

  • 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.

License

MIT - see LICENSE.

About

A tiny, dependency-free web dashboard for Glances - one file, no build step.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages