Skip to main content
Newkodo apply: your whole stack in one command →

The status page that can’t lie.

Most status pages go green when your servers respond. Kōdo watches the work actually finish, and when it doesn’t, it drafts the update for you to approve.

The API is up. Orders aren't shipping.
Uptime monitorGET /health
200 OK42 ms
Every check passes. A ping-based status page stays green here.
Process healthcheckout-fulfillment
3 stuckoldest 18m
charge_card1.2 s
reserve_inventory0.4 s
notify_warehousestuck 18m
send_receiptwaiting
Draft · written from the signalstatus.acme.dev
Order fulfillment delayedSome orders are taking longer than usual to reach our warehouse. Payments are safe and nothing has been lost. Next update within 30 minutes.
Paged on-call at 14:02 · draft ready 14:03

A green ping only means your server answered. It says nothing about whether the checkout saga finished, the webhook queue drained, or last night’s cron actually ran.

Process health

Wrap the work. Kōdo watches it finish.

Every run reports its completion rate, its p95, and exactly which step failed. When a run gets stuck, Kōdo pages on-call and drafts the customer update.

Sagas completingcompletion rate
Webhooks drainingqueue lag
Jobs clearingp95 duration
Crons runningmissed schedule
fulfillment.tskodo-sdk
import { Kodo } from "kodo-sdk";
const kodo = new Kodo({ apiKey: process.env.KODO_API_KEY! });

await kodo.workflow("checkout-fulfillment", async (wf) => {
  await wf.step("charge_card", () => stripe.charge(order));
  await wf.step("reserve_inventory", () => inventory.reserve(order));
  await wf.step("notify_warehouse", () => warehouse.notify(order));
});
run #48213 stuck at notify_warehouse for 18m · paging on-call
Status pages

Your status page stays up when you don’t.

Served from 300+ edge locations, separate from your infrastructure. Branded, fast, and shown to exactly the audience you choose.

status.acme.dev
Acme StatusSubscribe
All systems operational
Checkout API99.98%
Web app99.97%
Order fulfillmentProcess health99.94%
Past incidents
Slack notifications delayedOct 9 · 42m
SSO sign-in failing for some usersSep 27 · 1h 18m
Theme
Who’s looking
Custom domainstatus.yourdomain.com with automatic TLS
SubscribersEmail, SMS, Slack, webhooks and RSS
EmbedsStatus badge, widget and a drop-in status element
LanguagesAuto-detected: English, French, Spanish, Italian, Dutch

Live in under two minutes.

Connect through the dashboard, the API or the CLI, and we handle the rest.

Step 1Add your servicesRegister endpoints through the dashboard, API or CLI, and set check intervals and alert thresholds.
kodo monitors create -n API200 OK · us-east42ms1-minute checksenabled
Step 2We monitor everythingHTTP and heartbeat checks, plus SSL and domain-expiry monitoring, run automatically.
12:04:00200 · 42ms12:03:00200 · 48ms12:02:00200 · 44ms
Step 3Your team stays informedEmail, Slack, SMS and webhook alerts go out the moment something changes.
slack → #incidentsdeliveredsms → on-calldeliveredstatus.acme.devlive

Production-grade, by default.

The table stakes, done properly, and shown rather than claimed.

CLI & API-firstEverything configurable in code. Review reliability changes like any other PR.
$ kodo apply
monitors 6 endpointssynced
status_pages 2 publicsynced
workflows 4 trackedsynced
Webhooks that make senseSigned payloads, automatic retries with backoff, one-click replay.
POST hooks.acme.dev/kodo · sig v1200 · 84ms
POST hooks.acme.dev/kodo · retry 2/5503
POST ops.acme.dev/inreplayed
Custom domainsBring your own. Automatic TLS. CNAME or ALIAS.
status.acme.dev CNAME pages.kodostatus.comverified
TLS certificateissued · renews Jan 14
Full change historyEvery incident edit, versioned and attributable.
v3 Sam Rivera status → Monitoring14:41
v2 Sam Rivera body edited (+2 lines)14:20
v1 Kōdo drafted from signal14:03
OIDC SSO & SCIMGoogle, Microsoft, Okta and custom OIDC providers. SCIM provisioning included.
Live operational dataCurrent checks, incidents and process runs in one dashboard.
SOC 2 in progressAudit logs and configurable retention controls are available today.
Role-based accessFine-grained permissions down to each page.

Simple, honest pricing.

No per-seat pricing. No surprise overages.

Starter
$0
For your first status pageGet started
1 status page3 services3 uptime monitorsEmail notifications7-day history
ProMost popular
$19/mo
For teams shipping fastGet started
2 status pages20 uptime monitorsUnlimited servicesCustom domain90-day historySlack & webhooks
Team
$49/mo
For engineering teams on callGet started
Everything in ProUnlimited uptime monitors365-day historyOn-call schedulingEscalation policiesPriority support
Enterprise
$99/mo
For identity and compliance requirementsContact us
Everything in TeamOIDC SSOSCIM provisioningRole-based accessIdP group mappingsAudit-ready access logs
See detailed plan comparison →

Ship your status page in two minutes.

Free forever on Starter. No credit card required.