Skip to content

Hermes

v0.5 BetaView on GitHub
Hermes — Speed MonitorDemo Video

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 SpeedResult is 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 /metrics and 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