Skip to main content

Before you start

You need Python 3.12, the Python SDK, and a Reactor API key with access to the hosted model. New to Reactor? How the API works explains sessions, camera tracks, commands, and messages.

Request a chunk

  1. Connect a session to reactor/praxis-1-yam with the Python SDK and wait for READY. Subscribe to action_prediction and prediction_failed messages before you send anything.
  2. Publish the top, wrist_left, and wrist_right camera tracks at 15 fps. Send RGB uint8 frames in 16:10 aspect, at most 416 pixels on the longer side. For a first test, synthetic frames are enough.
  3. Send set_task with a task, for example {"task": "Pick up the pen from the center of the table, then place the pen in the bag"}.
  4. Send set_robot_state_json with at least the last 25 rows of measured state at 15 Hz. See Robot state for the format.
  5. Wait for the first action_prediction. The session needs 25 frames of each camera first, so it arrives about two seconds after the cameras start. Check that step is 0, that it has 21 rows, and that every value is finite.
  6. To get the next chunk, send set_executed_step with that step. The next reply has step: 1 and 24 rows.
Commands that carry JSON take it as a string inside the named field. For example, set_robot_state_json takes {"robot_state_json": "{\"left\": {\"ee_pose\": ..., \"grip\": ...}, \"right\": {...}}"}, not a nested object. Replies to synthetic frames and sample state only check connectivity and reply shape. Do not execute them on hardware. If no chunk arrives, send get_status: its waiting_for field says what the session still needs. Next, build a simulator adapter or use the integration guide.