Pocket PilotDecisions lab

A live experiment in machine perception

A little road. A lot of decisions.

Choose a model and watch it drive. Open a frame to see exactly what it saw, what you asked, and how it answered.

Real inputs. Real API calls.Inspired by the Decisions demo ↗

YOUR BROWSER · YOUR OPENROUTER ACCOUNT

Bring your own key. Take the wheel.

Explore the slides and recorded runs for free. For cloud models, connect an OpenRouter key with a small credit limit. Requests are billed to your account.

Kept only in this tab’s memory; cleared on refresh or disconnect. Sent directly to OpenRouter, never to this site’s host. Not included in logs or exports.

Create a key with a credit limit ↗
What stays in my browser?

The game, sounds, and run history stay in your browser. For cloud models, the selected image or structured scene and your API key go to OpenRouter for inference. Local WebGPU models need no key and keep inference on your device; their initial model downloads come from Hugging Face. OpenRouter and the chosen model provider apply their own data policies. This page does not save your key, use analytics, or upload your history. The page’s JavaScript can access a key while connected, so use a dedicated key with a credit limit and disconnect on shared computers. Export a run before refreshing to keep its history; exports contain game inputs and answers, never your key.

Speed
HD display stays sharp at every input size.

The live road HD · 840 × 960

PAUSED
1×ClassroomGame 0.0 s
One image. One lane question.
PASSED0
LAST DECISION—
DECISIONS0 / 30

Game time pauses during each API request. The API wait timer shows real elapsed time.

Start a live run, or take one decision with the road paused.

No request in flight
What speeds up? What does the model see?

1×, 2×, 4×, 8× and 16× change road speed between decisions. API latency is real and is never divided by the speed setting. Only one request is in flight at a time.

Image mode sends a PNG. Structured scene mode sends obstacle lanes and coordinates as JSON, with no image. Jev latest and Jev 1.14 accept both input modes; the older Jev 1.13 option remains a JSON baseline. Compare models using the same input mode to compare their decision latency. A text result is not a vision accuracy result. Both modes include the selected one, two or three questions. The display stays HD; the API image can be compact or full resolution. Image mode sends no obstacle coordinates. Neither mode supplies the chosen answer label. The chosen lane becomes a left / stay / right steering command in game code. One answer controls the entire lane change. The default takes two looks: when the barrier appears and before it reaches the car. Teaching tour adds a middle look; Fast pass takes one. These distance checkpoints arrive sooner at higher speeds. The countdown is computed locally, excludes API waits, and is never sent to the model.

Classroom mode freezes both the road and game clock during every API request. It resumes from the same position when the answer arrives. Real-time mode keeps moving during requests and skips rechecks that cannot finish within the measured latency plus steering budget. It always requests a first decision for a new barrier. Neither mode changes a model’s chosen lane. When a response arrives, code checks whether the captured obstacle row still exists and the run is still active. Old responses are logged and skipped. A valid response can still be wrong and cause a collision.

Each run stops on a collision, an API error, or after 30 calls. Pause stops new calls. Calls already in flight are still recorded. The two other questions describe the scene; only the open-lane choice steers.

Decision inspector

NEXT FRAME · PREVIEWNot sent yet
Exact PNG frame sent to the Decisions API
840 × 960 PNG · preview
THE INPUT IMAGE

Three lanes. Three options.

The model chooses an open lane; the car steers smoothly to that lane. This thumbnail is the exact image embedded in the request.

Save this frame ↓

Historical frames stay unchanged while the live road moves.

Decisions vs a full LLM / VLM

Same frozen input and questions → Luna Decisions, GPT-4.1, and GPT-4.1 Mini. JSON input tests language reasoning; image input tests vision. The road pauses, request order rotates, and no comparison answer steers.

How this comparison works

Chat uses short, schema-constrained JSON at temperature 0, with a 120-token cap and no requested explanation. It returns a lane, an optional boolean, and an optional level; Decisions also provides probabilities. This compares complete model + API paths, not API overhead in isolation.

Run a matched comparison or inspect the recorded calls. Lower latency is a hypothesis to test, not an assumed result.

How chat JSON output works ↗

A measured model check

One lane question. Six identical 420 × 480 scenes per vision model, with request order rotated. Three identical JSON scenes per text model. Recorded previously via the local server; these small samples are not a general accuracy ranking.

ModelInputCorrect / attemptsMedian round tripSlowest call
Loading recorded measurements…

Does one question do the job?

Pauses the road and makes three real calls using the same model and input. Only the question set changes. No comparison answer moves the car. Request order rotates each time.

Questions per callCorrect lane / attemptsErrorsMedian answer timeMean input tokensMean cost / call

Run history Every frame, kept in order.

0 decisions
Waiting for the first frame

Click a row or scrub the timeline to revisit an exact input image, its questions and answers. The road stays live while you look back. Return to latest whenever you like.

Frame / capture pointQuestionsSpeedOpen laneP(middle blocked)ProximityRound tripAction outcome
Your first decision starts the story. Try “One decision” or start a live run.
Run history stays in this tab. Export it before refreshing. Your key is never included.