Skip to main content
Every served robot model drives a bimanual YAM. Each model expects its own cameras, state, and frame counts. Build every request from the table of the model you call. Rules for every model:
  • Send frames as JPEG, camera-major: every frame of the first camera, then every frame of the next camera.
  • Within one camera, send frames oldest first. The last frame is the latest.
  • Send robot_state as the state at the time of the latest frame.
  • Action row k is meant for time t + k * dt, where t is when you captured the latest frame.
  • A model that is not stateful takes one frame per camera on every request.
  • A stateful model keeps the episode on the server. It takes one frame per camera on the first request of a session, then more on every later request.
The WebSocket’s session.opened message states the same facts at run time. See Sessions over WebSocket.
A chunk with the right shape is not proof of task success or safe motion. Check every action against your robot’s limits before you execute it.

abstract/dreamzero-astra:yam

A DreamZero world action model fine-tuned for the bimanual YAM. It keeps the episode’s context on the server and conditions on recent video.
robot_state

stealth/picasso:yam

Picasso drives the bimanual YAM and keeps the episode’s context on the server. See pricing for its rates. Use this model id in chat completions, or in both the WebSocket’s ?model= query and session.open.
robot_state

allenai/molmoact2:yam

Ai2’s MolmoAct2 for the bimanual YAM. It reads one frame per camera and keeps no state between requests.
robot_state

microsoft/rho:yam

Microsoft’s Rho-YAM-Box. It predicts Cartesian end-effector targets, not joint commands. Abstract performs no inverse kinematics. Positions are in metres, in the checkpoint’s coordinate frame. A rotation6d is the first two columns of the rotation matrix, concatenated. The two columns must be nonzero and not parallel. The model computes 50 rows and returns the first 25.
robot_state

perceptron/isaac-0.5:yam

Perceptron’s Isaac 0.5 for the bimanual YAM. It reads one frame per camera and keeps no state between requests. It was trained on Ai2’s MolmoAct2-BimanualYAM recordings, so it expects the same overhead and wrist views as MolmoAct2. The model computes 50 rows and returns the first 30. Its joint scaling comes from one recorded session of that dataset. Expect worse motion on a rig whose cameras or start pose differ from those recordings.
robot_state

physical-intelligence/pi0.5:yam

π0.5 fine-tuned for the bimanual YAM. It reads one frame per camera and keeps no state between requests. It was trained on Ai2’s MolmoAct2-BimanualYAM recordings, so it expects the same overhead and wrist views as MolmoAct2. The weights are a community fine-tune of π0.5, not a release by Physical Intelligence. They have not been evaluated on a robot. Expect worse motion on a rig whose cameras or start pose differ from those recordings.
robot_state

What the server checks

invalid_image covers any frame or state value the model cannot use. Its message names the problem. See Errors and limits for every code.