Skip to content
Nominal

Self-hosted endpoint monitoring

Stay nominal.

In ops, nominal means everything is within expected parameters. Nominal tells you when it isn’t.

Why Nominal

Checks you can read. Data you can query.

Readable conditions

[STATUS] == 200. [CERTIFICATE_EXPIRATION] > 48h. Not a pile of YAML.

Yours to query

Monitors live in the database you choose. GraphQL and Terraform if the admin isn’t the source of truth.

Pages and alerts

Public status pages, badges, incidents. Slack, email, PagerDuty, webhooks.

Checks

Ask if it is still up.

Outbound probes, inbound heartbeats, and the databases they depend on.

Conditions

Write checks as expressions.

Nominal evaluates them on every run. Condition reference.

[STATUS] == 200[RESPONSE_TIME] < 400[CERTIFICATE_EXPIRATION] > 48h[BODY] == pat(*"ok"*)

Get started

Run it yourself.

One Compose file. Postgres. Open the admin.

Get startedRead the docs

docker pull ghcr.io/returnearly/nominal:latest