GET /v1/environments/models lists the robot models your account can call, including your own
fine-tunes. Use the IDs it returns; a model missing from that list is unavailable.
The YAM models were trained on two I2RT YAM arms, with one overhead camera and one camera on each
wrist, and take and answer end-effector poses. Xiaomi uses the native ARX X5 contract; FLUX uses
native Franka joints with DROID’s camera layout. Both are API-only. verne/v0.5 takes the YAM
models’ poses and cameras but was not trained on the YAM; it is API-only too. runway/praxis-1
was trained on the YAM and takes the same poses, with its own frames and rate; it is API-only.
Rules for the YAM models below:
- 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_stateas the state at the time of the latest frame. - Their packed
robot_statehas exactly two fields:cartesian_positionandgripper_position. On the public API, send the sixleft_/right_pose and gripper fields inobservation.state. Joint angles are refused for these YAM models. - Action row
kis meant for timet + k * dt, wheretis 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.
Poses
A pose is 9 numbers: the grasp-site position (x, y, z, in metres), then a rotation6d. The grasp site is the point between the closed fingertips. A rotation6d is the first column of the rotation matrix, then the second column. The two columns must be nonzero and not parallel. The server makes them orthonormal before use.cartesian_position is 18 numbers: the left pose, then the right pose.
Each action row is 20 numbers: left xyz, left rotation6d, left gripper, then right xyz, right rotation6d, right gripper.
The action space is ee_6d_position.
Your robot turns each pose into its own joint angles with its own inverse kinematics.
Every YAM model below except microsoft/rho was trained in YAM joint space.
For these models, each pose is in that arm’s own base frame: x forward, y left, z up.
The server solves each pose to YAM joint angles, runs the model, and turns its answer back into poses through the same YAM kinematics.
A pose that a YAM arm cannot reach returns 400 pose_unreachable. Send a session_id on these models even where it is optional: the gateway then starts each solve from the session’s previous one, so successive chunks stay on one arm configuration.
microsoft/rho takes and answers poses in its checkpoint’s own frame, with no inverse kinematics on the server.
allenai/molmoact2
Ai2’s MolmoAct2, trained on the bimanual YAM. It reads one frame per camera and keeps no state between requests.robot_state
microsoft/rho
Microsoft’s Rho-YAM-Box. It was trained on end-effector poses, so the server runs no inverse kinematics for it.
Positions are in metres, in the checkpoint’s coordinate frame, not in each arm’s base frame.
The model computes 50 rows and returns the first 25.
robot_state
perceptron/isaac-0.5
Perceptron’s Isaac 0.5, trained on 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 state 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
π0.5 fine-tuned on 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
xiaomi/xiaomi-robotics-1
Xiaomi Robotics 1’s RoboDojo ARX X5 benchmark fine-tune, served under Apache-2.0. This is a benchmark-specific checkpoint for two ARX X5 arms. Abstract has tested inference and the native request format, not task success or operation on a physical robot. It is callable whenGET /v1/environments/models lists it.
Use the native request fields; joints condition the model
and the observed poses restore its relative predictions. The output keeps the world frame,
with normalized grippers bounded to [0, 1]. No YAM inverse kinematics or frame conversion is
applied. The model is API-only, and it is not supported by the physical YAM CLI.
black-forest-labs/flux-3-action
Black Forest Labs’ FLUX 3 Action DROID checkpoint, for a Franka Panda with a Robotiq gripper. Its weights use the FLUX Kommunity 1.0 license. Abstract has tested native inference with synthetic observations, not task success or operation on a physical robot. It is callable whenGET /v1/environments/models lists it.
The state contains exactly those two fields, captured with the three camera frames. No
end-effector fields or inverse kinematics are involved. Input grippers must be in [0, 1];
finite output gripper predictions are not clamped to that interval.
Use the DROID request example. Each call resets the policy’s
inference state and reports zero cached tokens; usage includes
the actual padded positive and negative text contexts. This model is API-only. It is not
offered in the physical YAM CLI.
FLUX applies prohibited-use prompt filters and allows only numeric native actions with
supported metadata in its replies. It refuses an entire chunk if any joint target exceeds
the published Panda/FER position bounds, without clamping values. These filters are mandatory. They do not assess scene
hazards, determine copyright or legal status, or enforce physical motion limits. Your
controller must enforce joint velocity, acceleration, force and workspace limits and provide a stop
mechanism. See FLUX content filters.
verne/v0.5
Verne V0.5’s pretrained base checkpoint, a world action model. It keeps a memory of the episode on the server. Built with Verne V0.5.robot_state
runway/praxis-1
Runway’s Praxis-1, a video-action policy, in the checkpoint Runway fine-tuned for the bimanual YAM. On each call it predicts the next stretch of video and the next actions together, from the frames your robot saw while it ran the last chunk.robot_state
400 invalid_observation; frames near 416x260 keep requests small.
Write the task as the checkpoint’s training captions were written: “Pick up the pen from the
center of the table, then place the pen in the bag”, with no closing period. An instruction that
encodes to more than 512 text tokens is refused.
The model reads the two arms as if their bases stand 0.61 m apart, as on the rig it was trained
on. Its predicted video is not returned. This model is API-only. It is not offered in the
physical YAM CLI.
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.