Skip to content

Pong Jev

Atari Pong where Jev answers one question per frame - which way should the paddle move, up, down or stay - while all arithmetic stays in code and the model is sent five short phrases. Includes a local court to duel it on.

Stars
0
Language
TypeScript
Published by
Community
Author
safzanpirani
Last verified
Oct 2026

safzanpirani/pong-jev

User repository on GitHub

View on GitHub

TypeSafe's Jev plays Atari Pong. One typed Choice question per frame, no coordinates sent to the model.

Forks
0
Last pushed
Updated Sep 2026

Repo stats from the GitHub API, cached Oct 2026.

About this project

Jev is a System One model. It does not generate text. You give it a state and a set of typed questions, and it returns structured answers with calibrated probabilities. This project asks it one question per frame: Jev returns the choice, a probability for each option, and a confidence value. Code moves the paddle.

Quoted from the project's README. Read the full README.

Highlights

  • The model never sees a coordinate - core.ts buckets ball_y minus paddle_y, and a test asserts no digits.
  • --aim extrapolates the ball's arrival point including rail bounces; --concurrency overlaps calls.
  • Concurrency 3 gave 221 calls at 111ms decision age versus 74 calls at 196ms, per-call latency unmoved.
  • Environment details were calibrated, not assumed: frameskip=2, sticky actions off, playfield x 68 to 190.

Watch out

The headline result is explicitly unfinished: Jev on semantic encoding led 7-4 after 3328 decisions in the run that was going as the README was written, against a code heuristic in core.ts that wins 21-3 against the built-in Atari opponent, so the model is not beating the baseline that also serves as its fallback. --min-confidence, which falls back to the heuristic below a threshold, has not been swept yet and the author says so. Confidence is around 0.99 when the ball is clearly above or below the paddle but 0.25 to 0.55 in ambiguous frames, which is where the decisions matter. Cost is real per frame: about 520 input tokens per decision at $42 per million with output free, roughly $0.02 per 1000 decisions, and the measured 30 second windows came to $0.0016 and $0.0049. Running it needs Bun plus a Python venv with gymnasium, ale-py, fastapi, uvicorn and numpy, and a separate bun run bridge process for the ALE environment - except in duel mode, which runs on a local court in src/sim.ts because ALE only exposes one controllable paddle. The design constraint is load-bearing: the jaggedness notes for jev-1.13 say the model is weak at arithmetic, counting and comparing magnitudes, and unrelated detail in the state costs accuracy, which is why scores, opponent position, ball speed and court size are deliberately omitted. Copy reviewed against the repository README on 2026-10-04, not from running it.

Questions about this entry

Short answers drawn from the linked project or page.

More Jev resources like this

98GitHub stars
Self-hosted Docker service and web UI that packages Laya structured-decision inference behind a compatible System One endpoint.
Jev Demos & Experiments#community#jevbest#catalog-import
Browser drone-fleet lab where TypeSafe Jev steers each drone as fast reflexes and an optional planner offers one-use strategy advice when confidence drops, without pausing control.
Jev Demos & Experiments#community#jevbest#catalog-import
23GitHub stars
Chrome extension that sends each X post to Jev with six typed questions in one call near the viewport, then renders a behavior chip under the post plus a session cost and latency panel.
Jev Demos & Experiments#community#jevbest#catalog-import
14GitHub stars
Manifest V3 Chrome extension in TypeScript that sends each LinkedIn post to Jev and collapses bait, self-promo, off-topic, and sponsored posts into a one-line bar with reasons and scores.
Jev Demos & Experiments#community#jevbest#catalog-import
Demo that turns free-text UI descriptions into real shadcn components using only Jev typed Choice, Noul, and Score answers, with no generated code on the decision path.
Jev Demos & Experiments#community#jevbest#catalog-import
8GitHub stars
Claude-driven browser automation where plain-English chat drives Brave or Chrome, Jev makes on-page decisions, and a guard freezes irreversible clicks.
Jev Demos & Experiments#community#jevbest#catalog-import

From the Jev guides

Original write-ups on what this entry is for.

A game tick is a state plus a legal action list. How Clash Royale, Minecraft, and the earlier Mario, Pokémon, StarCraft, and drone loops ask Jev one step at a time.
Jev Demos & Experiments#gaming#agents#control
Read article
Back to all resources

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai