TypeSafe Mario
★ 458▲ 3fhshaik/typesafe-mario
Jev picks NES controller inputs for Super Mario Bros. from emulator state, with no screenshots.
Two models play Tetris on a shared seeded piece sequence under the same clock; a piece that lands before the answer arrives locks where it fell. No licence file.
View on GitHub →Hands-on review
Two models play Tetris on the same seeded piece sequence under the same clock. The proxy that makes it work is 131 lines and stores nothing.
Good for
Watch out for
Tested Sep 22, 2026 at a0b411c6378f · node:24 in Docker for its test suite, and the whole proxy read line by line
How we reviewed this: we ran its tests and read the proxy in full — it is 131 lines — to check what it does with the keys that pass through it. We made no Jev calls and played no live games.
Two models play Tetris against each other in real time. Jev faces Claude Haiku 4.5, Gemini 3.8 Flash, or Laya, an open-weight typed-decision model you run yourself. Lines you clear land on your opponent’s board as garbage. First to top out loses.
This is the part worth reviewing, because a head-to-head between a decision model and a generative one is easy to rig by accident.
That last rule is the honest one. It means latency is part of the game rather than something the harness waits out — which is the whole argument for a decision model, and also the way a slow model is allowed to lose on merit rather than by disqualification.
We are not reporting who wins. Those are the author’s measurements of other people’s models, and we do not republish one project’s comparisons. What we can say is that the setup does not obviously favour anybody, and the rule about a piece locking while you think is the sort of detail a rigged benchmark leaves out.
Browsers cannot call api.typesafe.ai directly — its CORS policy refuses — so the repository ships server.mjs to forward requests. Anything sitting between you and your API key is worth reading, and at 131 lines you can read all of it.
The README claims “the proxy stores nothing”. It holds: there is no writeFile, no appendFile, no stream to disk, and no request logging anywhere in the file. The only two console.log calls are the startup banner and a note that a fallback key was found in the environment.
It forwards your Authorization header to TypeSafe, and your x-api-key / x-goog-api-key to Anthropic and Gemini. That is the opposite of what we wanted from Jeview, and correct here: this is your browser, your key, and the proxy exists only because of a CORS policy.
14 tests pass.
There is no licence file. The project is playable at jev-tetris.vercel.app and readable on GitHub, but without a licence nobody can fork it, vendor the proxy, or reuse the fairness harness — which is the part most worth reusing. Thirteen stars.
The most enjoyable way in this directory to see what a decision model is actually for: a choice from a fixed set, under a deadline, over and over, where being slow costs you the piece.
Play it. Read server.mjs before you paste a key into anything. And if you were hoping to borrow the harness, ask the author for a licence first.
For a decision model under a different real-time constraint, see Jev Plays Pokemon Red; for running an open Jev-compatible model yourself, Laya for Node.
See how it compares with other tools in Best Jev tools, tested hands-on.
Review updated Sep 22, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.
fhshaik/typesafe-mario
Jev picks NES controller inputs for Super Mario Bros. from emulator state, with no screenshots.
dabit3/jev-experiments
Latency-focused demos from Nader Dabit, each app in its own directory with its own README. No licence file at the time of writing.
RomanSlack/jev-drone
Camera-only quadrotor in MuJoCo with Jev making judgment calls at about 2.5 Hz.
New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.
Powered by Buttondown. See our privacy policy.