Open Source · Self-Hosted

Uptime monitoring
that runs anywhere

A single ~16MB binary that monitors your entire infrastructure. Designed to run on a Raspberry Pi Zero W — fast enough for everything else.

~0MB
ARM binary
0 checks
Monitor types
0 deps
External dependencies
0 binary
To deploy
Monitor Everything

Seven ways to watch your stack

From HTTP endpoints to DNS records, updu checks the things that matter — and alerts you when they don't respond.

HTTP / HTTPS

Monitor web endpoints with configurable expected status codes, response time thresholds, and keyword matching in response bodies.

TCP Port

Verify that services are accepting connections on specific ports. Catch firewall misconfigurations and service crashes instantly.

DNS

Validate DNS records resolve correctly. Detect hijacking, propagation delays, and misconfigured zones before users notice.

ICMP / Ping

Low-level reachability checks for hosts and network devices. Know immediately when a server goes dark.

SSH

Verify SSH connectivity to remote machines. Make sure your management plane stays reachable at all times.

SSL Certificate

Track certificate expiry dates and get warned before they lapse. No more surprise expired-cert outages.

JSON API

Deep-check API responses by validating JSON fields and values. Make sure your services return what they should.

Ridiculously Lightweight

Born on a Raspberry Pi Zero W

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.

~0MB
ARM v6 binary
0
External dependencies
0
File to deploy
512MB
Min RAM (Pi Zero W)

Runs on a Pi Zero W

512MB RAM · 1GHz single-core · $10 board

updu (ARM v6) ~16 MB
Uptime Kuma ~300 MB+
Grafana + Prometheus ~800 MB+
Datadog Agent ~750 MB+
Built for Homelabs

Everything in one binary

No microservices. No sidecars. Just one file that does the job.

Single Binary

Go compiles to a single static executable. Drop it on any host and run. No runtime, no package manager, no fuss.

Embedded UI

The SvelteKit frontend is compiled and embedded directly inside the Go binary using go:embed. One file serves everything.

SQLite Storage

No Postgres, no MySQL, no Redis. Data lives in a single SQLite file alongside the binary. Backup is just a file copy.

Real-time SSE

Server-Sent Events push monitor status updates to the dashboard instantly. No polling, no WebSocket complexity.

Webhook Alerts

Get notified when things go down via webhook. Integrate with Discord, Slack, or any service that accepts HTTP callbacks.

OIDC / SSO

Optional OIDC integration for single sign-on. Built with conditional compilation — zero bloat if you don't need it.

Public Status Pages

Share beautiful, public-facing status pages with your users. Select which monitors and groups appear on each page.

Docker Ready

Official multi-arch Docker image. One docker run command and you're monitoring. Works on ARM and x86.

Get Started

Up and running in 30 seconds

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.