Why I built it
Setting up small servers, I kept hitting the same gap. Prometheus and Grafana are heavy and need their own infrastructure; SSH and top give no history and no dashboard. Nothing lightweight and self-contained sat in between.
What it does
- Live CPU, memory, network and disk, updated every second
- History over 6 hours, 24 hours or 7 days
- Webhook alerts for sustained high CPU or memory, with a cooldown so they don’t spam
- Optional top-process list
- Signed session tokens, Argon2 password hashing, login rate limiting, server-side session revocation and strict security headers
How it’s built
One binary, no runtime on the host. The Svelte app is compiled at build time and embedded into the Rust binary, so assets load from memory, not disk.
Live updates use Server-Sent Events rather than WebSockets: data only flows server-to-browser, so the simpler protocol is enough. History goes into an embedded SQLite database.
The hard part
Keeping it a single file. Every convenience (a frontend dev server, an external database, a config service) had to be designed out so the result still runs with nothing but scp and one command.
