Gatus
Health dashboard and uptime monitor configured in YAML files

Our verdict
Tied #3 of 4 in Self-hosted uptime monitors · If your monitors live in Git
Pros
- Monitors are text in a YAML file, easy to keep in Git and copy to a new server
- Small footprint: one container with no database server
- Any check interval, with the README's advice to give slow checks longer ones
Cons
- Every change is an edit to the config file; the docs describe no web editor
- The docs describe only announcements on its status page, with no incident timelines or subscriptions
- The docs list no database or Docker container checks
Who should skip:Anyone who wants to add and change monitors from a web dashboard.
Rankings and alternatives
- Tied #3 of 4 Self-hosted uptime monitors If your monitors live in Git
- Uptime Kuma #1 Best for most self-hosters
- Kener #2 If customers read your status page
- Checkmate Tied #3 If you also watch server resources
Self-hosted uptime monitors scores
Evaluated Nov 7, 2026 Evidence ↓- Components to run 4
4/5 means: One container with storage built in; installing without a container needs a separately installed language runtime or build tool
One Docker container whose storage defaults to memory, or can be SQLite; the documented way to install without Docker is building it with go install, which needs Go.
- What it can check 2
2/5 means: Six of the nine
HTTP checks with conditions on the body, ICMP, TCP, DNS, certificate expiration, and external endpoints with a heartbeat interval for pushed results make six of the nine. Database queries, Docker container state and server resource use are not documented.
Rests partly on what the sources don't mention, which is a weaker signal than what they say.
- Fastest check interval 5
5/5 means: 15 seconds or less
The README says Gatus can handle any interval, and the author uses 30 seconds for simple checks used for alerting.
- Alert channels 4
4/5 means: 25 to 49
The README has a configuration section for each of 42 alerting provider types, from AWS SES to Zulip, plus custom alerts.
- Public status pages 1
1/5 means: None or one of the five
Announcements can be shown at the top of the status page. Maintenance windows are documented only as a way to stop alerts, and several status pages, custom domains per page and subscriptions are not documented.
Rests partly on what the sources don't mention, which is a weaker signal than what they say.
- Ways to manage monitors 1
1/5 means: One of the five
Monitors are defined in a YAML configuration file. The API is read-only, and no web editor or import and export of monitors is documented.
Rests partly on what the sources don't mention, which is a weaker signal than what they say.
- Sign-in and users 3
3/5 means: Two of the four
The dashboard can be protected with Basic authentication or OpenID Connect, with an optional list of allowed subjects. Two-factor login and user roles are not documented.
- Getting data out 4
4/5 means: Three of the four
Prometheus metrics at /metrics, a read-only API for endpoint status and history, and SVG badges. API keys separate from the login are not documented.
- Database choices 3
3/5 means: A built-in database or one kind of database server
Storage can be memory, SQLite or PostgreSQL, so a built-in database or one kind of server.
Evidence and sources
Self-hosted uptime monitors scores
Components to run 4 quotes
-
“docker run -p 8080:8080 --name gatus ghcr.io/twin/gatus:stable”
github.com/TwiN/gatus · checked -
“Type of storage. Valid types: memory, sqlite, postgres.”
github.com/TwiN/gatus · checked -
“go install github.com/TwiN/gatus/v5@latest”
github.com/TwiN/gatus · checked -
“If storage.type is memory (default):”
github.com/TwiN/gatus · checked
What it can check 3 quotes
-
“Gatus is a developer-oriented health dashboard that gives you the ability to monitor your services using HTTP, ICMP, TCP, and even DNS queries as well as evaluate the result of said queries by using a list of conditions on values like the status code, the response time, the certificate expiration, the body and many others.”
github.com/TwiN/gatus · checked -
“Unlike regular endpoints, external endpoints are not monitored by Gatus, but they are instead pushed programmatically.”
github.com/TwiN/gatus · checked -
“Expected interval between updates. If no update is received within this interval, alerts will be triggered.”
github.com/TwiN/gatus · checked
Fastest check interval 2 quotes
-
“To sum it up, while Gatus can handle any interval you throw at it, you're better off having slow requests with higher interval.”
github.com/TwiN/gatus · checked -
“As a rule of thumb, I personally set the interval for more complex health checks to 5m (5 minutes) and simple health checks used for alerting (PagerDuty/Twilio) to 30s.”
github.com/TwiN/gatus · checked
Alert channels 5 quotes
-
“Gatus supports multiple alerting providers, such as Slack and PagerDuty, and supports different alerts for each individual endpoints with configurable descriptions and thresholds.”
github.com/TwiN/gatus · checked -
“Configuring Zulip alerts”
github.com/TwiN/gatus · checked -
“Configuring AWS SES alerts”
github.com/TwiN/gatus · checked -
“Configuring Gotify alerts”
github.com/TwiN/gatus · checked -
“Configuring custom alerts”
github.com/TwiN/gatus · checked
Public status pages 2 quotes
-
“System-wide announcements allow you to display important messages at the top of the status page.”
github.com/TwiN/gatus · checked -
“If you have maintenance windows, you may not want to be annoyed by alerts.”
github.com/TwiN/gatus · checked
Ways to manage monitors 2 quotes
-
“By default, the configuration file is expected to be at config/config.yaml.”
github.com/TwiN/gatus · checked -
“Gatus provides a simple read-only API that can be queried in order to programmatically determine endpoint status and history.”
github.com/TwiN/gatus · checked
Sign-in and users 3 quotes
-
“OpenID Connect configuration”
github.com/TwiN/gatus · checked -
“Username for Basic authentication.”
github.com/TwiN/gatus · checked -
“List of subjects to allow. If empty, all subjects are allowed.”
github.com/TwiN/gatus · checked
Getting data out 3 quotes
-
“Doing so will expose Prometheus-friendly metrics at the /metrics endpoint on the same port your application is configured to run on (web.port).”
github.com/TwiN/gatus · checked -
“Gatus provides a simple read-only API that can be queried in order to programmatically determine endpoint status and history.”
github.com/TwiN/gatus · checked -
“Gatus can automatically generate an SVG badge for one of your monitored endpoints.”
github.com/TwiN/gatus · checked
Database choices 2 quotes
-
“Type of storage. Valid types: memory, sqlite, postgres.”
github.com/TwiN/gatus · checked -
“Because the data is stored in memory, the data will not survive a restart.”
github.com/TwiN/gatus · checked
Facts
License 1 quote
-
“Apache License”
github.com/TwiN/gatus/blob/master/LICENSE · checked
Runs on 2 quotes
-
“docker run -p 8080:8080 --name gatus ghcr.io/twin/gatus:stable”
github.com/TwiN/gatus · checked -
“go install github.com/TwiN/gatus/v5@latest”
github.com/TwiN/gatus · checked
Notability
Users 1 quote
-
“"pull_count":61825637”
hub.docker.com/v2/repositories/twinproduction/gatus · checked
Other quotes
Not cited by a score or fact 11 quotes
-
“tag_name: v5.38.0, published_at: 2026-10-28T20:44:28Z”
api.github.com/repos/TwiN/gatus/releases/latest · checked -
“Number of failures in a row needed before triggering the alert.”
github.com/TwiN/gatus · checked -
“This allows you to put badges in your individual applications' README or even create your own status page if you desire.”
github.com/TwiN/gatus · checked -
“Looking for a managed solution? Check out Gatus.io.”
github.com/TwiN/gatus · checked -
“As with most Go applications, the resource footprint that this application requires is negligibly small.”
github.com/TwiN/gatus · checked -
“You can monitor the expiration of a domain with all endpoint types except for DNS by using the [DOMAIN_EXPIRATION] placeholder”
github.com/TwiN/gatus · checked -
“Thanks to the point above, you can leverage this application to create automated user acceptance tests.”
github.com/TwiN/gatus · checked -
“This feature allows you to retrieve endpoint statuses from a remote Gatus instance.”
github.com/TwiN/gatus · checked -
“This is an experimental feature.”
github.com/TwiN/gatus · checked -
“Note that this is the default value, and you can omit the storage configuration altogether to achieve the same result.”
github.com/TwiN/gatus · checked -
“Ability to use Gatus for user acceptance tests: Thanks to the point above, you can leverage this application to create automated user acceptance tests.”
github.com/TwiN/gatus · checked