Fig. 01 · Infrastructure for physical AI

RAVN

Self-healing infrastructure for robot fleets. An agent on the robot and a brain on the server detect software failures, propose fixes, and only call a robot fixed once it's actually back at work.

Antler Singapore · Oct 2026
Role
Lead Engineer
Team
2 cofounders
When
2025 – present
Stack
Rust, tonic gRPC + mTLS, C++ rclcpp, ROS 2, Laravel, React, PostgreSQL, Redis Streams, SQLite, protobuf, Claude

01The problem

When a deployed robot fails because of software (a hung node, a bad config, a bad release, lost task state), an engineer has to diagnose and fix it by hand. Fleet tools can restart services, but green services don't mean the robot is doing its job again.

02How RAVN got here

4 versions
  1. v1

    Hardware generation

    Plain English in; schematics, PCB layout, firmware, BOM and fabrication files out. Parts sourced through Digi-Key, Mouser and LCSC, boards handed off to JLCPCB and PCBWay.

  2. v2

    Give your AI a body

    An MCP interface with only three public tools (instruct, autonomous_instruct, check), so outside AI agents could drive a robot without ever touching low-level motion commands. An internal body agent mapped each task to allow-listed tool calls.

  3. v3

    Latency runtime, then downtime

    Two shorter explorations, into robot runtime latency and then fleet downtime, on the way to the current product.

  4. Now

    Self-healing fleets

    Detect software failures on deployed robots, fix them safely, and prove the robot is working again.

03How it works

7 steps
  1. 01 · System moves data

    The robot reports in

    A C++ ROS 2 probe and ravnd, a Rust agent, send compact state snapshots every 2–5 s over gRPC with mTLS, buffering to SQLite when the robot is offline.

  2. 02 · System moves data

    The gateway commits

    A Rust gateway holds one connection per robot, acks only after the Postgres commit, and fans events out through a transactional outbox to Redis Streams.

  3. 03 · Rules decide

    Detection opens an incident

    Deterministic, debounced detectors, so a single bad reading never triggers an action.

  4. 04 · AI proposes

    An investigator proposes a fix

    A Claude agent with read-only tools (fleet view, snapshots, past incidents, robot profile) suggests a root cause and a fix. It can't act.

  5. 05 · Person approves

    An engineer approves

    Any fix the model proposes needs a person. Routine playbooks run in shadow, approve or auto mode, set per playbook.

  6. 06 · Rules decide

    The robot executes safely

    Commands are signed and verified on the robot. A local safety gate refuses to act while the robot is moving or e-stopped, and only allow-listed actions run.

  7. 07 · Rules decide

    Verify the work resumed

    An incident resolves only when the task actually continues, such as reaching the next waypoint. Otherwise it escalates with evidence.

  • AI proposes
  • Rules decide
  • Person approves
  • System moves data

04Hard problems

4 of them
01

“Fixed” has to mean working, not green

Verification checks that the robot's task resumed before an incident closes. The test robot models what it believes separately from what's true, so a robot can look healthy while doing nothing, just like in the field.

02

Testing recovery without real robots

I built a mock ROS 2 warehouse robot (14 systemd services, immutable releases) and a chaos injector that breaks it through real mechanisms instead of flags. A ground-truth scoreboard grades every recovery, and permissions stop the agent from reading it.

03

A thin agent on a secure channel

A private CA issues per-robot mTLS certificates at enrollment. Every command is signed and verified on the robot, and the gateway acks only after commit, so the outbox path loses and duplicates nothing end to end.

04

Keeping the LLM out of the control loop

Detection and playbooks are plain code. The model only runs when an incident opens, only reads, and only proposes.

05By the numbers

Measured in development against simulated robots, Oct 2026.
simulated robots in a load test, every message acked, p99 829 ms
1,000
memory for the on-robot agent, about 2% of a CPU
8 MB
correct investigator decisions on its first live run, $1.29 total
5 / 5
automated tests across the web app and Rust agent
535
  • Accepted into Antler Singapore's residency, Oct 2026
  • Slingshot 2026, top 250
  • Techstars interview

06What I'd do differently

The product changed five times. The engineering held up because each rebuild was disciplined, but I'd sign paying design partners before building the next system, not after. I'd also build the test rig (mock robot, chaos, scoreboard) before any product code. It turned out to be the most valuable thing in the repo.
Next · Fig. 02Direct Beneficiary VerificationVoice-first jobs auditing