# Checks

> HTTP uptime probes from Lumin's servers — intervals, statuses, degraded thresholds, and what a check does not do yet.

Canonical: https://docs.getlumin.dev/concepts/checks/

A check is an HTTP GET that Lumin sends from its own servers to a URL you give it. The agent is not involved: checks work with nothing installed, so they are usually the first signal you set up. The dashboard home opens on them.

## What a probe does

Every probe is a GET with `User-Agent: Lumin-Checks/1.0`. It follows up to 5 redirects and reads at most 4 KB of the response body. The result is one of four statuses:

| Status | Meaning |
|---|---|
| **up** | The URL answered with a status below 400, inside the timeout. |
| **degraded** | The URL answered, but slower than your "Degraded above" threshold. |
| **down** | A status of 400 or higher, a timeout, or a connection failure. |
| **paused** | The check is disabled. Lumin keeps the config and stops probing. |

## Configuration

| Field | Values |
|---|---|
| Name | Defaults to the URL host. |
| URL | `http` or `https`. |
| Interval | 30 s, 1 min, 5 min, or 15 min. Default 1 min. |
| Timeout | 1–30 s. Default 10 s. |
| Degraded above | Optional, in milliseconds, up to 300 s. |

A project holds up to 50 checks. A check belongs to the environment that is selected when you create it, so the environment picker filters the check list like every other board.

## What the dashboard shows

The home page summarises the selected time window: KPI tiles for **Uptime**, **Avg response** (with p95 and p99), **Checks**, and **Incidents**, plus one row per check with its uptime percentage and a 60-bucket status timeline. Each bucket shows the worst status inside it, so a single failed probe stays visible in a wide window.

## Public URLs only

The prober refuses targets that resolve to loopback, private, link-local, or carrier-grade-NAT addresses, and it re-checks every redirect hop. Point checks at your public edge — the domain your users hit. Container-internal health is the agent's job, not a check's.

## What a check does not do yet

- No TCP checks, heartbeat checks, keyword assertions, or SSL-expiry checks. Only HTTP GET exists today.
- No public status page.
- **No alert fires from a check.** Alert rules watch metrics and log patterns. A failed check shows on the dashboard, but Lumin does not post to Slack about it yet.

## Retention

Probe results follow the project's retention window like any other signal — see [Retention](https://docs.getlumin.dev/concepts/retention/). Deleting a check stops the probes; its history stays until retention removes it.
