Docs

Introduction

What FlatLyne does, how a check moves between states, and where to go next.

FlatLyne tells you when a scheduled job stops running. Your job sends an HTTP request to a unique URL every time it finishes; if that request doesn't arrive on time, FlatLyne alerts you. This pattern is called a dead man's switch: silence is the signal.

Quickstart

You can monitor your first cron job in a few minutes:

  1. Create a check in the dashboard and copy its ping URL.
  2. Add a curl call to that URL at the end of your crontab line.
  3. Run the job once and watch the check turn Up.

The quickstart walks through each step.

Explore the docs

Concepts

Check. A check is one job you want to monitor, such as backup-db-nightly. It has a name, a schedule, a grace period, and a status. Each check has its own ping URL.

Ping URL. The address your job calls to report in. A ping URL looks like this:

Ping URL
https://api.flatlyne.com/CSps9LOZGccsl2o7ieL0_YrQyZJtkGK_0H1u30FJ-NI

The long random part is the check's token. Add /start to report that a run began, or /fail to report that it failed. You can send GET or POST. A successful ping returns 200 with the body PONG. See Ping URLs for every form.

If you'd rather use one URL pattern for every job, give each check a slug and ping https://api.flatlyne.com/<ping-key>/<slug> with a project ping key. See Ping keys.

Schedule and grace period. A check's schedule says when the next ping is due. It's either a simple period (for example, every 1 day) or a cron expression in a timezone you choose (for example, 0 2 * * * in UTC). The grace period is how long FlatLyne waits past the due time before it marks the check Down. See Schedules.

Project. A project holds your checks and doubles as your team. You invite people to a project instead of to a separate organization. Inviting people needs Pro: on Free, the owner is the only seat. Pro has 10 seats across every project you own, you included. Each project has exactly one owner; everyone else joins as a member, who can manage checks, or as read-only, who can only view them. When you first sign in, FlatLyne creates a project called My Project with a starter check called My First Check (period 1 day, grace period 1 hour).

Alert channels. When a check goes Down, or comes back Up after being down, FlatLyne notifies the project's alert channels. By default, it emails every member of the project. You can also connect Slack, PagerDuty, WhatsApp, a phone call (both Pro only), or a webhook. See Alerts.

Check states

Every check is in exactly one of these states. The dashboard shows each one as a colored badge.

StateWhat it meansHow a check enters itHow it leaves it
NewThe check exists but has never received a ping.You create the check.The first success ping moves it to Up. A fail ping moves it to Down. A new check never goes Grace or Down on its own, because it has no due time yet.
UpThe last ping was a success and the next one isn't due yet.A success ping. Each success ping sets the next due time: the current time plus the period, or the next time the cron expression matches.When the due time passes without a success ping, it moves to Grace. A fail ping moves it straight to Down.
GraceThe ping is late. The due time has passed, but the grace period hasn't run out.The due time passes with no success ping. FlatLyne doesn't send an alert for this state.A success ping moves it back to Up. When the grace period runs out, or a fail ping arrives, it moves to Down.
DownThe job missed its due time and its grace period, or reported a failure.The grace period runs out, or a fail ping arrives. FlatLyne sends an alert.Only a success ping moves it back to Up, and FlatLyne sends a recovery alert.
PausedFlatLyne isn't watching this check. It never goes Grace or Down on its own while paused.You select Pause check on the check's page, or your account moves to the Free plan when a subscription ends (a billing pause).A manual pause ends when the job pings again: a success ping moves it to Up. There's no resume button. A billing pause ignores pings (they get 403). It ends when you select Activate check on the check's page while you're within your plan's limits. The check returns to New and waits for its next ping.

You can pause a check from any state. FlatLyne checks for late pings every 10 seconds, so a state change can lag the due time by a few seconds. A /start ping records that a run began but never changes the state or the due time.

Keep ping URLs secret

Treat ping URLs like passwords

Anyone who has a check's ping URL can mark it Up or Down. A leaked URL can hide a real outage or trigger false alerts. Don't commit ping URLs to public repositories or paste them into public logs. Store them the way you store other secrets, for example in an environment variable.

What FlatLyne is good for

FlatLyne works best for jobs that run on a schedule and can make an HTTP request when they finish:

  • Database and file backups, such as a nightly pg_dump.
  • Cron jobs and systemd timers that clean up, sync, or send reports.
  • Queue workers and batch jobs that should finish within a known window.
  • Certificate and token renewals, such as a daily certbot renew.

FlatLyne isn't the right tool for:

  • Uptime checks. FlatLyne never calls your servers; it only waits for your jobs to call it. Use an uptime monitor to probe a website or API.
  • Metrics and dashboards. A check records whether a ping arrived, not CPU, latency, or custom numbers.
  • Log storage. FlatLyne keeps a short snippet of each recent ping's request body, not your job's full output.