> ## Documentation Index
> Fetch the complete documentation index at: https://bedrockdynamics.studio/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Local Mode

> Run roz directly from the CLI — no server deployment needed.

Local mode is the fastest way to use roz. The CLI runs the agent loop directly in your process — no roz-server, no database, no NATS to set up. You bring your own LLM API key (or use Ollama for fully offline operation), and roz handles the rest.

<Note>
  "Local mode" means **no roz-server in the middle** — the CLI runs the agent directly. The agent still makes HTTP calls to your LLM provider (Anthropic API, OpenAI API, or Ollama on `localhost:11434`) and connects to sim containers via MCP (HTTP) and the gRPC bridge. "Local" refers to the orchestration, not the network.
</Note>

## How It Works

```
roz-cli → roz-local → roz-agent → LLM provider (HTTP)
                                 → roz-copper → sim container (MCP + gRPC bridge)
                                              → real robot (MAVLink / ROS 2 / Zenoh)
```

* **roz-cli** accepts your natural language input and renders the TUI.
* **roz-local** orchestrates the session in your process (no roz-server needed).
* **roz-agent** calls the LLM provider via HTTP, generates WASM controllers, and dispatches MCP tool calls.
* **roz-copper** executes WASM controllers at 100Hz and manages the channel interface.
* The target is either a **sim container** (Docker, for development) or a **real robot** (connected via MAVLink, ROS 2, or Zenoh).

## Configure Your LLM Provider

roz is provider-agnostic. Set the API key for whichever provider you want to use.

<Tabs>
  <Tab title="Anthropic">
    ```bash theme={null}
    export ANTHROPIC_API_KEY="sk-ant-..."
    ```
  </Tab>

  <Tab title="OpenAI">
    ```bash theme={null}
    export OPENAI_API_KEY="sk-..."
    ```
  </Tab>

  <Tab title="Google">
    ```bash theme={null}
    export GOOGLE_API_KEY="AIza..."
    ```
  </Tab>

  <Tab title="Ollama (Local)">
    No API key needed. Start the Ollama server and pull a model:

    ```bash theme={null}
    ollama serve &
    ollama pull llama3.1:70b
    ```

    Ollama runs entirely on your machine — no internet connection required after the initial model download.
  </Tab>
</Tabs>

## Select a Model

Create a `roz.toml` in your project directory (or `~/.config/roz/roz.toml` for global config) to set the model:

```toml theme={null}
[agent]
provider = "anthropic"        # "anthropic", "openai", "google", or "ollama"
model = "claude-sonnet-4-20250514"  # model name for the chosen provider

[agent.ollama]
url = "http://localhost:11434" # only needed for Ollama
model = "llama3.1:70b"
```

If no `roz.toml` is present, roz defaults to Anthropic Claude Sonnet if `ANTHROPIC_API_KEY` is set, then falls back to OpenAI, Google, and finally Ollama in that order.

## Connect to a Robot

### Simulation (Docker containers)

For development and testing, use pre-built sim containers from Docker Hub. Each bundles Gazebo, the robot's middleware, and an MCP server — no ROS 2 or Gazebo installation needed on your host.

```bash theme={null}
# UR5 manipulator arm
docker pull bedrockdynamics/substrate-sim:ros2-manipulator

# PX4 quadcopter
docker pull bedrockdynamics/substrate-sim:px4-gazebo-humble

# ArduPilot quadcopter
docker pull bedrockdynamics/substrate-sim:ardupilot-gazebo

# Nav2 mobile robot
docker pull bedrockdynamics/substrate-sim:ros2-nav2
```

### Real hardware

For real robots, roz connects directly — no Docker container needed:

* **Manipulators** — connect via ROS 2 (MoveIt2) or your robot's native API
* **Drones** — connect via MAVLink over serial or UDP to the flight controller
* **Mobile robots** — connect via ROS 2 Nav2 or Zenoh

See the [Robots](/roz/robots/manipulator) pages for per-robot connection details and the [Edge Deployment](/roz/deployment/edge) guide for deploying to robot hardware.

## Start a Session

Launch the simulation and start an interactive session:

```bash theme={null}
roz sim start manipulator
roz
```

The CLI connects to the running sim container, discovers the available MCP tools and WASM channels, and presents a prompt. Type natural language commands and the agent handles the rest.

## When to Use Local Mode

Local mode is ideal for:

* **Development and experimentation** — fast iteration with no infrastructure to manage.
* **Offline operation** — pair with Ollama for fully air-gapped environments.
* **Single-robot sessions** — one operator, one robot, one machine.

For multi-user access, persistent session history, or fleet management, see [Self-Hosting](/roz/deployment/self-hosting) or [Roz Cloud](/roz/deployment/cloud). For deploying the agent to robot hardware, see [Edge Deployment](/roz/deployment/edge).
