A single ~16MB binary that monitors your entire infrastructure. Designed to run on a Raspberry Pi Zero W — fast enough for everything else.
From HTTP endpoints to DNS records, updu checks the things that matter — and alerts you when they don't respond.
Monitor web endpoints with configurable expected status codes, response time thresholds, and keyword matching in response bodies.
Verify that services are accepting connections on specific ports. Catch firewall misconfigurations and service crashes instantly.
Validate DNS records resolve correctly. Detect hijacking, propagation delays, and misconfigured zones before users notice.
Low-level reachability checks for hosts and network devices. Know immediately when a server goes dark.
Verify SSH connectivity to remote machines. Make sure your management plane stays reachable at all times.
Track certificate expiry dates and get warned before they lapse. No more surprise expired-cert outages.
Deep-check API responses by validating JSON fields and values. Make sure your services return what they should.
updu was purpose-built to run on the smallest hardware. A single Go binary with an embedded SvelteKit frontend and SQLite database — no Node.js runtime, no external database, no containers required.
512MB RAM · 1GHz single-core · $10 board
No microservices. No sidecars. Just one file that does the job.
Go compiles to a single static executable. Drop it on any host and run. No runtime, no package manager, no fuss.
The SvelteKit frontend is compiled and embedded directly inside the Go binary using go:embed.
One file serves everything.
No Postgres, no MySQL, no Redis. Data lives in a single SQLite file alongside the binary. Backup is just a file copy.
Server-Sent Events push monitor status updates to the dashboard instantly. No polling, no WebSocket complexity.
Get notified when things go down via webhook. Integrate with Discord, Slack, or any service that accepts HTTP callbacks.
Optional OIDC integration for single sign-on. Built with conditional compilation — zero bloat if you don't need it.
Share beautiful, public-facing status pages with your users. Select which monitors and groups appear on each page.
Official multi-arch Docker image. One docker run command and you're monitoring. Works on ARM
and x86.
Choose your preferred installation method.
# Pull and run updu
docker run -d \
--name updu \
-p 3000:3000 \
-v updu_data:/data \
ghcr.io/nwpeckham88/updu:latest
# docker-compose.yml
services:
updu:
image: ghcr.io/nwpeckham88/updu:latest
ports:
- "3000:3000"
volumes:
- updu_data:/data
restart: unless-stopped
volumes:
updu_data:
# Download the latest release
curl -LO https://github.com/nwpeckham88/updu/releases/latest/download/updu-linux-arm6
# Make executable and run
chmod +x updu-linux-arm6
./updu-linux-arm6
Open localhost:3000 and create your first monitor. That's it.