Help · Guide

ROS 2 dashboard: see your robot’s health in a browser, offline

You have a ROS 2 robot running, and someone on site needs to know at a glance whether it's okay: battery, status, faults. You don't want a cloud account, and the site network may not have internet at all.

This guide sets up a browser dashboard that runs on the robot's own network in about five minutes.

Your options

Step 1: Run Styri

On the robot, or any Linux machine on the same network:

$ docker run --rm --network host ghcr.io/styri-dev/styri-core:v0.3.0

Open http://localhost:8080 on that machine, or http://<machine-ip>:8080 from any phone, tablet or laptop on the same network.

--network host lets Styri see ROS 2 discovery on your LAN. If your robot uses a non-default ROS_DOMAIN_ID, add -e ROS_DOMAIN_ID=<id>.

Step 2: Map your robot's topics

Styri reads standard topics out of the box. To match your robot exactly, create a styri.yaml:

robot: name: amr-01 battery: topic: /battery_state percentage: percentage percentage_scale: 100 voltage: voltage warn_below: 25 fault_below: 10 status: topic: /robot_status field: data warn: [DEGRADED, LOW_POWER] fault: [ERROR]

Run it with the file mounted:

$ docker run --rm --network host -v "$PWD/styri.yaml:/etc/styri/styri.yaml:ro" ghcr.io/styri-dev/styri-core:v0.3.0

Step 3: Check it before you rely on it

$ docker run --rm --network host -v "$PWD/styri.yaml:/etc/styri/styri.yaml:ro" ghcr.io/styri-dev/styri-core:v0.3.0 styri check

Styri listens for five seconds and prints PASS or FAIL for every mapped field. When a topic name is wrong it suggests the closest match, for example “Did you mean /robot_status?”.

What operators see

Styri Core is read-only: it subscribes to your topics and never publishes to the robot.

Troubleshooting

More in the troubleshooting guide.

FAQ

Does it need internet?
No. Every asset is served locally, and Styri makes no outbound calls.
Does it work with Nav2?
Yes. Nav2 and robot status topics that use standard ROS message types, such as odometry (nav_msgs) or poses (geometry_msgs), map as a field or status. Topics with nav2_msgs types show in the Topics tab with their rate, but their contents can't be read yet, because that package isn't in the image.
Can it show more than one robot?
The free Core shows one robot. The Pilot adds a fleet view for up to five.
Try it free

Styri Core is free and open source. One command.

$ docker run --rm --network host ghcr.io/styri-dev/styri-core:v0.3.0

Rather have it running on your robots this week? We’ll set it up remotely for a fixed price. See Styri Setup →