12.3k stars · Apache-2.0 · v5.37.0 (2026-09-23) · Track this in Scout
A status page with checks, history and alerts, all described in one YAML file.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Gatus is a single Go program that runs checks on a schedule and serves a web page showing the results. A check can be an HTTP request, a DNS lookup, a TCP or ICMP probe, a database query, or a certificate expiry test, and each one can carry its own conditions.
What it is good for. Anyone who runs more than two services and currently finds out they are broken from a customer. The useful part is that the whole thing is one settings file: the checks, the conditions, the alert channels and the public page are all described in text you can keep beside your code and copy to a new machine in a minute. If you have ever wanted the uptime page without signing up for a monitoring bill, this is it.
- One file describes everything, so the setup is reproducible and reviewable.
- The conditions are expressive. You can require a status code, a response time under a limit, a value inside the JSON body, or a certificate with more than a set number of days left.
- Alerting reaches a long list of destinations, and v5.37.0 added a configurable topic for Zulip, a client cookie-storage setting, and a TXT query type for DNS checks.
- ⚠ It binds to every network interface and has no password by default. The
web.addresssetting defaults to0.0.0.0andweb.portto8080, and thesecurityblock defaults to empty, which means no login. Basic authentication and OIDC sign-in exist, but you have to switch them on. Do not put this on a public address before you do. - The licence file is plain Apache-2.0, but its copyright line was never filled in: it still reads
Copyright [yyyy] [name of copyright owner], so the file names nobody. - No memory, disk or processor figure is published anywhere. The README says only that the footprint is "negligibly small", and 262 open issues against 139 open pull requests is a wide gap for a project this size.
louislam/uptime-kumaThe same uptime monitoring with a point-and-click web interface instead of a settings file, which is easier to start and harder to copy to a second machine.
Track this in Scout- bluewave-labs/Checkmate
Also monitors uptime and response times, adds server hardware metrics, and has a product-style interface rather than configuration as code.
Track this in Scout - upptime/upptime
Produces the same public status page but runs as scheduled GitHub Actions committing results into a repository, so there is no server to host.
Track this in Scout
# make a folder for the settings file
mkdir -p ~/gatus/config
# write the smallest useful config
cat > ~/gatus/config/config.yaml <<'YAML'
web:
address: "127.0.0.1" # localhost only, until you put a login in front
port: 8080
endpoints:
- name: my-website
url: "https://example.com"
interval: 60s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 500"
YAML
# run it
docker run -d --name gatus \
-p 127.0.0.1:8080:8080 \
-v ~/gatus/config:/config \
ghcr.io/twin/gatus:stable