Jev vs the LLMs: Tetris
Jev plays real-time Tetris against Claude Haiku or Gemini Flash.
# Jev vs the LLMs: real-time Tetris Two AI models play Tetris against each other in real time. [Jev](https://docs.typesafe.ai), TypeSafe's System One model, faces Claude Haiku 4.5, Gemini 3.8 Flash, or [Laya](https://github.com/NandhaKishorM/laya), an open-weight typed-decision model running on your own machine. Same piece sequence, same options, same clock. Every line you clear lands on your opponent's board as a garbage row. Whoever tops out first loses. **Play it live:** [jev-tetris.vercel.app](https://jev-tetris.vercel.app) (bring a TypeSafe key plus an Anthropic or Gemini key; the proxy stores nothing. Laya needs no key, just its local server, see [Laya, the open-weight opponent](#laya-the-open-weight-opponent)). ## The battle Each side runs its own real-time game loop on a seeded piece sequence shared by both players. - **Decisions under a falling piece.** When a piece spawns, the model is asked at once. Meanwhile gravity pulls the piece down one row every N ms. When the answer arrives, the piece slides to the chosen column and rotation and hard-drops. If it lands before the answer arrives, it locks where it is: a missed deadline. - **Gravity rises over time** on a schedule both sides share. Default: 150 ms per row, 15% faster every 20 seconds, floor 40 ms. The level shows under the clock. Gentle, brutal and constant schedules are selectable. - **Versus.** Every cleared line becomes a garbage row (full except one gap) queued for the opponent and inserted under their stack when their current piece locks. A red counter shows incoming rows. If the push shoves the stack out of the top, that player is out, and the first to top out loses. - **Same information for both.** Code enumerates every legal placement and describes each outcome in words (li