arcane@prod : ~/lab
online· p99 12ms· 142 rps

// lab

The Lab

arcane@prod:~$ ./lab --run

Real operations you can trigger — not screenshots. The chaos button actually deletes a pod in a disposable demo namespace and you watch Kubernetes heal it; the load test really hammers an isolated demo service (never this site) with hard caps, streaming a live latency histogram. Everything runs my own code against an isolated, NetworkPolicy-fenced namespace — the interactive visitor shell is deliberately deferred (too dangerous on a single-node host). The same live metrics are on /system.

Chaos

Delete a pod in the disposable demo namespace and watch Kubernetes recreate it.

/ ready
connecting…

Load test

Fire a bounded burst at an isolated demo target (never this site) and watch the latency histogram build live. Hard caps: ≤50 concurrent · ≤10s · server-clamped.

Event stream

Live lab lifecycle events over SSE — every chaos kill and load test above appears here as it happens.

no lab events yet — trigger a chaos kill or a load test above

Rate limiter

The real per-IP token bucket that guards every /api/* route. Hammer it and watch it refuse past the burst — these are live responses, not a simulation.

rps
burst
active IPs
429s total

fires 40 requests at once at the limiter (burst ~20); your other panels share this per-IP limit, so they may briefly rate-limit too. “429s total” is a global cumulative counter.

API playground

Try the platform’s real read-only endpoints — a fixed allow-list of GET paths (no free-text URLs), returning the live response, status, timing and headers. None of these paginate.

pick an endpoint to try it