Run the Python examples
Start with the scripted AgiBot rollout to connect to the hosted model, initialize your scene, change an arm pose and gripper value, and reset. It saves three preview snapshots so you can inspect the received video. Then try the interactive terminal controls to select either arm, adjust XYZ positions, open or close a gripper, and save snapshots. These are Python clients with saved images, not live graphical viewers. Both include pinned dependencies and setup instructions; bring a compatible AgiBot starting image and a Reactor API key with model access. The examples were verified against hosted model version 0.2.0 with Python SDK 1.10.0. Preview snapshots are not synchronized action-to-observation results for policy evaluation.Session contract
Connect toreactor/cosmos3-nano-sim-bimanual. Use the
SDK’s commands and uploads after the session is ready. These
operations are session commands, not separate HTTP endpoints.
Generation starts once an image, nonempty prompt, and valid controller sample are present. Each new
world anchors itself to the current controller positions; resetting does not move controllers to
zero. Set the seed before starting or resetting a world.
The
main_video track carries generated RGB frames. Per-frame metadata contains step and frame.
The simulation_status message reports input readiness, pause state, frame/step counters, and any
configured rollout limit. A command acknowledgement confirms handling, not that its visible effect
has reached the screen.
Controller payload
This is an example payload forset_teleop. Positions are meters in your calibrated tracking space;
orientations are unit quaternions in [x, y, z, w] order. Align the controller axes and initial
poses to the supported robot before applying movement. These numbers illustrate the shape, not a
calibration.
0 (open) to 1 (closed). An optional head pose uses the same position and
orientation fields; omitting it holds the head camera still.
Build a mouse or trackpad playground
Choose a compatible starting scene, upload it, set a task prompt, and send the initial controller poses. Displaymain_video with an explicit Left / Right arm selector, pause, and reset controls.
Map each gesture to a bounded change in the selected controller’s calibrated pose:
The model receives
set_teleop pose samples, not mouse events. Use a small drag threshold so
releasing a drag does not also toggle the gripper. Clear pending movement on focus loss or pointer
cancellation. Holding a controller pose does not pause world generation; use set_paused for that.
Keep the latest desired pose in the browser and bound pending commands so a slow connection does not
replay old movement. Multiple clients share session state, so give one person control and make other
clients viewers. The model API does not provide a controller lease.
Start with a small number of tested scenes. Arbitrary image support does not establish reliable
behavior for unseen robots, objects, or camera layouts. For a custom-policy experiment, first define
an embodiment-compatible action mapping and evaluate the generated dynamics; the current controller
API does not provide a causal action-to-observation stepping contract or task-success scores.