Skip to content

jev-table-tennis

Browser table tennis against Jev, where every paddle position is a live Choice among pixel-labelled bands with no local prediction.

ProjectprototypeMIT

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

TypeQuestionAnswers
ChoiceWhere should the centre of your paddle be when the ball reaches your line?—
ChoiceWhich arc bucket should the serve use?—

How it works

  1. Browser posts game state to the local relay
  2. Relay renders state as text and asks a Choice of paddle positions
  3. Option label maps directly to a pixel target
  4. 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.

    ProjectbetaTypeScript
  • One-page web app where Jev plays chess against OpenRouter LLMs, Stockfish or you, showing the moves it weighed and their probabilities.

    AppbetaJavaScript
  • Pac-Man where Jev or other System One models choose each move at junctions, with live odds, fallbacks and a leaderboard.

    ProjectbetaTypeScript
  • Browser chess lab where Jev, LLMs and people play, each Jev turn being one Choice over the legal moves, with Stockfish analysis.

    ProjectbetaPython
  • NiceGUI desktop chess app for evaluating Jev's move choices against Stockfish, random players or itself, with PGN export.

    ProjectprototypePython
  • Browser 2D driving sim where Jev answers lane, speed, hazard and pedestrian-yield questions every 200 ms, with an LLM comparison mode.

    ProjectprototypeJavaScript