System design, except it runs. You build the architecture, we try to break it.
HavocLab is a distributed systems playground, mostly the part where they fall over. You wire up nodes on a canvas, and a discrete-event engine throws traffic at your build. Then it grades you on what survived. It's the system-design blackboard, except this one got hands.
Everyone can recite the buzzwords. Add a cache. Connect Kafka. Retry with backoff. Knowing the words is not the same as knowing when they help and when they just move the fire to a more expensive server. Here you stop reciting and start building, and the traffic tells you whether you were right. A cache in the wrong place melts the database. You find out what's wrong the real way: by watching it happen.
Pick a scenario. Each one is an incident waiting to happen. A cache that expires all at once, a scraper that found your endpoint, a write storm with your name on it. You build a defense, and the engine simulates it tick by tick. Queues fill, requests drop. You are scored on dropped traffic, latency, and whether you stayed inside the SLA. Same design, same grade, every time. The physics are entirely deterministic. If your system fails, it was a bad design, not a bad dice roll.
Not very, on purpose. A faithful reconstruction of a full real outage is unsolvable noise. The scenarios borrow its shape, not its forensic detail. Our incident replays keep the villain and drop the 400-page timeline. Solve them, think “that's not how it really went down”, and you are right. That was never the promise. The actual autopsies are public, longer, and worse for morale.
A teaching model, not a capacity planner. The numbers are tuned to make the lessons legible, not to predict your exact production P99. Learn the intuition here, then respect that your real infrastructure has more ways to hurt you than we'll ever bother to model. If you paste a lesson from this game straight into prod and it causes an outage, reread the warranty disclaimer while you rewrite your resume.
Enough reading. Pick a scenario and see what breaks. If it all falls over, do what you do in real life: blame DNS and walk away.