Hermes
Beta Demo Available — live dashboard footage, manual test runs, trend views, and API-driven updates.
About This Project
Project Overview
Hermes is a self-hosted internet speed monitoring platform that runs scheduled and on-demand speed tests, then exports results to multiple destinations for analysis and alerting. It combines a modern web UI, REST API, and observability integrations so you can track connection quality over time instead of relying on one-off test snapshots.
Technical Implementation
- Two-service architecture: A scheduler service runs speed tests and exporters, while a FastAPI service powers the React UI and REST endpoints.
- Multi-destination export pipeline: Each
SpeedResultis dispatched to enabled exporters (CSV, SQLite, Prometheus, Loki) without coupling test execution to any single storage target. - Runtime configuration: Interval, exporters, and alert settings can be updated through the UI/API and applied immediately.
- Observability-first design: Native Prometheus metrics on
/metricsand Loki push integration support existing Grafana workflows. - API + UI parity: Core actions are available both in the browser and programmatically (trigger test, view results, update config, manage alerts).
- Security-by-default controls: Optional API key auth, rate limiting, request-size limits, CORS restrictions, and SSRF-safe alert URL validation.
Development Journey
Hermes started as a lightweight speed logging utility and evolved into a production-ready monitoring platform. The project was refactored into clear layers for runner, result model, dispatch, exporters, and API routes, making the system easier to extend and maintain. As scope expanded, Hermes added stronger security boundaries, richer alerting providers, and tighter observability integration so it could operate reliably in real home-lab and self-hosted environments.
Key Features
- Scheduled and on-demand speed test execution
- Rich result capture: download, upload, ping, jitter, ISP, timestamp
- Multi-destination exports: CSV, SQLite, Prometheus, Loki
- Browser dashboard with trend charts and latest-result views
- REST API for automation and external integrations
- Alerting with threshold + cooldown controls (Webhook, Gotify, ntfy, Apprise)
- Shared persistent data model for UI/API consistency
- Security hardening for production-style deployments