<kodo-status> is a drop-in Web Component
that renders a live status panel inline in your app’s layout — right where
you place it. It shows overall status, active incidents, and each component
with its 90-day uptime, updating in real time over
Server-Sent Events.
It renders inside a Shadow DOM,
so your site’s CSS can’t leak in and its styles can’t leak out — yet you can
still theme it with a handful of CSS custom properties.
Prefer a floating badge or banner pinned to a corner? Use the
Status Widget (
widget.js) instead. Need a fully
sandboxed embed? The classic iframe at …/status/{slug}/embed still works.
The element is the best fit when you want status in the flow of your own
UI, styled to match.Quick start
your-page-slug with the slug of a public status page. The script
defines the element once; every <kodo-status> on the page upgrades
automatically, even ones already in your HTML before the script loads. You only
need the <script> tag once, no matter how many elements you render.
The element self-configures its API origin from the script’s own URL, so you
don’t need to set base when loading embed.js from kodostatus.com.
What it renders
- Overall status — a live-pulsing dot + label (e.g. “All Systems Operational”).
- Active incidents — title + severity for anything unresolved.
- Components — each service with its status and, when a monitor is attached, its 90-day uptime % and a daily uptime sparkline. Components without a monitor simply show their status (no fabricated uptime).
Attributes
Theming
Set any of these CSS custom properties on the element (or an ancestor) — they inherit through the Shadow DOM boundary. Semantic status colors (green / amber / red) are intentionally fixed so health stays legible.Events
The element emits two events. Both bubble and arecomposed, so you can listen
on the element itself, on window, or on any ancestor — including from outside a
host Shadow DOM.
Properties
Read the latest data off the element at any time:Headless mode
Addheadless and the element renders nothing — it just fetches, subscribes
to live updates, and emits events. This is the escape hatch for building a
completely custom UI on Kōdo’s live status, with none of the built-in styling:
.data / .status
properties — just no DOM from Kōdo. It’s the lightest possible way to wire live
status into a design system that owns its own rendering.
Frameworks
Custom elements are just HTML, so they work in any framework.Live updates & resilience
The element paints instantly from the cached JSON endpoint, then subscribes to the SSE stream for real-time changes. IfEventSource isn’t available it falls
back to polling. Uptime figures are fetched once and preserved across live
status updates, so the panel never flickers its history.