Uptimy Agent vs Uptime Kuma
A lighter, cluster-native alternative to Uptime Kuma
Measured side by side
Image download
- Agent
- 9 MB
- Kuma
- 603 MB
- Kuma slim
- 180 MB
Memory, no monitors
- Agent
- 8 MiB
- Kuma
- 126 MiB
- Kuma slim
- 127 MiB
Memory, 350 monitors
- Agent
- 25 MiB
- Kuma
- 154 MiB
- Kuma slim
- 157 MiB
CPU average, 350 monitors
- Agent
- 0.9%
- Kuma
- 5.6%
- Kuma slim
- 3.5%
Railway cost a month, 350 monitors
- Agent
- $0.43
- Kuma
- $2.63
- Kuma slim
- $2.24
| Uptimy Agent 0.1.7 | Uptime Kuma 2.5.5 | Kuma 2.5.5-slim | |
|---|---|---|---|
| Image download | 9 MB | 603 MB | 180 MB |
| Memory, no monitors | 8 MiB | 126 MiB | 127 MiB |
| Memory, 350 monitors | 25 MiB | 154 MiB | 157 MiB |
| CPU average, 350 monitors | 0.9% | 5.6% | 3.5% |
| Railway cost a month, 350 monitors | $0.43 | $2.63 | $2.24 |
Per monitor the two are close; most of the gap is the runtime. It matters where you pay for memory, like Railway, or run one monitor per cluster or project. Both cost little: Kuma's $2.63 a month fits a Hobby plan's included usage too.
What each does
Built for
Uptimy Agent · Running next to your services: in a cluster, a Railway project or a private network
Uptime Kuma · A self-hosted monitoring dashboard
Runtime
Uptimy Agent · One Go binary, distroless image
Uptime Kuma · Node.js
Monitor types
Uptimy Agent · HTTP(S), keyword, TCP, ping, DNS, TLS expiry, Postgres, MySQL, Redis, Kubernetes workloads and Services, heartbeats
Uptime Kuma · About 30, including all of those except Kubernetes, plus JSON queries, Docker, gRPC, MongoDB, MQTT, SQL Server, SNMP, real-browser checks and game servers
Kubernetes
Uptimy Agent · Label a Service, Ingress, Deployment or CronJob and it's monitored; read-only RBAC
Uptime Kuma · —
Cron jobs
Uptimy Agent · Heartbeats on an interval or a cron schedule with time zones, exit codes and durations. Kubernetes CronJobs need no ping
Uptime Kuma · Push monitors on an interval
Notifications
Uptimy Agent · Email, Slack, Teams, Discord, Telegram, ntfy, PagerDuty, webhooks, Uptimy, and 30+ through Shoutrrr
Uptime Kuma · About 100 built in
Status pages
Uptimy Agent · One, on its own domain if you like, with sections, logos, incident updates, notices and badges
Uptime Kuma · Several, each on its own domain, with incident posts and badges
Maintenance windows
Uptimy Agent · One-off
Uptime Kuma · One-off and recurring
Users
Uptimy Agent · Several, with admin and viewer roles
Uptime Kuma · One admin account
Monitors as code
Uptimy Agent · YAML (file, ConfigMap or env var), or Kubernetes labels
Uptime Kuma · In the UI (third-party tools add config files)
API
Uptimy Agent · REST API with tokens
Uptime Kuma · Push URLs, badges and Prometheus metrics; managed through the UI
Two-factor sign-in
Uptimy Agent · Yes, with recovery codes; admins can reset it for others
Uptime Kuma · Yes
Prometheus metrics
Uptimy Agent · Yes, plus a ServiceMonitor in the Helm chart
Uptime Kuma · Yes
Storage
Uptimy Agent · SQLite
Uptime Kuma · SQLite or MariaDB
When the monitor itself is down
Uptimy Agent · Optional: Uptimy alerts you from outside when the agent stops checking in
Uptime Kuma · Needs a second monitor
License
Uptimy Agent · Apache-2.0
Uptime Kuma · MIT
| Uptimy Agent | Uptime Kuma | |
|---|---|---|
| Built for | Running next to your services: in a cluster, a Railway project or a private network | A self-hosted monitoring dashboard |
| Runtime | One Go binary, distroless image | Node.js |
| Monitor types | HTTP(S), keyword, TCP, ping, DNS, TLS expiry, Postgres, MySQL, Redis, Kubernetes workloads and Services, heartbeats | About 30, including all of those except Kubernetes, plus JSON queries, Docker, gRPC, MongoDB, MQTT, SQL Server, SNMP, real-browser checks and game servers |
| Kubernetes | Label a Service, Ingress, Deployment or CronJob and it's monitored; read-only RBAC | — |
| Cron jobs | Heartbeats on an interval or a cron schedule with time zones, exit codes and durations. Kubernetes CronJobs need no ping | Push monitors on an interval |
| Notifications | Email, Slack, Teams, Discord, Telegram, ntfy, PagerDuty, webhooks, Uptimy, and 30+ through Shoutrrr | About 100 built in |
| Status pages | One, on its own domain if you like, with sections, logos, incident updates, notices and badges | Several, each on its own domain, with incident posts and badges |
| Maintenance windows | One-off | One-off and recurring |
| Users | Several, with admin and viewer roles | One admin account |
| Monitors as code | YAML (file, ConfigMap or env var), or Kubernetes labels | In the UI (third-party tools add config files) |
| API | REST API with tokens | Push URLs, badges and Prometheus metrics; managed through the UI |
| Two-factor sign-in | Yes, with recovery codes; admins can reset it for others | Yes |
| Prometheus metrics | Yes, plus a ServiceMonitor in the Helm chart | Yes |
| Storage | SQLite | SQLite or MariaDB |
| When the monitor itself is down | Optional: Uptimy alerts you from outside when the agent stops checking in | Needs a second monitor |
| License | Apache-2.0 | MIT |
Compared against Uptime Kuma 2.5.5, October 2026.
Which to pick
Uptime Kuma is the better fit if
- You need monitor types the agent doesn't have: Docker containers, gRPC, MongoDB, MQTT, game servers, real-browser checks.
- You want several status pages, say one per product or customer.
- You rely on a notification service that Uptimy doesn't cover.
Uptimy Agent is the better fit if
- You run Kubernetes and want monitors to come from labels in your manifests.
- You want CronJobs and cron jobs tracked with schedules, exit codes and durations.
- You want monitors in Git (YAML) and a REST API, or several users with roles.
- You run one monitor per cluster, project or network and want it small: 9 MB, 8 MiB idle.
Switching takes a few minutes
# 1. Copy Kuma's database (stop it first, so the copy is complete)
docker stop uptime-kuma && docker cp uptime-kuma:/app/data/kuma.db .
# 2. Start the agent
docker run -d --name uptimy-agent -p 8080:8080 -v uptimy-agent:/data ghcr.io/uptimy/agent
# 3. Sign in (password in: docker logs uptimy-agent), then
# Settings → Import from Uptime Kuma → upload kuma.db → review → importFrequently Asked Questions
Yes. Under Settings → Import from Uptime Kuma, upload kuma.db (stop Kuma first so the copy is complete). You see what each monitor and notification becomes and choose what to import. Check history isn't imported, and Kuma installs on MariaDB aren't supported yet.
Types the agent doesn't have, such as Docker, gRPC and inverted checks. They're listed with the reason, so nothing disappears silently. Push monitors become heartbeats with new ping URLs, so update the jobs that call them.
Uptimy Agent 0.1.7 and Uptime Kuma 2.5.5 (default and slim images, both on SQLite) ran side by side in Docker with the same HTTP monitors every 60 seconds against one local nginx, with the load checked in its access log. Memory and CPU are docker stats samples every 5 seconds over 5 minutes. The scripts, raw samples and limits are in the repository.
That's not the claim. Per monitor the two cost about the same; going from 50 to 350 monitors added 13 MiB to the agent and 22–23 MiB to Kuma. The difference is the baseline: a Go binary against a Node.js runtime. It matters most where you pay for memory, or run one per cluster or project.
If Kuma does what you need on one server, there's no pressing reason. Switch if you want monitors in Git or from Kubernetes labels, CronJob tracking without pings, several users, or something light enough to run in every cluster or project.
Looking at hosted monitoring instead? Uptimy vs Uptime Kuma covers incidents, workflows and checks from many regions.
23:00 · goodnight
Try it next to your services.
Uptimy Agent is open source and runs in a minute, with your Kuma monitors imported.