Browser-native incident simulator
CASCADE
Keep the city alive. Every fix has a blast radius.
A distributed-systems roguelite built from the ideas I have spent years shipping and operating: dependencies, retries, failover, observability, and the uncomfortable distance between a green service and a healthy system.
01 / THE SHIFT
You are on call.
The city is a dependency graph. Read the telemetry, find the first domino, and choose a runbook before a symptom becomes a system-wide outage. Restarting the red building is not the same thing as fixing the cause.
02 / CONTROL ROOM
Incident command
Runbook build
BASELINE / INCIDENT 01
Service topology
03 / AFTER ACTION
Postmortem
The city has stabilized. Here is the shape of the incident you just navigated.
Drag the timeline to rewind the topology. Packets, health, and blast radius are reconstructed from the same deterministic run.
BETWEEN INCIDENTS / CHOOSE ONE
Install a runbook.
The system held. Pick one permanent rule for the next incident. The same seed plus the same cards creates the same build to replay.
04 / UNDER THE CITY
The portfolio piece is the architecture.
CASCADE deliberately separates a 10 Hz simulation from the render loop. The worker owns graph state, propagation, and deterministic incidents. The browser owns the city, HUD, and operator decisions.
Inspect the source