This guide covers installing the roz CLI, pulling a simulation container, and configuring an LLM provider so the agent can reason about your robot.
Prerequisites
| Requirement | Minimum |
|---|
| Rust | 1.92 or later (rustup.rs) |
| Docker | Docker Desktop or Docker Engine (docker.com) |
| LLM API key | Anthropic, OpenAI, Google, or local Ollama |
Docker must be running before you start a simulation. The code editor, agent runtime, and WASM sandbox work without Docker, but you need a sim container to actually control a robot.
Install the CLI
Install from crates.io:
Or clone and build from source:
git clone https://github.com/BedrockDynamics/roz-oss.git
cd roz-oss
cargo install --path crates/roz-cli
Verify the installation:
Pull a Sim Container
Each supported robot has a Docker sim container that bundles Gazebo, the robot’s middleware stack, and an MCP server. Pull the one you want to use:
Manipulator (UR5)
Drone (PX4)
Drone (ArduPilot)
Mobile (Nav2)
docker pull bedrockdynamics/substrate-sim:ros2-manipulator
A 6-DOF UR5 arm in Gazebo with MoveIt2. MCP tools: move_to_pose, get_joint_state, stop_arm. WASM channels: 6 joint velocities.docker pull bedrockdynamics/substrate-sim:px4-gazebo-humble
A PX4 quadcopter in Gazebo with MAVLink. MCP tools: takeoff, land, go_to. WASM channels: 4 body velocities.docker pull bedrockdynamics/substrate-sim:ardupilot-gazebo
An ArduPilot quadcopter in Gazebo. MCP tools: arm, takeoff, go_to. WASM channels: 4 body velocities.docker pull bedrockdynamics/substrate-sim:ros2-nav2
A differential-drive robot in Gazebo with Nav2. MCP tools: navigate_to, follow_waypoints. WASM channels: 2 twist components.
The agent needs an LLM to reason about tasks and generate control code. Set the API key for your provider:
Anthropic (Claude)
OpenAI (GPT-4)
Google (Gemini)
Ollama (Local)
export ANTHROPIC_API_KEY=sk-ant-...
Uses Claude by default. Recommended for WASM code generation — Claude produces the most reliable WAT output.export OPENAI_API_KEY=sk-...
Set the provider when launching:export GOOGLE_API_KEY=...
Set the provider when launching:Start the Ollama server (no API key needed):Set the provider when launching:Local models vary in their ability to generate valid WAT code. For best results with WASM controllers, use a cloud provider. Ollama works well for MCP-tool-only workflows.
Verify Everything
Run the built-in diagnostic to check that all dependencies are configured correctly:
This checks for:
- Rust toolchain version
- Docker availability and daemon status
- LLM provider connectivity
- Sim container images on disk
If everything passes, you are ready to start. Head to the Quick Start to control your first robot.