---
title: "wendy cloud device ros2 exec"
description: "Run a raw ros2 CLI command on the device"
---

## Syntax

```sh
wendy cloud device ros2 exec <args>... [flags]
```

## Examples

```sh
  wendy device ros2 exec topic echo /chatter --once
  wendy device ros2 exec topic pub /cmd_vel geometry_msgs/msg/Twist --rate 10
  wendy device ros2 exec --domain 5 node list
```

## Arguments

Argument notation from the CLI: `<args>...`. Angle brackets mark required values; square brackets mark optional values. See Details for command-specific validation.

## Flags

Flags below include inherited options. Types and defaults come from the CLI source. An empty default means no value is configured.

| Flag | Type | Default | Description |
| --- | --- | --- | --- |
| `--broker-url` | string | (empty) | Tunnel broker host:port (default: cloud :443 endpoint, otherwise &lt;cloud-host&gt;:50052) |
| `--cloud-grpc` | string | (empty) | Cloud gRPC endpoint (optional when a default session is set via 'wendy auth use') |
| `--device` | string | (empty) | Target device hostname; `wendy run` accepts a comma-separated list to deploy one build to several devices (needs a remote build host and --detach). Defaults to $WENDY_DEVICE, then the saved default device |
| `--domain` | int32 | `-1` | ROS_DOMAIN_ID override (default: app config, or 0 for the system graph) |
| `--json` | bool | `false` | Output in JSON format |

## Output

Output depends on the operation and selected target. Use the command help for additional guidance..

## JSON output

The global `--json` option requests machine-readable output. The CLI also selects JSON mode when no interactive terminal is attached. Support and payloads are command-specific; this flag does not guarantee a single JSON document for commands that stream logs or invoke build tools. Consult Details before parsing command output.

## Exit codes

The CLI entry point returns `0` on success and for its user-cancelled or default-cleared results. Other returned errors exit with `1` and print a diagnostic to stderr. Some operations may terminate through subprocess or signal handling; do not infer application health from the CLI exit code alone.

## Common errors

Check argument values and flag combinations against the synopsis above. For discovery, build, port, and readiness failures, see [deployment troubleshooting](../../../../../../errors/). Command-specific constraints are in Details.

## See also

- [wendy cloud device ros2](../../../../../../reference/cli/cloud/device/ros2/)
- [CLI conventions and configuration](../../../../../../reference/)

## Details

Run a raw ros2 CLI command inside the device's ROS 2 sidecar.

Everything after the ros2 command word is forwarded verbatim, so --flags
work without escaping. Any wendy flags (--device, --domain) must come before
the ros2 command; use -- to force the rest of the line through unparsed.

Use the command help for additional guidance.
