devops-simulator
incident response, on demand

Break prod on purpose.
Fix it under pressure.

Debug real broken services in throwaway sandboxes. Vague tickets, misleading signals, programmatic verification, and senior-perspective postmortems — the kind of practice you usually only get from an actual 2 a.m. incident.

New to DevOps? Start with the field guide.

visitor@sim: ~/devops-simulator
$ sim start 001
▸ provisioning sandbox........ ok
▸ seeding broken state........ ok

# ticket #001
  checkout returns 500 in prod.
  "it was fine an hour ago."

$ sim verify 001
✗ still broken (exit 1) — your move.
$ 

Scenarios

11 ready · 3 in progress
sim list — 14 scenarios
IDTypePillarEstScenarioState
001docker-composelifecycle10m[SUP-4471] New signups failing — multiple customer reportsready
002docker-composenetworking15m[SUP-4502] Users report being logged out constantlyready
101k8slifecycle15m[PLAT-220] new web deploy isn't going Ready in stagingready
102k8snetworking15m[OPS-1340] `web` service returns connection refused — pods are fineready
103k8sefficiency20m[PLAT-241] `cache-api` restarts every few seconds in stagingready
104k8slifecycle20m[PLAT-256] `web` deploy stuck — pod never reaches the app containerready
105k8slifecycle25m[PLAT-263] `search` service won't stay up after deploy — but the code is fineready
106k8slifecycle25m[PLAT-271] did the `web` v2.3 deploy actually ship? dashboard still says "in progress"ready
107k8slifecycle20m[PLAT-288] `reports` deployment stuck at 0/1 — pod exists but never runsready
108k8sstate30m[OPS-1402] new `ledger` service won't start — pod Pending, storage never attachesready
201k8sefficiency25m[COST-204] `report-generator` runs 24/7 but only does ~1 minute of work a dayready
003docker-composestate15m[OPS-1188] Orders entered yesterday are gone this morningstub
004docker-composeefficiency30m[DX-882] Every deploy takes 2+ minutes — devs are frustratedstub
109k8slifecycle35m[OPS-1419] `api` fails intermittently — maybe 1 request in 3 — can't pin it downstub

How it works

01

Request access

Tell us who you are. Accounts are vetted by hand — you get a sign-in link once approved.

02

Add your SSH key

Paste a public key on your profile. That key unlocks git clone of the simulator over SSH.

03

Run a scenario

sim start NNN spins up a self-contained broken sandbox. Read the ticket, form a theory, dig in.

04

Verify & learn

sim verify NNN checks state, not steps. Solve it, then read how a senior would have approached it.

quickstart
$ git clone git@sim.metisops.com:devops-simulator.git
$ cd devops-simulator
$ bin/sim list             # what's available
$ bin/sim start 001        # spin up a broken sandbox
$ bin/sim ticket 001       # read the ticket
$ bin/sim verify 001       # exit 0 = solved
Outcome over solution

Verify checks state, not steps. Multiple fix paths pass — just like real systems where a junior's fix and a senior's fix both ship.

Progressive disclosure

Tickets are vague the way real tickets are vague. Hints unlock on demand. Postmortems stay hidden until you solve it.

Senior-perspective postmortems

Every scenario ends with how an experienced engineer would have debugged it — and the followups they'd file to kill the bug class.