RewireRewire

Your ROS 2 robot, live in Rerun.

Where we're going.

  1. Rewirethe project · where it's going
  2. Rerunhistory · the model · the gaps
  3. ROS 2 & Rerunfour attempts, and what they ran into
  4. The bridgewhat it does · how it holds up · a live demo

Rewire

the project · where it's going

A project, becoming a company.

Vision

Every team building machines that act in the physical world has one place to build, deploy and observe them.

Mission

Take the friction out of working with real robots — so the loop from running, to understanding, to shipping is simple and fast.

Built for teams shipping

autonomous mobile robots · humanoids · drones · industrial automation · autonomous driving · embodied AI

One product, shipped: the bridge. Free today, and free forever.

Where that actually is today

Closed source for now. The business model isn't the bridge.

Every layer a robot needs. One shipped.

Shipped
Monitoring
The bridge: a live robot in Rerun, with nothing installed on it.
Next
Deployment
Ship software to a fleet, and roll it back.
Next
Runtime
Run your stack on any robot — ROS, or not.
Next
Storage
Applications, robot descriptions and models — versioned and shared.

Rerun

history · the model · the gaps

Where it came from.

2022
Founded, Stockholm
Nikolaus West, Emil Ernerfeldt and Moritz Schiebold — ex-Volumental, productizing the visualization tooling they had built there.
Feb 2023
v0.2.0 — open sourced
Dual MIT / Apache-2.0.
0.9–0.19
The model settles
Archetypes, the C++ SDK, blueprints, the chunk store, dataframes.
0.25–0.29
Robotics data, offline
MCAP support, reflection-based ROS 2 decoding, tf2-shaped coordinate frames, a URDF loader.
0.32 · 2026
Data layer
"Biggest release since open-sourcing" — a unified data layer, and Rerun Hub.

The shape of it.

egui
Ernerfeldt wrote it. The viewer is built on it.
Arrow, end to end
the chunk store is columnar, not a log of calls
$20.2M
$3.2M seed (Costanoa, 2022) · $17M (Point Nine, 2025)
open core
permissive SDK · commercial Hub for catalog and query
~12k stars
and a release every three to four weeks
live
app.rewire.run
loading app.rewire.run…

nuScenes — lidar, cameras and radar from a drive. Grab it and move the camera.

Entities are folders. Components are files.

An entity-component system — with a time axis bolted through it.

/world
/robotTransform3D
/cameraImagePinhole
/lidarPoints3D
archetypePoints3D
componentdatatype
Position3DVec3D
ColorRgba32
RadiusFloat32
every file, stampedros_timelog_timeframe
and what you see

3D · 2D · Time series · Text log · Map · Graph · Dataframe

Every view is a query over that tree — and the layout is data too, so two people can watch the same stream completely differently.

Scope decisions, not failures.

Rerun is a viewer and a log format. It has never claimed to be a middleware.

what it owns
The viewerand the blueprint that drives it
A log formatcolumnar Arrow chunks, on disk as .rrd
Time-aware queriesscrub, replay, re-plot, export
Offline ingestMCAP, decoded by schema reflection
what it leaves
Live data sourcesimporters are file-path triggered by design
An official ROS 2 bridgeon the public roadmap, under “longer term”
Data bigger than RAM“cannot yet view more data than fits in RAM” · experimental since 0.36
The web viewer past ~2 GiB32-bit wasm · experimental catalog since 0.36
A stable API23 migration guides, 0.9–0.39. No 1.0

Everything on the right is a documented decision — which is exactly why the interesting work sits at the edge: getting live robot data in, without asking the robot for permission.

ROS 2 & Rerun

four attempts, and what they ran into

Four attempts.

examples/python/ros_node
in-tree · Python
alive, and a toy
“mostly a toy example”, says its own README. Needs a full ROS 2 install.
cpp-example-ros-bridge
ROS 1 · C++
archived · 2024
ROS 1 reached end of life in May 2025.
cpp-example-ros2-bridge
C++ · created April 2024
proof of concept
Pinned to Rerun 0.23. Last functional commit, July 2025.
rerun-ros
“a production grade ROS bridge in Rust”
archived · Jan 2026
5 commits, all in one week of September 2024. No releases, ever.

“We are in the process right now of hiring someone who will own the ROS 2 integration full time. There will be a bridge but there were some technical maturity issues with the approach in this repo.”

Nikolaus West, Co-founder & CEO, Rerun

rerun-io/rerun-ros issue #14 · 1 April 2025

6 / 121common_interfaces types the C++ bridge covers, after two years

MCAP. Offline, and good.

ROS 2 messageRerun archetype
sensor_msgs/ImageImage · DepthImage
sensor_msgs/CompressedImageEncodedImage
…/CompressedImage (h264)VideoStream
sensor_msgs/CameraInfoPinhole
sensor_msgs/PointCloud2Points3D
sensor_msgs/NavSatFixGeoPoints
tf2_msgs/TFMessageTransform3D
geometry_msgs/PoseStampedInstancePoses3D
ROS 2 messageRerun archetype
std_msgs/Header.frame_idCoordinateFrame
sensor_msgs/MagneticFieldArrows3D
sensor_msgs/Temperature, +3 moreMeasurements
sensor_msgs/Imu, +4 moreScalars
std_msgs/StringTextDocument
rcl_interfaces/LogTextLog
nav_msgs/OccupancyGridGridMap
nav2_msgs/VoxelGridVoxelGridMap

16 modalities onto real archetypes. Everything else falls back to schema reflection — queryable, not drawn. ROS 1, never.

While the robot runs
No path in.
After it stops
rosbag2.mcaprerun

Every row lands on the right of that line — and getting there needs rosbag2, which means ROS 2 on the robot.

What else you'd reach for.

ToolWhat it needs on the robot
rviz2a full ROS 2 install · matching distro
rosbag2 + replayROS 2 to record · ROS 2 to open
foxglove_bridgea ROS package · apt install or colcon build
custom Python scriptsrclpy · your afternoon, every time
rewirenothing

Foxglove's viewer is ROS-free — its bridge isn't. That's the distinction worth being precise about.

And these aren't mutually exclusive: rviz for the control loop you're debugging, rewire for the recording you send to someone who has no ROS at all.

The bridge

what it does · how it holds up · a live demo

It listens. You see.

A running graph
Your robot is already broadcasting on the wire — DDS and Zenoh.
Rewire
Listens, maps every message to a Rerun archetype, and streams it on.
Live in Rerun
The full 3D scene, in seconds — no file, no replay, no waiting.

It never joins your graph. Rewire is a passive observer on the wire — norclcpp, no setup.bash, no ROS install, no load on your nodes.

0
ROS 2 installs
0
colcon builds
2
static binaries — rewire + rewire-viewer

Everything, from one command.

Sensors, geometry, nav, TF and the URDF map to Rerun archetypes on their own.

74 built-in types

The same conventions Rerun uses for MCAP

Any custom message, mapped in JSON5. No code, no recompile.

Your own types

Scaffolded from your live graph

A recorded bag runs through the same mappings as the live bridge — at recorded pace, or as fast as the machine allows.

Bag playback

rewire play · MCAP in, viewer or .rrd out

Watches itself
Per-topic Hz, bandwidth, drops and latency — logged as Rerun entities.
Never drops the tree
Buffered relay: late viewers see history, reconnects replay TF and URDF.
DDS and Zenoh
Both transports at once, Humble through Lyrical.
A tap for everything
WebSocket + REST stream every topic to anything that isn't Rerun.

74 types. Zero config.

Point it at a graph and sensors, geometry, nav, the TF tree and the URDF map to Rerun archetypes on their own — the same conventions Rerun uses for MCAP.

sensor_msgs16
geometry_msgs15
std_msgs14
example_interfaces14
nav_msgs4
visualization_msgs3
geographic_msgs3
vision_msgs2
tf2_msgs1
ROS 2 typeRerun archetype
sensor_msgs/ImageImage · DepthImage
sensor_msgs/CompressedImageEncodedImage · VideoStream
sensor_msgs/PointCloud2Points3D
sensor_msgs/CameraInfoPinhole
nav_msgs/OccupancyGridGridMap
nav_msgs/OdometryInstancePoses3D · Ellipsoids3D · Scalars
sensor_msgs/Temperature, +4 moreMeasurements
tf2_msgs/TFMessageTransform3D · CoordinateFrame
String on /robot_descriptionAsset3D

Your types. No code.

Every proprietary message is just fields. Point each one at a Rerun archetype in a small JSON5 file — and it renders like a built-in.

Rewire scaffolds that file from your live graph, so you only fill in the archetypes. Built-ins can't be shadowed — a bad mapping can't quietly break /tf.
my_robot/MotorStatusRerun
temperatureScalars
rpmScalars
status_textTextLog
positionPoints3D
Leaf
one value, one simple archetype
Composite
many fields into Points3D, Boxes2D…
Expansion
iterate a list with each
Nested
recurse into sub-messages

The bridge watches itself.

Hzmessages per second
Bandwidthbytes per second
Dropscumulative — catches QoS mismatches
Latencysmoothed, wire to viewer

Every metric is a Rerun entity — plotted on the same timeline as your robot's data, in the same recording.

Topic Hz30 Hz to 0
Drops+128
same instant

A publisher outpaces the queue: Hz craters, drops jump. One scrub bar shows both.

Join late. See everything.

Robot 1
Robot 2
…the fleet
Relay
a buffered hub · embedded by default
Rewire viewer
Browser viewer
…every laptop in the room
Buffered history
A viewer that joins late still sees what happened before it connected.
Auto-reconnect
Viewer or relay can restart — the stream keeps going, no manual step.
Replays the tree
Latched TF, coordinate frames and the URDF replay on reconnect — never a stump.

Speaks the wire. Both stacks.

No rmw, no middleware to match. Rewire reads the transport itself — and it reads both at the same time.

DDSFastDDS · CycloneDDS
Zenohrmw_zenoh
Rewire
discovers and bridges both, together
One Rerun view

Humble · Jazzy · Kilted · Lyrical · Rolling
one binary

Wired on one subnet, DDS is fine. The moment it's WiFi, a VPN or robot-to-cloud — where multicast dies — point it at a Zenoh router instead. Same command, one flag.

Live demo.

A racing drone, at 16 m/s.

FlightA2RL racing drone through real gates, in a gymnasium
OnboardJetson Orin NX · tilted RGB camera · IMU
SoftwareROS 2 · Aerostack2 · gate detection · in-house controller
DataA real rosbag, played back at recorded speed

Rewire finds every topic on its own and streams it into Rerun in real time.

What to watch

No config. No topic list.

Data: Computer Vision and Aerial Robotics group (CVAR), Universidad Politécnica de Madrid

Acknowledgements.

Conference attendance

My attendance at this conference was supported by SHEREC — Safe, Healthy and Environmental Ship Recycling — funded by the European Union under Horizon Europe.

Grant agreement 101136056 · HORIZON-CL4-2023-HUMAN-01-CNECT

Data and collaboration

The Computer Vision and Aerial Robotics group (CVAR), Universidad Politécnica de Madrid — for the racing-drone flight in the demo, and for Aerostack2.

Rewire is independent: it is not affiliated with, endorsed by or sponsored by Rerun Technologies AB. Rerun is a trademark of Rerun Technologies AB; ROS and ROS 2 are trademarks of Open Robotics.

RewireRewire

Ready to see your robot?

One command to install. One command to visualize.

Newv0.14.0 · macOS & Linux

curl -fsSL https://rewire.run/install.sh | sh

Questions or feedback? github.com/rewire-run/rewire/discussions