Vigilant Vole is a lightweight, self-hosted uptime monitor written in Rust. Status pages,
smart alerts and remote agents, in the spirit of Uptime Kuma.
One ~18 MB image. SQLite. Runs anywhere Docker does.
Thirteen kinds of checks, alerts that don’t cry wolf, and status pages your users will
actually read, from one small container.
Thirteen ways to check
HTTP(S) with status codes, headers, auth and proxies, plus keyword and JSONPath checks.
TCP ports, ping, DNS with nine record types and your own resolver, push heartbeats for
cron jobs, Docker containers, WebSockets, domain expiry over RDAP, NTP, Steam game
servers, and groups.
TLS certificates and domain registrations warn you before they expire. Tags, groups
and maintenance windows keep a hundred monitors as calm as ten.
Payments webhookHTTP(S) · api.example.com96.2%24 h
Alerts that don’t cry wolf
A failing check retries on its own interval before anyone hears about it. Alerts fire
on settled changes only, recovery messages say how long it was down, and
flapping monitors are called out instead of flooding your phone.
Send reminders every few failed checks while it stays down, and
escalate to a second channel, say PagerDuty, after a set number of
minutes. Upside-down mode flips any check.
Back up after 12 min · sent to Ops Discord and PagerDuty
Escalated21:14
Down for 10 min · sent to PagerDuty
Reminder21:09
Still down after 5 checks
Down21:04
HTTP 503 Service Unavailable · confirmed after 2 retries
Status pages people actually read
Public pages with sections, 90-day uptime bars, response times, incidents written in
Markdown (pinned, with history) and scheduled maintenance. Light, dark or automatic,
custom CSS, and your own domain.
Every page is also JSON for embedding, and SVG badges put status,
uptime, response time or certificate expiry in a README.
Run the same binary in agent mode on another network, in another country. Agents pick
up the monitors you mark, run them, and report back to your server.
Turn on outage confirmation and a local failure only becomes down, and
only alerts, when the agents agree. A flaky uplink at home no longer pages you at 3 a.m.
Local check failed; 2/3 remote agents report up
No alert yet. It only goes down when the agents agree.
This serverConnection timed out after 10 s
Frankfurt200 OK · 38 ms
Amsterdam200 OK · 41 ms
New YorkTimed out
Label a container, get a monitor
Mount the Docker socket, or a read-only socket proxy, switch on discovery, and add
vigilant.* labels. Vigilant Vole creates the monitor and pauses it when the
container goes away.
Upload kuma.db (1.23 or 2.x) or a JSON backup. Monitors, groups, tags, notifications, status pages and maintenance come across, and push tokens are kept.
Uptime Kuma is an excellent, mature project with a big community, and Vigilant Vole
borrows a lot of its ideas. Here’s an honest comparison with Kuma 1.23 and 2.0.
Feature comparison between Vigilant Vole and Uptime Kuma
Feature
Vigilant Vole
Uptime Kuma
Footprint
Runtime
One static Rust binary, server-rendered HTML (Askama + htmx)
Status page logo upload, analytics, password protection
No
Yes
Incidents
Multiple per page, pinned, history
One active incident per page
Maintenance windows
Manual, once, daily, weekly
Also cron, day-of-month, every N days
Running it
Multiple users with roles
Admin, editor, viewer
Single user
2FA (TOTP)
Yes, with recovery codes
Yes
REST API
Full CRUD + OpenAPI
No (socket.io; API keys for metrics only)
Config as code, GitOps
YAML/JSON, dry-run, merge or replace
No
Docker label auto-discovery
Built in
No (third-party AutoKuma)
Prometheus metrics
Kuma-compatible names + more
Yes
Long-range uptime after retention
Daily rollups
Aggregate tables in 2.0
Import from the other one
Reads kuma.db
–
Interface languages
English, Norwegian
About 50 languages
Built-in Cloudflare Tunnel, remote browsers
No
Yes
When Kuma is the better fit
If you need database, MQTT or browser monitors, or a language other than English or
Norwegian, Uptime Kuma is the better choice today. Already on Kuma? The
importer
brings your setup across.
Up in a minute.
Pull the image, map a port and a folder, and open
http://localhost:3001. A one-time setup wizard creates your admin account.
Finish setup right away
Until the first admin exists, anyone who can reach the page can create one. Set
VV_SETUP_TOKEN to require a secret in the setup link.