Skip to main content

comparing self-hosted

OpenStatus vs Gatus: hosted probes or your own YAML?

Both of these put monitoring in version control, so the config-as-code argument does not separate them. What separates them is everything around the check: who runs the probes, who can see the page, and how much you are willing to operate.

the facts, side by side

  OpenStatusGatusUptimepage
license AGPL-3.0Apache-2.0AGPL-3.0
configuration YAML · CLI · Terraform · RESTYAML only, read-only UIUI + Terraform + REST + MCP
run it yourself ~11-app TypeScript stacktiny static binary, no DB neededone binary + compose
check types HTTP · TCP · DNS in the OSS checker11 protocols + domain expiryHTTP · TCP · DNS · TLS · ping · domain
assertions status · body · headersstatus · body JSONPath · latency · cert + domain expirystatus · body · cert + domain expiry
fastest interval 30s on paid tiersno documented floor, default 60s60s free · 30s Pro · 10s self-hosted
multi-region probes 28 hosted regions + private locationsexperimental federation onlymulti-region, run your own
status page yes, custom domainsdashboard doubles as pagebranded, own subdomain
page subscribers email · webhook · Slack · RSSnoneemail · webhook
teams & roles orgs, members on paid tiersone basic-auth or OIDC gateorgs + roles
hosted free tier 1 monitor, 10-min intervalpaid only, at gatus.iofree, no card
community (GitHub stars) ~8.9k~11.5kyoung

OpenStatus ships continuously with no tagged releases, so there is no version to pin.

OpenStatus's open-source checker implements HTTP, TCP and DNS; ICMP, UDP and TLS-certificate monitor types appear in its API schema.

Gatus's multi-step suites are labelled alpha and its remote-instance federation is labelled experimental by the project. Its maintainer has said in release notes that Gatus is a side project and that reviews and merges have slowed.

Verified July 2026 against Gatus 5.36.0 and the OpenStatus source. Both projects move quickly, so check their current source before you decide.

Both are monitoring as code. Only one hands you a fleet.

Gatus gives you a YAML file and a binary, and the vantage point is wherever you put that binary. OpenStatus gives you a YAML file, a CLI, a GitHub Action and an official Terraform provider, and runs the probes for you across 28 regions on three cloud providers. If seeing your service from Singapore matters, one of these solves it with a config line and the other solves it by making you deploy in Singapore.

Where Gatus is ahead

Precision and weight. Eleven endpoint protocols including gRPC, SSH, WebSocket, UDP and STARTTLS, plus domain-expiry monitoring, and a condition language that asserts on status, response time, JSON body paths, certificate expiry and domain expiry rather than just on a status code. It is a tiny static Go binary that runs on an in-memory store with no database at all if you want. It is Apache-2.0, free forever, and you never make an account.

Where OpenStatus is ahead

Everything customer-facing and everything team-shaped. Status pages on custom domains that take email, webhook and Slack subscribers on top of RSS, Atom and JSON feeds, organizations with unlimited members on paid tiers, auto-resolving incidents, and in 2026 it added private locations so you can run probes inside your own network alongside its hosted fleet. Its Terraform provider is vendor-maintained and shipping, which puts it in the same bracket as Uptimepage, Better Stack and Checkly rather than the abandoned community forks some incumbents leave you with.

The honest caveats on both

Gatus is explicitly a side project: its maintainer has said so in release notes, and reviews and merges have slowed. Its multi-step suites are labelled alpha and its remote-instance federation is labelled experimental, so treat both as such. It has no subscribers, no incident timeline and one basic-auth or OIDC gate for the whole app. OpenStatus's cost is operational: self-hosting it is a multi-service TypeScript stack of about eleven apps with external database dependencies, its hosted free tier is one monitor at ten-minute intervals, and its open-source checker implements HTTP, TCP and DNS even though ICMP, UDP and TLS-certificate types appear in its API schema. It also ships continuously with no tagged releases, so there is no version to pin.

Where Uptimepage fits

Uptimepage takes OpenStatus's shape (teams, subscribers, Terraform, multi-region) and Gatus's operational weight (one binary you can actually run). Checks over HTTP, TCP, DNS, TLS, ping and domain expiry, configured in the UI or declared with the Terraform provider, REST API and MCP server. Probes are multi-region and you can run your own. Incidents open themselves and land on a branded status page with confirmed email and webhook subscribers. Hosted free with no card, or self-host under AGPL with docker compose and no external services to rent.

links

FAQ

Which one should I self-host?
Gatus, comfortably. It is a tiny static Go binary that can run with no database at all. Self-hosting OpenStatus means a multi-service TypeScript stack of about eleven apps with external database dependencies, which is why its hosted tier exists.
Can Gatus check from multiple regions?
Not really. It has an experimental remote-instance feature that aggregates several Gatus installs into one dashboard, but the probes still run wherever you deployed them. OpenStatus runs a hosted fleet across 28 regions, and Uptimepage is multi-region with probe agents you can run yourself.
Can my customers subscribe to either status page?
Only OpenStatus. Its pages take email, webhook and Slack subscribers on top of RSS, Atom and JSON feeds. Gatus's dashboard doubles as its status page and has no subscribers and no incident timeline, which is fine for an internal wall and not for customers.
Do both have a Terraform provider?
OpenStatus does, official and actively maintained. Gatus does not need one in the same sense: its config is a YAML file you already keep in Git. Uptimepage has an official provider too, alongside a REST API and an MCP server.

Start in under 5 minutes.

Start free

features · pricing · notes