Inspiration

On 6 August 2026 a 90-second power cut at the Manchester control centre stopped trains across the North West for the rest of the day. When a control centre goes quiet, every train stops and waits for staff to restart it by radio. We asked whether trains could keep moving safely on their own.

What it does

ATM is a browser simulation where trains coordinate without a control centre. It's a safety net underneath today's system. While the centre works, trains obey it. Once it has been silent for 5 seconds, each train follows its own rules:

  • Never go faster than you could stop within track you know is clear.
  • If you hear nothing, the answer is no.
  • Every part has a backup: fixed platforms, clock-based turns at the junction, or slowing to sight speed.

You can switch off any part live and watch both systems side by side in 3D.

Across 900 runs, a 2-minute outage cost each train 1.4 minutes today and almost nothing with ATM. A 30-minute outage cost 21.5 minutes against 0.3. There were no collisions.

How we built it

TypeScript, Vite, three.js and Vitest, with no server. Four people worked from one written design contract, each owning a part. A train only knows its own state, its sensor and the messages it receives. A batch runner tests every failure over 50 seeds and fails on any collision. That's 56 pull requests and 1,882 tests.

Challenges we ran into

The hardest bugs came when control passed between the centre and the trains. One was a returning centre giving away the junction while a train was already moving into it. Another was a queue jamming behind a platform it could never reach. We also changed our pitch halfway, from replacing the control centre to sitting underneath it.

Accomplishments that we're proud of

Zero collisions in 900 runs, including full blackouts. A 30-minute outage costs about 20 seconds per train instead of 20 minutes. And a fair baseline: we modelled today's system carefully.

What we learned

Safety comes from a few simple rules that hold whatever fails. Most bugs live where one system hands over to another.

What's next for ATM

Letting trains borrow another line's platform to get around a broken-down train, booking platforms early, warning nearby trains about hazards, and testing on real network layouts. Work with cross routing and reroutes.

Share this project:

Updates

Submission history