Integrating a project with KamuStatus
KamuStatus is the platform's monitoring service. One integration gives you four signals in the kamuhub dashboard (app.kamuhub.com → Monitor):
- Uptime — HTTP/TCP/DNS/ping monitors probed from multiple regions.
- Heartbeats — for services with no public ingress (workers, 6PN-only apps).
- Backend errors — server-side exceptions, grouped and deduplicated.
- Client errors — browser errors, pageviews and sessions via a 1.7 KB SDK.
Everything hangs off a property: one site/service origin, which carries a
public write-only ingest key (ksts_..., DSN model — it can only submit
events, never read anything, so it is not a secret and belongs in
fly.toml [env], not in a secret store).
Concepts
project (org-scoped, keyed on kamuid_org_id)
├─ properties one per site/service origin; owns the ksts_ ingest key
│ ├─ error groups / events / stats (telemetry lands here)
│ └─ error alert rules (error_rate, new_group, group_regression)
├─ monitors uptime checks; can be linked to a property
└─ channels notification targets shared by all alert rules
The ingest endpoint is https://kamustatus-ingest.fly.dev (canonical name
ingest.kamustatus.com once DNS is live). The wire contract is versioned in
the kamustatus repo at packages/telemetry/PROTOCOL.md:
POST {ingest}/i/{key}, Content-Type: text/plain (a CORS simple request),
JSON envelope {"v":1,"sdk","release","sid","dropped","events":[...]}.
Browsers must send an Origin matching the property's origin; server-side
reporters send no Origin header, which ingest accepts by design.
Guides
- Error telemetry — create a property, add the browser SDK, vendor the backend reporter, configure the ingest env vars.
- Uptime monitoring — monitor types (HTTP with body assertions and certificate/domain expiry, TCP, DNS, ping) and health endpoints.
- Heartbeats — ping URLs for jobs and workers without public ingress, metrics in the ping body.
- Alerts — uptime alert rules and error alert rules.
- Notification channels — the 14 channel types, their fields and the webhook payload.
- Status pages — public status pages, custom domains and the uptime badge.
- Incidents and maintenance — incident timelines and maintenance windows on status pages.
- Import from UptimeRobot — move monitors, channels and history over.
The platform-wide kamu CLI
covers projects, properties, monitors, uptime alert rules and status pages
with a kamuhub access key. Channels, incidents, maintenance, imports, error
alert rules and metric rules are in the dashboard, or in the API: the same
routes the dashboard uses, at https://app.kamuhub.com/api/status/... with
Authorization: Bearer <access key> (capability status.read for reads,
status.manage for writes).
Integration checklist
- Property created;
ksts_key in hand. - Browser: script tag with
data-key(+data-release) on every page. - Backend: reporter file copied;
installGlobalErrorReporting()+ frameworkonErrorhook (+job:failedin workers). KAMUSTATUS_INGEST_URL+KAMUSTATUS_INGEST_KEY(+VERSION) infly.toml [env].- Monitor on
/health, or heartbeat for ingress-less services. - Alert rules once the project has a notification channel.
- Verify: trigger a test error, see it under Monitor → project → Errors within seconds.