glint

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 15, 2026 License: MIT

README

Glint

CI Release Go Version Go Report Card Docker Image Docs

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.

☀ Light
☾ Dark

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

# Docker Compose
cp glint.example.yml glint.yml
# Edit glint.yml with your PVE/PBS credentials
docker compose up -d
# Or Docker run
docker run -d -p 3800:3800 \
  -v glint-data:/data \
  -v ./glint.yml:/etc/glint/glint.yml:ro \
  ghcr.io/darshan-rambhia/glint:latest \
  glint --config /etc/glint/glint.yml
# Or install with Homebrew (macOS/Linux)
brew install darshan-rambhia/tap/glint
glint --config glint.yml
# Or install with Go (requires Go 1.26+)
go install github.com/darshan-rambhia/glint/cmd/glint@latest
glint --config glint.yml

Documentation

Full documentation is available at darshan-rambhia.github.io/glint.

Guide Description
Getting Started Create API tokens, write your config, deploy
Configuration Full config reference — YAML options, env vars, defaults
Deployment Docker, Podman, Quadlet, systemd bare metal
Reverse Proxy Caddy, nginx, Traefik with TLS and authentication
Logging Log formats, levels, systemd/journald integration
Architecture How Glint works — collectors, cache, store, alerter
API Reference OpenAPI spec, JSON API, htmx fragment endpoints
Testing Unit tests, benchmarks, fuzz tests, coverage, linting

Security

Glint has no built-in authentication. It is designed for trusted home networks where the monitoring port is not internet-accessible.

  • Do not expose port 3800 to the internet without a reverse proxy with authentication (Caddy, nginx, Authelia, etc.)
  • For any non-LAN deployment, bind Glint to 127.0.0.1 and put it behind an authenticated reverse proxy
  • API tokens for PVE/PBS are stored in your config file — protect it with chmod 600 glint.yml
  • Setting insecure: true disables TLS certificate verification and logs a startup warning

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.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Development

# Prerequisites
go install github.com/a-h/templ/cmd/templ@latest
go install github.com/go-task/task/v3/cmd/task@latest

# Generate + build
task build

# Run tests
task test

# Run tests with coverage
task test:coverage

# Run locally
task run

# Lint
task lint

# Serve docs locally
pip install mkdocs-material
mkdocs serve

License

MIT

Directories

Path Synopsis
cmd
glint command
docs
swagger
Package swagger Code generated by swaggo/swag.
Package swagger Code generated by swaggo/swag.
internal
alerter
Package alerter evaluates alert rules against cached state.
Package alerter evaluates alert rules against cached state.
api
Package api provides HTTP handlers for the Glint dashboard.
Package api provides HTTP handlers for the Glint dashboard.
collector
Package collector provides the data collection framework for Glint.
Package collector provides the data collection framework for Glint.
config
Package config handles loading and validating Glint configuration.
Package config handles loading and validating Glint configuration.
model
Package model defines all shared domain types for Glint.
Package model defines all shared domain types for Glint.
store
Package store provides SQLite persistence for Glint.
Package store provides SQLite persistence for Glint.
scripts
bench command
Benchmark report tool for Glint.
Benchmark report tool for Glint.
coverage command
Coverage tool for Glint.
Coverage tool for Glint.
fuzz command
Fuzz testing report tool for Glint.
Fuzz testing report tool for Glint.
Package templates provides helper functions for templ templates.
Package templates provides helper functions for templ templates.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL