Skip to main content
Cerulion Studio is the desktop app you watch your robot in. There is nothing to wire for it: no visualization node in your graph, no config file, no script. Start a graph, check a topic in the sidebar, and its frames render on the stage.
Studio is part of the closed alpha and is distributed during onboarding along with the CLI β€” see Installation.

Before you start

Studio drives the same cerulion CLI you use in a terminal, so the CLI has to be installed and on your PATH. If it is somewhere else, set its path in the sidebar’s settings block β€” Studio tells you which path it tried when it cannot find it.

Attach a topic

1

Run a graph

2

Scan for topics

Studio’s Robots & Topics sidebar lists what it found, grouped into Local (topics on this machine’s shared memory) and Robots (robots discovered on your network). Refresh re-scans.
3

Check the topic you want

Each row has a toggle. Checking it attaches the topic; the stage switches from its empty state to the live scene, and the row shows the archetype and schema the frames were decoded as. Unchecking it detaches the topic again.
Topics that are silent, or whose type cannot be resolved, are still listed β€” Studio reports what it knows about each row rather than hiding it.

Watch a remote robot

A robot on your network appears under Robots with its topic count and locator. Connecting to it pulls its topics to your desk: the frames are re-injected into your machine’s shared memory and decoded here, so the robot ships raw bytes and nothing else. The first connection to a robot needs pairing. Studio prompts for the pairing code shown for that robot, and remembers the result. A robot that discovery cannot reach can be connected by endpoint id instead, from the sidebar’s Connect a robot by endpoint id field.
Verified robots carry a live indicator; unverified candidates are labelled as such, so a name discovered on the network never reads as a confirmed-online robot.
For the underlying network model β€” allow-lists, pairing, and demanding topics from the terminal β€” see Reach remote robots.

Watch a recording

Playback publishes onto local shared memory, so a bag playing back is indistinguishable from a live robot as far as Studio is concerned. Play the bag in a terminal:
and check its topics in the sidebar as usual.
Use plain bag play for this, not --resim. A re-execution deliberately never reads the wall clock β€” it runs as fast as it can β€” so it cannot pace a viewer. See Record and replay a run.

The viewer outlives the app

Studio does not own the decoding. A long-lived cerulion-vizd daemon owns the taps, the decode, and the scene; Studio starts it if it is not already running and speaks to it over a socket. The daemon is started detached, so it keeps running after you close Studio β€” reopening the app reattaches to the same scene instead of rebuilding it. That also means the daemon is shared: Studio, a terminal, and the Studio agent can all attach topics to the same scene.

Next steps

Inspect topics

topic list, echo, and hz for the questions a viewer does not answer.

Reach remote robots

Pairing, discovery, and pulling a robot’s topics to your desk.