An open source strategy game about the AI race.
Nonprofit · No accounts, no tracking, ever · Works offline · Every number: a source you can check, or a design choice that says so
Play · FAQ · Sources · Roadmap · Contribute · Governance
Play now: criticalwindow.org. A run takes 20 to 40 minutes. It works on phones, installs from the browser as an app, and the core game keeps working offline after the first load (music and narration cache once they have played).
Or clone and run it locally:
pnpm install && pnpm dev
There is also a print-and-play paper kit: download the PDF from the latest release, or generate it yourself with pnpm exec playwright install chromium once and then pnpm print-kit. Board, cards, rules, and one sealed envelope you are not allowed to open until the end.
Three ways to play. Solo as the United States. Solo as China, where the chips are scarce but the power is not. Hotseat: two people, one device, one shared world, two private screens.
Sixteen quarterly turns. Each one, you split your effort between capability, safety, and diffusion, then the world answers: memos with no clean options, incidents that leak the truth your eval reports smoothed over, a rival whose posture you can read but whose progress you can only watch. Five endings, and the good ones are earned. Losing tells you exactly why: the debrief opens the envelope and draws what your evals said each quarter against what was actually true.
Every number translates to something real. Compute 700 is about two-thirds of 2026 frontier training capacity. Capability 350 is systems that handle hour-scale expert tasks. The anchors come from published research, and the game shows you which.
Most people meet the AI race through headlines, and headlines do not teach how traps work. This game tries to give the felt version: deployment decisions you cannot verify, competitive pressure you did not choose, a society with its own clock. Whether racing or slowing down counts as winning is a question the game refuses to answer for you. Where the project goes next is in the roadmap; how decisions get made, including who arbitrates realism disputes, is in GOVERNANCE.md.
It is a nonprofit education project. No ads, no accounts, no tracking, ever (SECURITY.md says how to report anything that breaks that promise). Offline after first load. It runs on a school Chromebook.
Every number in data/ cites a source in data/sources.json, and pnpm validate fails when one does not. The rule runs in both directions: a source that claims to back numbers without actually being cited fails the build too, so the bibliography cannot quietly pad itself.
The registry is honest about what each source does. Some set numbers directly, and SOURCES.md lists every place each one is cited. Some shaped a mechanic without backing a single value, and each names the mechanic so the claim is checkable. The rest are the shelf we read from, listed as further reading and nothing more. docs/EVIDENCE.md goes the other way: every cited value in the game, with its numbers, its kind, its sources, and the note that says how evidence became value. The same map is browsable inside the game, two clicks from the title screen.
The most contested dials, how hard alignment is and how fast capability compounds, never become single numbers. They live as ranges inside the worldview preset you pick at setup, and a seeded hidden roll fixes the truth for your run inside that range. Design constants with no real-world referent say so and cite the design constitution. If you catch a label claiming more than its source supports, that is a bug in our map: file it and it gets fixed like one.
One honest limit, stated plainly: the machine proves every citation exists and every tier is truthful, and it cannot prove a source actually supports a value. That last step is human work, which is exactly why the challenge loop exists. Do not take our word for any of this: run pnpm validate yourself. If you change a value, your commit names the source. If you think a number is wrong, open a "challenge a number" issue with a better source. That argument is the project working as designed. How the balance was tuned, ugly numbers included, is in docs/BALANCE.md.
pnpm install
pnpm dev # run the app
pnpm test # engine and data tests
pnpm validate # schema + source + string integrity for all game data
pnpm simulate # headless balance grid over seeded bot runs
pnpm print-kit # paper kit PDF (needs: pnpm exec playwright install chromium)
pnpm test:browser # determinism + accessibility in real browser engines
The full local gate, same as CI: pnpm validate && pnpm lint && pnpm typecheck && pnpm test && pnpm build && pnpm test:browser.
The engine is a pure deterministic fold: same seed, same run, on every machine. Saves are action logs, replays are exact, and a shared seed means a shared hidden world. Lint enforces the purity. See CONTRIBUTING.md before touching src/engine/.
Off by default, everything works silent. Music by Scott Buckley (CC BY 4.0), see CREDITS.md. Voice narration is generated ahead of time by maintainers from the game's own displayed text and ships as static files. During play the only network requests are for the game's own static files, narration included; each clip caches for offline use once it has played.
Critical Window is a project of ChipMates gemeinnuetzige GmbH, a German nonprofit. One maintainer, working with heavy AI assistance; how, why, and who answers for it is spelled out in GOVERNANCE.md, and the whole trust architecture exists so you never have to take anyone's word for anything, human or machine. No revenue, no ads, no investors; if grants ever fund this, the funders get named there too. Contact: criticalwindow@chipmates.ai. Legal: imprint and privacy.
Code: AGPL-3.0. Game content (data, text, art): CC BY-SA 4.0. The name stays ours so forks stay honest (TRADEMARKS.md). The privacy claims are verifiable in this repository: there is no tracking code to find.

