Docs.

Everything Repose does today, documented plainly. One page, no search bar needed yet. If something here doesn't match what the product does, that's a bug — tell us.

Quickstart

Watching your first endpoint in about two minutes.

1
Create an account and confirm your email. Name your workspace — it's the brand on your status page.
2
Add a monitor. Paste an HTTPS URL (or TCP host, DNS name, SSL host). Default: checked every minute from 3 real regions on 3 continents, paged only when consensus agrees it's down.
3
Connect a channel. Settings → Channels: Slack or Discord webhook, or plain email. Hit "Send test" and watch it arrive.
4
Set who's on call. One rotation per workspace, daily handoffs. Pages go to the current on-call person's inbox in parallel with team channels.
Check types

Five kinds of checks.

HTTP / HTTPS

Request a URL, assert the status code you expect (default 200), and optionally a keyword the body must contain — catches 200s that are actually error pages. Latency recorded per region.

TCP

Open a socket to host:port. Postgres, Redis, SMTP — if it accepts connections, it's up.

DNS

Resolve a record (A, AAAA, CNAME, MX, TXT) and alert when resolution fails or returns nothing.

SSL certificate

Watch a cert's expiry and validity — get paged before it lapses, not by a customer after.

Heartbeat

Inverted: your cron job, backup, or queue worker pings a secret URL — we page when the pings stop (after 2× the expected interval).

Interval floors: 3 minutes on Free, 60s on Indie, 30s on Team and Business, 15s on Scale — configurable per monitor up to 1 hour.

The alert engine

Why your phone stays quiet.

Every check runs from 3 real probe machines on 3 continents (eu-west · Amsterdam, us-east · Virginia, ap-southeast · Singapore — more regions on the roadmap). The engine — not any single probe — decides what happens next:

  • Consensus before paging. A monitor's threshold — default 3 — must agree the target is down before anyone is woken. One flaky region is an anomaly: logged, visible in the dashboard, nobody woken.

    Worth being precise about what that means today, because the honest version is stronger than the marketing version. We run exactly three regions, one per continent. So the default threshold of 3 means unanimity: Amsterdam, Virginia and Singapore all have to agree. That is the strictest consensus rule anyone in this category runs — Oh Dear confirms with two probes on one continent, Better Stack with three locations and no continent requirement.

    It also means the continent-diversity rule can't currently fail, since our three regions are already on three continents. It starts doing real work at four regions and up, when two probes could sit on the same landmass and agree for the same local reason. And the real trade-off is this: unanimity means we will not page you for a failure that is only visible from somewhere we don't probe yet. We would rather miss that than wake you for a blip. If you need a fourth region, tell us — it's the most common upgrade request and it's how we'll decide where to put one.
  • Dependency-aware suppression. We mirror the status pages of 14 providers — Stripe, GitHub, Cloudflare, Vercel, Twilio, SendGrid, DigitalOcean, Netlify, Datadog, Supabase, OpenAI, Anthropic, MongoDB, Zoom — every one verified live. If your checkout is slow and Stripe is degraded, the incident is tagged upstream and held instead of paging you. If we can't reach a provider's status page, that never counts as an excuse to hold — unknown is treated as operational, because we'd rather over-page than hide a real outage.
  • Acknowledge ≠ resolve. Acknowledging an incident tells your team you're on it and stops re-pages. It does not close the incident — only probes seeing the service recover does that. Humans can't declare uptime.
  • Every decision is auditable. Each alert decision lands in an immutable trail — the incident page shows "why this fired" with the exact regions and reasons. Rows are never deleted.
Mercury

The AI that writes the first draft of your postmortem.

When an incident pages, Mercury investigates once, at creation — probe evidence, upstream status, timing — and writes a two-paragraph summary onto the incident. It's the difference between waking up to a red dashboard and waking up to "the postgres instance stopped accepting TCP connections at 19:05 UTC; every region agrees; Stripe and AWS are clean, so it's probably yours."

Mercury reads only what Repose already knows: probe results and public status pages. No code access, no silent data ingestion.

Status pages

Public by design.

Every workspace gets repose.sh/status/<your-slug> — no login, no subscriber fees, unlimited viewers on every plan including Free. All non-paused monitors appear with live state and 7-day uptime bars.

Ours is public too: repose.sh watching itself. When we have an incident, you'll see it there before we've finished writing the postmortem.

What doesn't exist yet

We'd rather tell you than have you discover it: there's no Terraform provider, no API-based importers (there is a paste-a-list import in the app), no multi-step or browser checks, no SMS yet. There IS a read-only API now: create a token in Settings, then curl -H "Authorization: Bearer rsk_…" https://repose.sh/api/v1/monitors (also /api/v1/incidents). Write endpoints follow. They're on the roadmap in roughly that order. Migrating from another tool? Email a CSV export to [email protected] and we'll load your monitors by hand.

Everything is free during the public beta. Paid plans switch on when billing ships — with notice.

The mea culpa policy. When Repose gets something wrong — a false page, a missed outage, a wrong suppression — we say so in plain English, publicly. No spin. Holding us to it is encouraged: [email protected].