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

# ROS 2 configuration

> Configure peaqOS ROS 2 with a unified YAML file, local wallet registry, MCR API, faucet, and contract addresses.

`peaqos_node` uses the same unified `peaq_robot.yaml` pattern as the rest of the robotics workspace. Keep populated config files out of version control.

## Minimal YAML

```yaml peaq_robot.yaml theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
peaq_os:
  enabled: true

  rpc_url: "https://quicknode1.peaq.xyz"
  api_url: "https://mcr.peaq.xyz"

  faucet:
    base_url: "https://depinstation.peaq.network"
    qr_format: "svg"

  wallet_registry:
    path: "~/.peaq_robot/peaqos_wallets.json"
```

<Note>
  The ROS 2 node signs internally after looking up the local private key by EVM address. Do not pass private keys, mnemonics, or faucet TOTP secrets through ROS topics.
</Note>

## Mainnet contracts

The example config ships current peaq mainnet proxy defaults.

<CardGroup cols={1}>
  <Card title="identity_registry">
    Env override: `IDENTITY_REGISTRY_ADDRESS`

    Mainnet address: `0xb53Af985765031936311273599389b5B68aC9956`
  </Card>

  <Card title="identity_staking">
    Env override: `IDENTITY_STAKING_ADDRESS`

    Mainnet address: `0x11c05A650704136786253e8685f56879A202b1C7`
  </Card>

  <Card title="event_registry">
    Env override: `EVENT_REGISTRY_ADDRESS`

    Mainnet address: `0x43c6AF2E14dc1327dc3cc6c7117D1CD72fffEcbA`
  </Card>

  <Card title="machine_nft">
    Env override: `MACHINE_NFT_ADDRESS`

    Mainnet address: `0x2943F80e9DdB11B9Dd275499C661Df78F5F691F9`
  </Card>

  <Card title="did_registry">
    Env override: `DID_REGISTRY_ADDRESS`

    Mainnet address: `0x0000000000000000000000000000000000000800`
  </Card>

  <Card title="batch_precompile">
    Env override: `BATCH_PRECOMPILE_ADDRESS`

    Mainnet address: `0x0000000000000000000000000000000000000805`
  </Card>

  <Card title="machine_account_factory">
    Env override: `MACHINE_ACCOUNT_FACTORY_ADDRESS`

    Mainnet address: `0x4A808d5A90A2c91739E92C70aF19924e0B3D527f`
  </Card>

  <Card title="machine_nft_adapter">
    Env override: `MACHINE_NFT_ADAPTER_ADDRESS`

    Mainnet address: `0x9AD5408702EC204441A88589B99ADfC2514AFAE6`
  </Card>
</CardGroup>

```yaml theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
peaq_os:
  contracts:
    identity_registry: "0xb53Af985765031936311273599389b5B68aC9956"
    identity_staking: "0x11c05A650704136786253e8685f56879A202b1C7"
    event_registry: "0x43c6AF2E14dc1327dc3cc6c7117D1CD72fffEcbA"
    machine_nft: "0x2943F80e9DdB11B9Dd275499C661Df78F5F691F9"
    did_registry: "0x0000000000000000000000000000000000000800"
    batch_precompile: "0x0000000000000000000000000000000000000805"
    machine_account_factory: "0x4A808d5A90A2c91739E92C70aF19924e0B3D527f"
    machine_nft_adapter: "0x9AD5408702EC204441A88589B99ADfC2514AFAE6"
```

## Optional defaults

Use defaults when multiple service calls use the same owner, proxy, or machine wallet.

```yaml theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
peaq_os:
  defaults:
    owner_address: "0xOwner..."
    machine_address: "0xMachine..."
    proxy_address: "0xProxy..."
```

When a matching request field is empty, the node can use these defaults. Production automation should still pass explicit addresses where possible for auditability.

## Operational limits

All zeros disable SDK-side event caps.

```yaml theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
peaq_os:
  operational_limits:
    max_value_per_tx: 0
    rate_limit_max_events: 0
    rate_limit_window_seconds: 0
```

## Base bridge settings

peaq to Base bridge calls use the peaq-side `machine_nft_adapter`. Base to peaq bridge calls additionally require a Base RPC URL and Base Machine NFT address in the service request.

Known Base Machine NFT address:

```text theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
0xee8A521eA434b11F956E2402beC5eBfa753Babfa
```

<Warning>
  Base to peaq bridge calls require Base ETH on the signer wallet for gas.
</Warning>

## Launch

```bash theme={"theme":{"light":"github-light-default","dark":"github-dark"}}
ros2 run peaq_ros2_peaqos peaqos_node --ros-args \
  -p config.yaml_path:=peaq_ros2_examples/config/peaq_robot.yaml
```

Next, use the [service catalog](/peaqos/sdk-reference/ros2/services) or run the [ROS 2 machine runtime guide](/peaqos/guides/ros2-machine-runtime).
