Glint¶
Lightweight Proxmox monitoring dashboard. Single binary, ~10MB, ~30-50MB RAM.
Go + templ + htmx --- server-rendered HTML with 15-second live polling. SQLite for history. No JavaScript build step.
Features¶
- Node monitoring --- CPU, memory, swap, root filesystem, load average, I/O wait, uptime
- Guest monitoring --- LXC containers and QEMU VMs with status, CPU, memory, disk, network
- PBS backup tracking --- datastore usage, backup snapshots, task history, stale backup detection
- S.M.A.R.T. disk health --- ATA and NVMe attribute parsing with Backblaze-derived failure rate thresholds
- Alerting --- ntfy and webhook notifications with configurable rules and deduplication
- Multi-node ready --- supports multiple PVE instances, clusters, and PBS servers
- Temperature monitoring --- optional SSH-based CPU temperature polling
Quick Start¶
You need a Proxmox VE API token before starting. If you don't have one yet, follow the Getting Started guide first --- it takes about 5 minutes.
1. Create a config file called glint.yml:
listen: ":3800"
db_path: "/data/glint.db"
pve:
- name: "main"
host: "https://YOUR_PROXMOX_IP:8006" # (1)!
token_id: "glint@pam!monitor" # (2)!
token_secret: "xxxxxxxx-xxxx-xxxx-xxxx-xxxx" # (3)!
insecure: true # (4)!
- Replace with your Proxmox server's IP address
- The API token ID you created (format:
user@realm!tokenname) - The token secret shown when you created the token
- Set to
trueif your Proxmox uses a self-signed certificate (most do)
2. Start Glint:
Create a docker-compose.yml in the same folder as glint.yml:
Requires Go 1.26+ and a C compiler (for SQLite):
Download the latest release from GitHub Releases, then:
See the Deployment guide for full binary install and systemd service setup.
3. Open http://localhost:3800 --- you should see your Proxmox node within 15 seconds.
Want PBS backup monitoring too?
Add a pbs: section to your config. See the full Configuration reference for all options including PBS, alerting, and notifications.
Documentation¶
| Guide | Description |
|---|---|
| Getting Started | Create API tokens, write your config, deploy with Docker Compose |
| Configuration | Full config reference --- YAML options, environment variables, defaults |
| Deployment | Docker, Podman, Quadlet, systemd bare metal |
| Logging | Log formats, levels, systemd/journald integration |
| Architecture | How Glint works --- collectors, cache, store, alerter |
| Testing | Unit tests, benchmarks, fuzz tests, coverage, linting |
Inspiration¶
Glint draws heavily from two excellent projects:
- Pulse --- Instance + node two-level hierarchy, per-instance collectors with a bounded worker pool, and snapshot-based caching. Pulse covered Proxmox host metrics and PBS backup monitoring well but lacked S.M.A.R.T. disk health tracking.
- Scrutiny --- WWN-based disk identity (globally unique, survives reboots and cable changes), protocol-aware SMART parsing (ATA vs NVMe vs SCSI), and Backblaze-derived failure rate thresholds for real-world risk assessment beyond manufacturer pass/fail.