Mobile robots and drones¶
What Reeflex does not claim here
- Reeflex is not a safety system and must never be described as one. Safety functions are SIL-rated hardware / safety-PLC logic (IEC 61508, ISO 13849). Reeflex is a defence-in-depth layer above the safety PLC, at the agent boundary: it decides whether the agent may issue the command. The SIS stays the last line.
- Supervisory level only. Setpoints, modes, recipes, firmware, missions — not the control loop (milliseconds).
- Verdict ≠ outcome. Reeflex records the decision and the declared magnitude; it does not read sensors. Attest says so, as it does for IT evidence (received vs occurred).
envelope_fractionandsafety_functionare the adapter's declarations. A wrong safe range in a mapping is a wrong verdict — mapping files are controlled documents, and the docs say so.
The situation¶
An operations team lets an agent dispatch a fleet — warehouse AMRs, or inspection drones over a site — through the fleet manager's MCP server: plan a mission, arm a vehicle, start it, adjust its geofence. Reeflex is in the tool path.
What goes wrong without a gate¶
Fleet APIs are designed for a dispatcher who checks the map first. An agent retrying a mission that "failed" because the vehicle was already flying it arms and launches a second one; an agent asked to "inspect the north fence" widens the geofence to reach it. Each call is valid, and each one moves mass in the real world.
Three representative actions¶
Uploading a mission plan to a parked vehicle. A parameter write to a vehicle that is not moving, inside the declared geofence. Allowed, and counted.
Verdict: allow · rule reeflex.policy/default_allow
{
"agent": { "id": "agent:dispatch", "session_id": "sess-fleet-0731" },
"action": { "namespace": "fleet", "verb": "set", "ability": "mission/upload" },
"target": { "kind": "vehicle", "ref": "uav-07", "environment": "production",
"safety_function": false },
"magnitude": { "count": 1,
"physical": { "envelope_fraction": 0.2, "unit": "m",
"requested": 400.0, "range": [0.0, 2000.0] } },
"axes": { "reversibility": "reversible", "blast_radius": "single", "externality": "physical" },
"approval": { "present": false }
}
Arming the vehicle. Arming is a change of operating mode on a live vehicle. R11 holds it for the pilot in command, who can see the airspace and the agent cannot.
Verdict: require_approval · rule reeflex.policy/mode_change_live
{
"agent": { "id": "agent:dispatch", "session_id": "sess-fleet-0731" },
"action": { "namespace": "fleet", "verb": "mode", "ability": "vehicle/arm" },
"target": { "kind": "vehicle", "ref": "uav-07", "environment": "production",
"safety_function": false },
"magnitude": { "count": 1 },
"axes": { "reversibility": "reversible", "blast_radius": "single", "externality": "physical" },
"approval": { "present": false }
}
Moving a geofence boundary past its declared limit. The geofence is the
safe range; a request beyond it has an envelope_fraction above 1.0, and R10a
refuses it in production.
Verdict: deny · rule reeflex.policy/outside_operating_envelope_prod
{
"agent": { "id": "agent:dispatch", "session_id": "sess-fleet-0731" },
"action": { "namespace": "fleet", "verb": "set", "ability": "geofence/set_radius" },
"target": { "kind": "geofence", "ref": "site-north", "environment": "production",
"safety_function": false },
"magnitude": { "count": 1,
"physical": { "envelope_fraction": 1.25, "unit": "m",
"requested": 2500.0, "range": [0.0, 2000.0] } },
"axes": { "reversibility": "reversible", "blast_radius": "single", "externality": "physical" },
"approval": { "present": false }
}
If your vehicles' geofence is enforced on board as a safety function, map it
safety_function: true instead: any change to it is then refused under R8,
inside or outside the range.
How to deploy it¶
reeflex-mcp in front of the fleet manager's MCP server.
The mapping declares arm, disarm, takeoff, land and return-to-home
as mode, and the geofence's limits as the range. The line that matters is
the mode mapping for arm/disarm — it is what puts a person in front of every
vehicle leaving the ground.
What Reeflex does NOT do here¶
- It does not fly or drive anything, and it is not in the vehicle. Collision avoidance, failsafes and return-to-home are on board and act on their own.
- It does not hold a
disarmorlandany less than anarm: R11 holds every mode change on a live vehicle. If you want an agent to be able to land a vehicle without asking, that is a policy edit you make and own. - It does not know where the vehicle is. The geofence range is the mapping's declaration; the position is the fleet manager's.
- A pilot's own ground station is not gated. Reeflex governs the agent's commands, not the pilot's.