Skip to content

pong-jev

Jev plays Atari Pong with one up/down/stay Choice per frame, receiving only digit-free relative descriptions computed by code.

Projectprototype

Overview

pong-jev has TypeSafe's Jev play Atari Pong by asking one typed Choice per frame: move the paddle up, down or stay. Its design follows Jev 1.13's documented weaknesses in arithmetic, counting and comparing magnitudes, and the finding that unrelated state detail costs accuracy. So no coordinates reach the model: code computes geometry, including the relative ball-minus-paddle position, and sends five short phrases such as 'ball far below my paddle' or 'travelling towards my paddle', and a test asserts the payload has no digits. Scores, opponent position, speed and court size are left out.

A raw-encoding flag sends coordinates instead, to measure what the wording is worth, and a heuristic policy provides a no-API baseline. The environment runs via gymnasium/ALE in a Python bridge with a Bun agent and dashboard. A duel mode lets you play against Jev on a local court. It suits developers learning to shape state for decision models.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich way should I move my paddle right now?up · down · stay

How it works

  1. Read the game state from ALE.
  2. Code computes relative positions and phrases.
  3. Ask Jev one Choice per frame.
  4. Move the paddle accordingly.

Strengths

  • Demonstrates state design around documented model weaknesses.
  • Raw vs phrased encoding comparison.
  • Heuristic baseline and human duel mode.

Caveats

  • Requires a TypeSafe key for Jev play.
  • Game demo, not a framework.

Getting started

bun install; set up a Python venv with gymnasium[atari], ale-py, fastapi, uvicorn, numpy; add TYPESAFE_API_KEY; bun run bridge then bun start.

At a glance

Type
Project
Status
prototype
Language
TypeScript
Runtime
Bun agent, Python ALE bridge
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

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

    hellogumbo/awesome-jev

Frequently asked questions

Why not send coordinates?

Jev 1.13 is documented as weak at comparing magnitudes, so code computes comparisons and sends phrases.

Can I play against it?

Yes, use --duel.

Is there a no-API baseline?

Yes, --policy heuristic.

Related projects

  • Real-time bot battles where you write a fighter's strategy in plain English and a System One model pilots it several times a second.

    ProjectbetaTypeScript
  • Bot that plays Red Alert 2 web skirmishes, with code handling mechanics and a decision model making stance, threat and timing calls.

    ServicebetaPython
  • Multiplayer 3D science-fantasy version of Houston's River Oaks District with Jev-powered NPC companion, chauffeur and smart drive.

    ProjectbetaTypeScript
  • Browser 3D planetary rover sandbox where a TypeSafe controller chooses the next action from complete candidates, versus a baseline.

    ProjectbetaTypeScript
  • Doom runs as a spacecraft payload over real flight software; Jev pilots from the ground every half second while Claude reviews.

    ProjectprototypePython
  • Minecraft agent where Hermes plans, Jev picks one bounded action at a time and a Mineflayer harness validates and executes.

    ProjectprototypeJavaScript