02Badge install
A pill that goes
anywhere an image goes.
The Badge is a server-rendered SVG. Drop it in a footer, a GitHub README, a marketing page with a strict CSP — anywhere an <img> tag is allowed.
The snippet
The Dashboard hands you both forms when you forge a Badge. The HTML one is the most common; the Markdown one is what you paste into a GitHub README.
<a href="https://glimly.dev" target="_blank" rel="noopener">
<img src="https://glimly.dev/b/<token>.svg" alt="acme status" />
</a>[](https://glimly.dev)Per-install overrides
The Dashboard stores defaults on the token, but you can override them per-embed with query parameters. Useful when you embed the same Badge on a dark marketing page and a light README.
<img src="https://glimly.dev/b/<token>.svg?size=compact&theme=dark" alt="acme status" />Sizes
regular— 28 px tall, 13 px label. Default. Reads well in a footer or hero.compact— 22 px tall, 11 px label. For dense places: nav bars, GitHub READMEs, email signatures.
Themes
auto(default) — embeds a CSS@media (prefers-color-scheme: dark)block; respects the host page's preference.light,dark— forced palette.
State vocabulary
The label text is computed server-side from your current rollup. Account-wide Badges roll all Services into one status; single-Service Badges show that Service's state.
Account-wide
- All up: "All systems operational".
- Some degraded: "Operational · 1 service degraded".
- Some down: "Disruption in progress".
- All down: "Outage in progress".
- No data yet: "Status unavailable".
Single Service
- Operational, degraded, down, or "status unavailable" — same vocabulary.
Attribution
- Free: [ ● operational · powered by Glimly ] — the attribution is a clickable link back to glimly.dev.
- Pro and Business: [ ● operational ] — no attribution.
Caching and freshness
CloudFront caches every (token, size, theme) combination at the edge with a 15-second TTL plus a 60-second stale-while-revalidate window. State changes propagate within ~15 seconds of the underlying Incident transition; no manual invalidation needed. If our origin returns an error, we serve stale-if-error for up to 24 hours so the Badge never breaks visually.
Failure modes
- Unknown token → grey "Status unavailable" SVG, HTTP 200. We never 404 — a typo'd snippet should not show a broken-image icon on a customer's marketing page.
- Account suspended for non-payment → same grey "Status unavailable". We don't public-shame.
- Origin (Lambda) failure → CloudFront serves the last good cached SVG until the origin recovers.