Start rewire, the drop-in bridge that streams live ROS 2 topics into the Rerun viewer, from ros2 launch alongside the rest of your stack.
rewire speaks DDS and Zenoh natively and is not an rcl node, so this package does not build it, wrap it in a node, or expose ROS parameters. It ships a launch file and, on source builds, the bridge and viewer binaries.
curl -fsSL https://apt.rewire.run/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/rewire.gpg
echo "deb [signed-by=/usr/share/keyrings/rewire.gpg] https://apt.rewire.run stable main" | sudo tee /etc/apt/sources.list.d/rewire.list
sudo apt update && sudo apt install ros-humble-rewireSubstitute your distribution for humble. The package depends on rewire, so apt installs the bridge and the viewer from the same repository. One copy of rewire serves every ROS distribution on the machine.
cd ~/ros2_ws/src
git clone https://github.com/rewire-run/rewire-ros.git
cd ~/ros2_ws
colcon build --packages-select rewire
source install/setup.bashThere is nothing to compile. The build downloads the rewire release pinned in sources.json, verifies its SHA-256, and installs the bridge (70 MB) and the viewer (235 MB) into the package. It needs network access to reach the GitHub release. Supported platforms are Linux on x86_64 and aarch64, and macOS on Apple silicon.
| CMake flag | Effect |
|---|---|
-DREWIRE_VIEWER=OFF |
Skip the viewer. Right for a robot that streams to a workstation or records to disk |
-DREWIRE_BINARY=/usr/bin/rewire |
Install a rewire you already have instead of downloading one |
-DREWIRE_BUNDLE=OFF |
Install only the launch file and resolve rewire on PATH. This is how the deb is built |
Pass them through colcon build --cmake-args.
ros2 launch rewire rewire.launch.py # Open a viewer and stream everything
ros2 launch rewire rewire.launch.py connect:=192.168.1.10:9876 # Stream to a viewer on another machine
ros2 launch rewire rewire.launch.py save:=/data/flight args:="--no-live" # Record to an .rrd, no viewer
ros2 run rewire rewire doctor # The full CLI is available too| Argument | Default | Meaning |
|---|---|---|
config |
empty | JSON5 file holding topic filters and per-topic overrides. Empty uses rewire's own default location |
connect |
empty | Rerun viewer or relay to stream to, as host or host:port |
save |
empty | Write an .rrd archive with this path stem |
args |
empty | Extra flags passed through to rewire record verbatim |
Anything not covered by a named argument goes through args, so the whole command line stays reachable.
With connect empty, rewire looks for a viewer already listening and spawns the bundled one if it finds none. A build with -DREWIRE_VIEWER=OFF and an empty connect falls through to a stock Rerun viewer on PATH, so pair that flag with connect or save.
Topic selection, throttling, and per-topic overrides live in rewire's JSON5 config, which supports glob patterns the flags cannot express. This package ships no config of its own. With config left empty, rewire reads ~/.config/rewire/config.json5 when it exists and otherwise runs on defaults, so a config you already use keeps working.
ros2 run rewire rewire config generate > my_robot.json5
ros2 launch rewire rewire.launch.py config:=my_robot.json5Domain ID follows ROS_DOMAIN_ID, and custom message types resolve through AMENT_PREFIX_PATH, so sourcing your workspace is all that is required. The full reference is at docs.rewire.run.
No ROS installation is needed. pixi builds the package with pixi-build-ros against a RoboStack distribution and installs it into the environment:
pixi run check # Build on jazzy, then run the same checks as CI
pixi run -e humble check # Same on humble, kilted, or lyrical
pixi build # Produce a ros-jazzy-rewire .conda packageThe bridge version a source build installs is pinned in sources.json, and moving it is a plain commit. The package has its own version in package.xml and is released only when the package itself changes. Each release publishes the debs to apt.rewire.run, where they depend on whatever rewire is current. Commit messages follow conventional commits.
This package is licensed under the Apache License 2.0, in LICENSE. That covers the manifest, the CMake file, and the launch file.
It does not cover rewire itself. The bridge binary is proprietary and is not redistributed here. This repository contains a URL and a checksum, and your build downloads the binary directly from the rewire releases under rewire's own terms.