Skip to main content
Your account needs access to reactor/fastwam-libero. Contact Reactor if it is not enabled. This example uses synthetic observations to check connectivity and output shape; it never executes actions.

Install the reference client

New to Reactor? How the API works explains the session, camera streams, commands, and action messages used below. You need Python 3.12, uv, a Reactor API key, and Reactor’s public cookbook. The client code is public; your Reactor account still needs access to the selected hosted model. No local model weights or GPU are required for this example.
Run the example below from robotics/sim/notebooks/. This environment installs the Python SDK (reactor-sdk, imported as reactor_sdk) and the reactor_robotics helper directory in Reactor’s public cookbook. The helpers provide camera publishing and message queues; they are separate from the SDK. Keep your API key in the environment. On Linux, the published glibc wheel requires glibc 2.34 or newer. The default endpoint is https://api.reactor.inc; REACTOR_API_URL overrides it. Examples select a model by slug, not a frozen release; check its release notes when the deployed contract changes. If setup or connection fails, see first-run troubleshooting. The shared public helper already supports this request pattern. No FastWAM model code or recorded observations need to be downloaded.

Request a chunk

Run the cookbook example from the current robotics/sim/notebooks/ directory:
Expect actions: (32, 7) and seven values for the first control step. Do not execute outputs from these fabricated images and state on hardware. A fixed seed does not guarantee identical replies when video encoding or observation timing changes the inputs. ReactorSession keeps publishing the supplied frames while the request waits. Both tracks must continue delivering frames after the request; publishing each image once beforehand can leave it waiting. The example’s 20 fps is a camera publishing rate, not a required robot control frequency. The printed request time includes input waiting and transport; inference_seconds does not. Next, map simulator observations and implement execution. If the request times out, inspect command_error messages as described in troubleshooting.