Skip to contentCerulion
Backed by Y Combinator

Cerulion gives AI agents a harness to control real robots.

Our open-source runtime and harness give any AI agent a physical body, inside safety limits the robot enforces, and tools to autonomously debug recorded robot failures. It's ROS 2 compatible.

Built on a zero-copy Rust runtime: 4.08 µs round trip at 1 MiB, vs 10,952 µs on ROS 2 Jazzy defaults.One Linux x86-64 desktop, round-trip median at 100 Hz, recording on, Sep 2026. Benchmarks

Your agent asks.The robot checks.

cerulion-rcpd is an MCP server on the robot. Your agent calls only the tools you declare in rcp.yaml. The robot checks argument limits, safety classes and an e-stop latch, and keeps a receipt for every call.

Next release, not v1.0.0. Shown today on a simulated arm. How it works

Debug recorded failures · Flashback

Keep the moments around a failure.

Flashback saves recent robot history as MCAP, on a runtime fault or on demand.

Capture on demand

cerulion flashback

Read the run.See the evidence.

Hindsight (early access) finds the moment.
Studio shows the frame.

MCAP

Hindsight + Studio

Example agent exchange

You

What happened here?

Hindsight + Studio
Cerulion Studio: Mitsubishi robot arm, synchronized camera feed, topic list, and joint plots.

New code.Same inputs.

Re-run a supported native recording. Exit 1 names the topic that changed.

Terminal · example
$ cerulion bag play run.mcap \ --resim all --verify

Keep the runin CI.

Supported native recordings, in CI, to the tolerance you set.

CI · example
$ cerulion bag play run.mcap \ --resim all --verify \ --tolerance tolerance.yaml

One payload. Many workers.

Local processes read the same
shared-memory bytes.

A single point-cloud payload floating above shared memory.Shared memory

Why the harness can stay on

Fast enough to stay safe.

Recording stays on while the robot runs. The zero-copy Rust runtime keeps the median round trip between 4.07 and 4.43 µs from 64 B to 16 MiB.

Median round trip, lower is faster. Cerulion multi-process against ROS 2 Jazzy defaults.
Message sizeCerulion multi-process, p50ROS 2 Jazzy defaults, p50
64 BControl message4.07 µs311 µs
1 MiBCamera frame4.08 µs10,952 µs
16 MiBDense sensor frame4.43 µs103,854 µs

About 2,700× faster than ROS 2 Jazzy defaults at 1 MiB (4.08 µs vs 10,952 µs, multi-process p50).

One Linux x86-64 desktop, round-trip median at 100 Hz, recording on, Sep 2026. One machine, not a guarantee. The benchmark times the transport.

Back to the robot.

Bring your agent. ROS 2 Jazzy nodes run on rmw_cerulion today.