Skip to main content
Conceptual humanoid vision sensor observing a test object in a robotics lab.
While a graph runs, every wired port becomes a topic you can observe. This guide covers listing and watching live topics — local or on a robot across the network — and the interactive dashboard.
The topic commands use iceoryx2 service discovery, so they work from any directory, no workspace required. Run them in a second terminal while a graph is running.

List and inspect live topics

cerulion topic list prints this machine’s shared-memory topics first, then the robots and topics it discovers on the LAN.
If nothing is publishing, it prints No active local topics. cerulion topic info <topic> prints one topic’s schema and its last sequence number and timestamp:
topic info, echo, and hz each accept a remote robot’s topic too: a name that is not local is discovered on the LAN, demanded for the life of the command, and released when it exits. CERULION_NETWORK=off keeps them local-only.

Watch messages with echo

cerulion topic echo <topic> subscribes and prints each message until you press Ctrl+C.
Echo decodes and prints each message’s fields. Long arrays are truncated at 128 elements with an element count; --truncate-length N changes that.

Measure publish rate

cerulion topic hz <topic> measures how often a topic publishes, until Ctrl+C.
For the periodic camera created with --policy period_ms=33, topic hz should report roughly 30 Hz.

Open the interactive dashboard

cerulion tui launches an interactive terminal dashboard. Logging is suppressed while the TUI is open.

Keep a record instead of watching

echo and hz answer questions about now. To keep the data, record the run to an MCAP bag and inspect it afterwards — see Record and replay a run. To watch the data rather than read it, Cerulion Studio renders live topics as you check them.

Clean up stale services

iceoryx2 keeps on-disk bookkeeping for each node. When a graph’s topology changes between runs, stale entries from dead nodes can cause discovery errors. cerulion clean removes bookkeeping for dead nodes only; live sibling processes are left untouched. It prints cleanup counts and per-cause remediation, and names every node it could not reclaim together with the reason. A node whose only obstacle is a non-empty directory gets its orphan port tags reclaimed, after which the command runs a second sweep and reports that separately. A graph that stops normally already runs a short cleanup pass of its own as it exits, so reach for this command mainly after a run that was killed, or when you want everything cleared at once.
Run cerulion clean if you rewire a graph and then see stale-service errors on the next graph run. It will not disturb a graph that is currently running.

Next steps

Wire and run a graph

Produce the topics you inspect here.

Messages and schemas

Understand the message shapes that echo prints.

Visualize a running graph

Render these topics on the Studio stage instead of reading them.

Reach remote robots

Discovery, pairing, and pulling a robot’s topics to your desk.