YAM scripted API control
passed
7 completed commands · 99.9 mm maximum lift · 1.0 mm placement error






The trained SO100 V3 policy completed pick and place through authenticated API calls in 10 of 12 primary MuJoCo trials. The API and direct reference agreed on task outcome in 12 of 12 paired trials. The 2 primary failures remain in the results and their traces are available below.
The APIs executed complete pick and place in MuJoCo with live GR00T V3 outputs adapted to YAM and SO101. The fixed controller passed 2 of 2 held out YAM trials and 2 of 2 held out SO101 trials. Each success required a physical grasp, unsupported lift, transfer, release, and a settled object at the destination.
The full history contains 3 successes and 1 failures for YAM, and 3 successes and 5 failures for SO101. V3 received cameras and joint state from an SO100 shadow simulation. These results establish API execution with that transfer controller in the tested scenes; target camera feedback, physical hardware performance, and broader reliability require further evaluation.
We evaluated the trained SO100 policy through authenticated API calls in MuJoCo and compared each trial with direct control. The results below include every primary trial, the follow up work on failed seeds, and the recorded camera and physics evidence.
Each row states the controller and evaluation population so the outcomes can be read in context. SO100 uses its own observations. YAM and SO101 use live policy outputs from the SO100 shadow scene. Their held out results follow controller corrections on seed 42001.
| Arm | Controller | Evaluation group | Trials | Successes | Failures | Evidence context |
|---|---|---|---|---|---|---|
| SO100 | V3 policy with the SO100 scene cameras and measured joints | Primary evaluation | 12 | 10 | 2 | 12 of 12 paired outcomes agree with direct control |
| YAM | Live V3 outputs from an SO100 shadow scene, mapped through FK and IK to target API commands | Fixed controller on held out seeds | 2 | 2 | 0 | Full attempt history: 3 successes, 1 failures; includes controller development and held out trials |
| SO101 | Live V3 outputs from an SO100 shadow scene, mapped through FK and IK to target API commands | Fixed controller on held out seeds | 2 | 2 | 0 | Full attempt history: 3 successes, 5 failures; includes controller development and held out trials |
Success is the benchmark's ordered physical predicate: bilateral cube contact, lift, containment inside the green zone, open jaw release, and at least 0.5 simulated seconds settled. A completed HTTP request alone does not count as success. Seeds and full failure traces are retained. The confidence interval describes sampling uncertainty for these seeds only.
| Seed | API success | Direct success | API ticks | Direct ticks | API wall s | Direct wall s | Max action Δ | Max cube Δ m | API error |
|---|---|---|---|---|---|---|---|---|---|
| 42000 | yes | yes | 411 | 411 | 42.7 | 9.9 | 0.00000000 | 0.00000000 | Not recorded |
| 42001 | yes | yes | 401 | 401 | 41.8 | 9.4 | 0.00410157 | 0.00003489 | Not recorded |
| 42002 | yes | yes | 377 | 377 | 38.6 | 8.9 | 0.00000000 | 0.00000000 | Not recorded |
| 42003 | yes | yes | 338 | 337 | 34.9 | 7.1 | Not recorded | Not recorded | Not recorded |
| 42004 | no | no | 600 | 600 | 61.7 | 12.3 | 0.00000000 | 0.00000000 | Not recorded |
| 42005 | yes | yes | 396 | 396 | 40.6 | 8.1 | 0.00000000 | 0.00000000 | Not recorded |
| 42006 | yes | yes | 350 | 350 | 36.2 | 7.1 | 0.00000000 | 0.00000000 | Not recorded |
| 42007 | yes | yes | 347 | 346 | 35.6 | 7.2 | Not recorded | Not recorded | Not recorded |
| 42008 | no | no | 600 | 600 | 61.0 | 12.3 | 0.00000000 | 0.00000000 | Not recorded |
| 42009 | yes | yes | 348 | 348 | 35.0 | 7.2 | 0.00000000 | 0.00000000 | Not recorded |
| 42010 | yes | yes | 396 | 401 | 38.1 | 8.3 | Not recorded | Not recorded | Not recorded |
| 42011 | yes | yes | 353 | 353 | 35.8 | 7.3 | 0.01503906 | 0.00007006 | Not recorded |
Trajectory deltas compare corresponding recorded ticks only when both traces have the same length. Zero means the API reproduced the direct simulation numerically for that seed; a dash means comparison was unavailable.
| Operation | Calls | Median ms | P95 ms | Worst ms |
|---|---|---|---|---|
| Atomic two camera observation | 4917 | 49.12 | 51.27 | 182.59 |
| Trained policy RPC | 621 | 227.24 | 239.29 | 258.25 |
| API control step + MuJoCo physics | 4917 | 15.14 | 16.45 | 115.17 |
Statistics pool every recorded call across API episodes; P95 uses the nearest rank definition. Latency is measured at the loopback HTTP client, including response parsing. Policy RPC time includes server computation and transport to the local policy server. API step latency includes validation, journaling, and MuJoCo integration. Physics is paused during policy inference in this experiment, so these timings do not establish a hard real time robot controller.
The primary SO100 evaluation executed 4917 authenticated POST /v1/sessions/{id}/policy-step calls and 621 actual V3 policy inference RPCs across 12 sessions. Every control tick paired a fresh atomic camera plus joint observation with one absolute six joint target and returned measured MuJoCo state. Tokens and lease secrets are not printed here.
| Order | HTTP call | Payload / response |
|---|---|---|
| 1 | POST /v1/sessions | robot_id=so100, scene=groot_v3, manual mode, recording on; response has session ID and lease epoch. |
| 2, every tick | GET /v1/sessions/{id}/observation?include_rgb=true | Atomically returns front/wrist RGB, joint positions, sequence, object/task state. |
| 3, at chunk boundary | V3 policy RPC | Two live camera frames, measured joint state and task instruction; returns 40 predicted absolute six joint actions. |
| 4, every tick | POST /v1/sessions/{id}/policy-step | Lease header, fresh observation sequence, increasing command sequence and the current model produced joint target; returns measured state, contact/task metrics and simulation time. |
| 5 | DELETE /v1/sessions/{id}; GET /export | Close the session, then download the full per tick API journal. |
{
"observation_sequence": 1,
"command_sequence": 0,
"positions_rad": [
0.5325309634208679,
-1.3794503211975098,
1.328666090965271,
1.6192513704299927,
-2.1013333797454834,
0.699999988079071
],
"measured_positions_rad": [
0.5310142602164671,
-1.367295844510259,
1.3273086097611002,
1.625157377439205,
-2.101003908060749,
0.6999829452756653
],
"object_position_m_after_step": [
0.09933514190447397,
-0.22944205256490283,
0.0148922445562271
],
"task_success_after_step": false
}Full model/action/physics trace · Raw API episode journal · HTTP access log · Run contract
The primary 12 seed result above is unchanged. We reran only its two failed seeds with different policy action commitment horizons; this selected seed follow up is not an unbiased new success rate. Commitment 16 rescued seed 42004 through both API and direct control (347 ticks); seed 42008 still failed. All failed trials and videos remain linked.
411 policy ticks · 13.70 simulated seconds · 52 policy calls · 272 bilateral contact ticks · 72.2 mm peak cube center height · direct reference: success




401 policy ticks · 13.37 simulated seconds · 51 policy calls · 272 bilateral contact ticks · 75.2 mm peak cube center height · direct reference: success




377 policy ticks · 12.57 simulated seconds · 48 policy calls · 245 bilateral contact ticks · 74.6 mm peak cube center height · direct reference: success




338 policy ticks · 11.27 simulated seconds · 43 policy calls · 202 bilateral contact ticks · 73.9 mm peak cube center height · direct reference: success
No video captured.




600 policy ticks · 20.00 simulated seconds · 75 policy calls · 489 bilateral contact ticks · 74.4 mm peak cube center height · direct reference: failure
No video captured.




396 policy ticks · 13.20 simulated seconds · 50 policy calls · 260 bilateral contact ticks · 72.8 mm peak cube center height · direct reference: success
No video captured.




350 policy ticks · 11.67 simulated seconds · 44 policy calls · 222 bilateral contact ticks · 73.8 mm peak cube center height · direct reference: success
No video captured.




347 policy ticks · 11.57 simulated seconds · 44 policy calls · 222 bilateral contact ticks · 75.7 mm peak cube center height · direct reference: success
No video captured.




600 policy ticks · 20.00 simulated seconds · 75 policy calls · 447 bilateral contact ticks · 20.6 mm peak cube center height · direct reference: failure
No video captured.




348 policy ticks · 11.60 simulated seconds · 44 policy calls · 221 bilateral contact ticks · 72.7 mm peak cube center height · direct reference: success
No video captured.




396 policy ticks · 13.20 simulated seconds · 50 policy calls · 263 bilateral contact ticks · 73.5 mm peak cube center height · direct reference: success
No video captured.




353 policy ticks · 11.77 simulated seconds · 45 policy calls · 220 bilateral contact ticks · 74.4 mm peak cube center height · direct reference: success
No video captured.




The trained V3 checkpoint was also evaluated by a live SO100 shadow policy FK/IK transfer controller through each target arm's APIs. It is not target camera conditioned. Open the dedicated YAM + SO101 report for actual model controlled outcomes, failures, videos, API calls and physical gates. The cards below are only scripted API baselines, excluded from policy success counts.
passed
7 completed commands · 99.9 mm maximum lift · 1.0 mm placement error






passed
7 completed commands · 101.7 mm maximum lift · 5.8 mm placement error






passed
7 completed commands · 96.0 mm maximum lift · 3.2 mm placement error






| Checkpoint contract SHA-256 | 9bb09bc4fe31f86c72eef8f7e4821a8a176f25454b2bad164e1f9c4d1dfe97e5 |
|---|---|
| Checkpoint and processor bytes | verified |
| MuJoCo renderer | NVIDIA Corporation · NVIDIA A40/PCIe/SSE2 · 4.6.0 NVIDIA 595.91.07 |
| API regression suite | 68 tests; 0 failures; 0 errors |
| Policy input | Two 224×224 RGB cameras (front, wrist), six measured SO100 joint positions, exact task instruction |
| Policy output | 40 absolute six joint actions; first 8 consumed at 30 Hz |
| Dynamics and task | Original benchmark MujocoSO100Env and TaskTracker, 2 ms native physics timestep, gravity compensation |
| API boundary | Bearer authentication, lease epoch, sequence and freshness validation, named joint bounds, measured state, per tick journal |
| Seed set | [42000, 42001, 42002, 42003, 42004, 42005, 42006, 42007, 42008, 42009, 42010, 42011] |
The API returns two camera images and state atomically under its session lock. Each policy action passes through POST /v1/sessions/{id}/policy-step; the endpoint applies the original benchmark's 1/30 second control tick. Simulated time accumulates against MuJoCo's native 2 ms step. Direct and HTTP arms use the same scene and policy checkpoint.
API run manifest · All API outcomes · Direct baseline outcomes · Three arm scripted results · Checkpoint and processor verification · NVIDIA renderer · Regression JUnit · Installed packages · GPU inventory · Policy server log · API server log · Artifact checksums
This site contains the report pages and their linked evidence. Session lease values were removed from publication copies of API journals. The original evaluation files remain unchanged. Source and published file hashes record the exported files and redactions.