ROBOFLEET GUARD • RUNTIME SAFETY FOR LEARNED ROBOT POLICIES

Every action a learned policy takes, checked before it reaches the robot.

VLA and reinforcement-learning policies are probabilistic. They spike, drift past joint limits, and act confidently on observations they were never trained on. RoboFleet Guard sits between the policy and the robot and decides, every control step, whether to pass the action, correct it, or stop it, with a tamper-evident record of why.
ROS2 Jazzy LeRobot v3 datasets NVIDIA Isaac-ready topics SHA-256 audit chain Claude root-cause analysis Open source • MIT
4 / 4Injected faults caught over live ROS2
8Safety checks on every action
30 HzControl loop tested
0Motions originated by the guard

A Safety Layer in the Control Loop

The policy publishes what it wants to do. The guard decides what actually reaches the robot. It never generates motion of its own: it only passes, narrows, or stops what the policy proposed.

Learned Policy

VLA, ACT, diffusion or RL policy proposing joint targets

/policy/joint_command
→

RoboFleet Guard

Safety envelope, out-of-distribution check, and a halt latch only an operator can clear

/guard/status • /guard/reset
→

Robot or Simulator

Hardware or an Isaac Sim joint controller executing the safe command

/joint_command • /joint_states
↳ Hash-chained audit log ↳ Diagnostic findings ↳ AI root-cause analysis ↳ Live fleet dashboard

Three Verdicts on Every Action

Correct what can be corrected. Stop what can't. Record both.

PASS

The action is inside the safety envelope.

Robot receives the action, unchanged.

CLAMP

A joint target is out of range, or the step is faster than the policy's own demonstrations ever moved.

Robot receives a corrected action inside the envelope.

HALT

NaN or infinite output, an effort or workspace breach, an out-of-distribution observation, or a policy that keeps pushing past its limits.

Robot holds its last safe command until a named operator resets the guard.

Limits From Your Data, Evidence for Your Reviewers

Envelope derived from training data

Point the guard at the LeRobot v3 dataset behind a policy, including datasets RoboFleet Nexus exports directly from fleet telemetry. It derives joint ranges, per-step rate limits and an observation baseline: a reviewed starting envelope instead of a blank config file.

robofleet guard fit-baseline ./arm_01_dataset --out guard_config/

A record a safety reviewer can verify

Every clamp, halt and operator reset is written to a SHA-256 hash chain: what the policy proposed, what the guard sent instead, and which rule fired. Editing any past record breaks the chain, and one command proves whether it is intact.

robofleet guard verify-audit audit.jsonl Chain intact: 15 records verified.

Verified Development Run

A six-joint arm and scripted policy run against the guard node over ROS2 Jazzy, cycling through four injected faults every 16 seconds. These are the guard's actual verdicts from that run (October 19, 2026).

Injected faultVerdictWhat the guard reported
One-step action spike on the elbow (+0.8 rad)CLAMPelbow target 2.487 outside [0.590, 1.812]
Policy driving wrist_1 past its limitCLAMPwrist_1 target 0.400 outside [−0.775, −0.023]
wrist_3 encoder slips +1.2 radHALTobservation is 9.8 std devs from training data on wrist_3
NaN in the policy outputHALTpolicy returned NaN/inf for wrist_2
Dashboard event stream showing guard CLAMP and HALT events with the violated limits
The RoboFleet Nexus event stream during the run: each intervention arrives with the limit it violated.
Claude root-cause analysis card citing the halted step, the joint limits and recommended operator actions
Claude's root-cause analysis of the same run, citing the halted step and the limits involved, and advising the operator not to reset the guard until the cause is confirmed.

Who This Is For

🦾

Robotics Teams

Manipulation, AMR and warehouse teams deploying VLA or RL policies who need a guardrail they didn't have to build.

🛡️

Safety Reviewers

People who must sign off on a learned controller and need evidence of what it did and what was stopped.

🧪

Policy Researchers

Researchers who want failure cases captured automatically as data, not reconstructed from memory.

Evidence Status

Each claim is kept at the level the current evidence supports.

ClaimStatus
Catches action spikes, limit drift, encoder slip and NaN output over live ROS2Observed
Halts latch and hold the last safe command until an operator resetObserved
Tamper-evident audit chain detects an edited recordObserved
Envelope and baseline derived from a LeRobot v3 datasetObserved (synthetic demonstrations)
Running in front of a pretrained LeRobot policy in Isaac SimIn progress
Deployment on physical robot hardwareNot yet demonstrated
Functional-safety certificationNot claimed
Important boundary RoboFleet Guard is a software layer. It does not replace hardware e-stops, a certified safety controller, or functional-safety engineering. Its out-of-distribution check uses per-joint statistics: it catches gross faults such as a slipped encoder, while subtler distribution shift needs richer models. Derived envelopes are a starting point that must be reviewed, not certified limits.

Running Learned Policies on Real Hardware?

We're looking for design partners to put the guard in front of their policies and shape what it checks next. The code is open source and runs today against any ROS2 policy that publishes joint targets.