Real W.O.P.R. is a technical reconstruction of the W.O.P.R., built to test one falsifiable claim:
A system like W.O.P.R. — its networked terminals, its game engine, its persona, its NORAD integration — could have been built with the technology available in the early 1980s.
The project tests that claim module by module, and documents where it holds and where it doesn't.
Every design choice gets the same two checks:
- Period authenticity — could this have been done on early-1980s hardware, software, and phone lines.
- Modern accessibility — can someone in a browser today try it without owning an IMSAI 8080 and an acoustic coupler.
When the two pull in different directions, we keep both: modern parts underneath, with the period constraints modeled explicitly (see comms-protocol.md) so the authentic behavior stays observable, measurable, and toggleable.
How the project is organized
The project is set up so that people who worked on systems of this era can correct it:
- The feasibility analysis makes specific, falsifiable claims per module ("a 1981 IMSAI-class micro could drive this terminal at 300 baud") that can be confirmed, refined, or refuted.
- The game catalog is contributor-extensible: only tic-tac-toe and Global Thermonuclear War appear in the film, so the rest of W.O.P.R.'s repertoire are non-blocking placeholders awaiting community interpretations.
Non-goals
- Pixel-faithful recreation of a single scene at the cost of system coherence.
- Period-correct deployment (we deploy to modern infra); period correctness applies to behavior and architecture, documented in
feasibility.md.
RUN IT YOURSELF
The machine is a public repository. Clone it and it comes up on your own computer: the period programs, the networks between them, and a terminal to dial in with. Nothing is hosted, and there is no account to make.
git clone https://github.com/DanielLandi/real-wopr-programs
cd real-wopr-programs
make build # every program, in its own language
make up # the three networks, one process per machine
Then, from a second terminal, dial one of them:
node emulator/cli/src/main.ts dial "(206) 555-0142" --pack .
That number belongs to the Seattle school district, and it answers in
BASIC. Building the programs needs the compilers of their languages —
gfortran, sbcl, gnucobol, cc65,
bwbasic — plus Node and Python for the harness that hosts them. The programs
are the point; the harness is openly modern and says so in its own README.
Licensed GPL-3.0-or-later, so a fork stays as readable as the original. Read the source ↗
OR JUST DIAL IN
An exchange is hosted online, and the terminal below reaches it from a browser. It is the smaller version of this — enough to watch the machine answer without installing anything first.
▶ ENTER THE WAR ROOMDIRECT DIALHOW IT WORKS
THE PHONE BOOK
Every number is a machine someone runs, holding a slot in a world. The hub is the switchboard: it lists a number for as long as that machine's carrier is up, and the slot opens again when the line drops. An [OPEN] slot is an invitation — the host page generates the setup for claiming one. Below the worlds are the numbers in the persistent registry that nothing is answering on right now: still in the book, still yours, just not picking up.
| SLOT | EXCHANGE | JOSHUA | OPERATOR |
|---|---|---|---|
| DIALING TRUNK… | |||