Running in production · Edition No. 45 · 9 Oct 2026

TwiN/gatus

A status page with checks, history and alerts, all described in one YAML file.

← Running in productionRead the whole edition →

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.

Stars12.3k
LicenceApache-2.0
Latestv5.37.0 (2026-09-23)
Good
  • 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.
Watch for
  • ⚠ It binds to every network interface and has no password by default. The web.address setting defaults to 0.0.0.0 and web.port to 8080, and the security block 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.
Similar repositories
Install
# 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
Screenshots
TwiN/gatus: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.