One API key for any frontier model on your robot.
We think anyone with a robot should be able to try the best AI models on it. Playground Router connects Claude, GPT-6, Gemini, and other frontier models to your robot through one API, and scores every run. No robot yet? Try it in the simulator first.
Set up your first run
We support the SO-101 and the bimanual YAM for now, on your own hardware or in a simulator on your computer. Pick your robot, a model, and a task, and we show you the exact Python SDK code and its price. The first connect() finds your arms and cameras and calibrates them, and if your program stops, the robot holds still.
1 Pick your robot
2 Pick a model
3 Pick how it thinks
Reasoning effort4
Everything is in the Python SDK
Playground Router is a Python SDK. connect() and run() cover most programs. Underneath, a typed client gives you streaming steps, typed errors, automatic retries, safe repeats of every request, and an async version.
connect() sets up the robot once. run() returns the judged result.
from playground_router import connect
with connect() as robot:
result = robot.run(
"put the cube in the bowl",
model="anthropic/claude-opus-5.5", # the exact model ID
effort="high", # reasoning effort: low, medium, high, xhigh, max
harness="agentic", # or direct
max_usd=1,
minutes=10,
)
print(result.success) # True
print(result.score) # 1.0, the fraction of subtasks that passed
print(result.subtasks) # each subtask, passed or failed, and why
print(result.cost_usd) # {"total": 0.0873, "vendor_price": 0.09, "saved": 0.0027}How it works
We split a session into three parts, so everything that touches your robot stays with you. The SDK and the connector are open source and run on your side. We run the models.
In your code
Python SDK
Your program opens a session, sends camera frames and robot state, and gets back the next action. The loop stays in your code.
Behind the API
Router
- Model routing. One API key for every model below.
- Harnesses. The loop that turns model output into skill calls. It is its own parameter, so you can compare harnesses on one model.
- Metering. Model calls, tokens, and session minutes.
- The judge. A score for every session.
Next to the robot
Connector
Runs the robot’s skills and enforces the safety limits from its registration file, where no model can override them. It holds the robot still if the link drops, and it makes only outbound connections.
- locate
- move_to
- open_gripper
- close_gripper
Every frontier model, for less than going direct
Every minute here costs less than the vendors charge for the same tokens, and never more than the rate on the model’s card. The harness, the safety limits, the judge, and the run log are free.
There are no subscriptions and no purchase fees. Buy credits from $20, and a run stops before your balance can go below zero. A three-minute task with Claude Opus 5.5 costs at most $0.60, judge included.
Premium$0.50 a minute or less
- Claude Fable 5.1
anthropic/claude-fable-5.1$0.50 per minuteDirect from the vendor:$0.525direct - GPT-6 Astra
openai/gpt-6-astra$0.50 per minuteDirect from the vendor:$0.525direct - Claude Opus 5.5
anthropic/claude-opus-5.5$0.20 per minuteDirect from the vendor:$0.21direct
Standard$0.10 a minute or less
- GPT-6.1 Sol
openai/gpt-6.1-sol$0.10 per minuteDirect from the vendor:$0.105direct - Claude Sonnet 5.5
anthropic/claude-sonnet-5.5$0.10 per minuteDirect from the vendor:$0.105direct - Gemini 4 Argon
google/gemini-4-argon$0.10 per minuteDirect from the vendor:$0.105direct - Grok 4.7
x-ai/grok-4.7$0.092 per minuteDirect from the vendor:$0.095direct
EconomyUnder $0.05 a minute
- Gemini 3.8 Flash
google/gemini-3.8-flash$0.042 per minuteDirect from the vendor:$0.0435direct - Claude Haiku 5.5
anthropic/claude-haiku-5.5$0.005 per minuteDirect from the vendor:$0.00525direct - GPT-6 Luna
openai/gpt-6-luna$0.005 per minuteDirect from the vendor:$0.00525direct - DeepSeek V4.1 Flash
deepseek/deepseek-v4.1-flash$0.0032 per minuteDirect from the vendor:$0.0033direct
Prices as of October 2026. A busy minute in our simulator uses about 40,000 input and 2,500 output tokens, and the struck-through price is what the vendors charge for them at list price. A run pays 97% of that list price for the tokens it uses.
Every session gets a score
Frontier models are not reliable robot controllers yet, and we want every run to show where they fall short. A judge scores each subtask. A failed subtask names its failure type, and every subtask has a timestamp, so you can see when a run went right and where it went wrong.
session.result() returns the scores with the session’s cost.
{
"status": "completed",
"score": 0.67,
"subtasks": [
{"name": "pick up the cube", "passed": true, "t_s": 41},
{"name": "place it in the bowl", "passed": true, "t_s": 118},
{"name": "return home", "passed": false, "failure": "stall", "t_s": 252}
],
"billed_minutes": 4.2,
"cost_usd": {"total": 0.81, "vendor_price": 0.84, "saved": 0.03}
}An example result. The numbers are for illustration only.