Public status pages
A status page is a public, read-only view of selected monitors in a project. It shows each monitor's current state and uptime, grouped under optional display headings.
Create a page
Dashboard: Monitor → project → Status pages → add. Choose a name, a URL
slug and the monitors to include. Set a display group per monitor to
section the page (for example "Web", "API", "Jobs"). Only enabled monitors are
shown. The kamu CLI can manage pages too: kamu status pages list|create|show|update|delete (see kamu status pages --help).
Open incidents and maintenance windows of the project are shown on every page of that project.
A project can alternatively expose its own slug as a status page by enabling public status on the project, which lists every enabled monitor.
URLs
Pages are served by kamustatus directly, not through the dashboard.
| What | URL |
|---|---|
| Status page on the platform host | https://<slug>.kamustatus.com/ |
| Status page on your own domain | https://status.example.com/ (see below) |
Status page data (HTML for browsers, JSON for any other Accept) | https://api.kamustatus.com/status/<slug> |
| Uptime badge | https://api.kamustatus.com/status/<slug>/badge |
Slugs are unique per project, not globally, so pick a distinctive one for the platform host.
Custom domain
A page can be served on your own hostname. Set it in the page editor under Custom domain, then create a DNS record:
status.example.com CNAME pages.kamustatus.com
The record must point straight at kamustatus. If your DNS provider offers a
proxy (Cloudflare's orange cloud), turn it off for this record. Certificates
are issued automatically on the first HTTPS request, so the first load after
the DNS change can take a few seconds. If your zone has CAA records, they
must allow letsencrypt.org.
The dashboard's Custom domains table shows the domain as Pending DNS until the CNAME resolves, then Verified. Press "Check again" after changing DNS. Only one page can own a given domain.
Moving an existing status page from UptimeRobot: import the monitors first, create the page from them, then switch the CNAME over.
Badge
The badge endpoint returns a Shields.io endpoint
JSON document (schemaVersion, label, message, color), so render it
through Shields:

The message is the aggregate uptime across the page's monitors. It reads "no monitors" for an empty page and "not found" for an unknown slug.
From the kamu CLI
No credentials are needed to read a public page:
kamu status page <slug> # name, then one line per monitor: status, target, uptime
kamu status page <slug> --json