jev-table-tennis
Browser table tennis against Jev, where every paddle position is a live Choice among pixel-labelled bands with no local prediction.
Overview
Human vs JEV Table Tennis is an instrument for watching whether a decision model can play table tennis by itself. It is a single HTML canvas game plus a small standard-library Python relay. You play on the left with a mouse; on the right, every paddle movement is decided live by Jev. The relay renders the ball's position, velocity and speed rules as prose and asks one multiple-choice question, where each option label is a pixel position for the paddle centre.
Jev owns where to stand when the ball arrives, where to wait otherwise and the arc of its serve. Physics, scoring and rendering are local, and a four-line servo moves the paddle to the commanded position; if offline, the paddle stands still. The ball-speed cap is fixed rather than derived from latency so the test conditions are not moved by the thing under test. The author reports the API rejected numeric output types, and that 7 bands scored 6 of 10 while 40 narrow bands scored 0 of 10.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Where should the centre of your paddle be when the ball reaches your line? | — |
| Choice | Which arc bucket should the serve use? | — |
How it works
- Browser posts game state to the local relay
- Relay renders state as text and asks a Choice of paddle positions
- Option label maps directly to a pixel target
- Servo moves the paddle; offline means standing still
Strengths
- Tight, honest boundary between model and code
- No dependencies or build step
- Documents measured design constraints such as band count
Caveats
- Demo; model accuracy is limited and latency-bound
- Finer option grids made performance worse in the author's tests
Getting started
export TYPESAFE_API_KEY=..., run `python3 server.py`, and open the printed URL.At a glance
- Type
- Project
- Status
- prototype
- Language
- Python
- Runtime
- Browser + Python relay
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Table tennis vs. TypeSafe's Jev (System One). Every paddle move on the right is a live model decision — no local prediction, just a lookup table and a servo.
logicrw/awesome-jev-projects
Frequently asked questions
Does any local code help Jev play?
No. The client only has a lookup from option label to pixel and a four-line servo.
Why not ask for a number directly?
The README reports numeric output types returned 400 errors, so options are the only channel.
How many options work best?
The author measured 7 bands at 6/10 and 40 bands at 0/10.
Related projects
Fifteen live arcade games where Jev and LLMs play each other, led by WikiRace in which Jev picks only real links.
ProjectbetaTypeScriptOne-page web app where Jev plays chess against OpenRouter LLMs, Stockfish or you, showing the moves it weighed and their probabilities.
AppbetaJavaScriptPac-Man where Jev or other System One models choose each move at junctions, with live odds, fallbacks and a leaderboard.
ProjectbetaTypeScriptBrowser chess lab where Jev, LLMs and people play, each Jev turn being one Choice over the legal moves, with Stockfish analysis.
ProjectbetaPythonNiceGUI desktop chess app for evaluating Jev's move choices against Stockfish, random players or itself, with PGN export.
ProjectprototypePythonBrowser 2D driving sim where Jev answers lane, speed, hazard and pedestrian-yield questions every 200 ms, with an LLM comparison mode.
ProjectprototypeJavaScript