Fleet
Fleet software updates
The operator console at /app/fleet/ota-updates schedules a firmware, software, config, or security_patch row for one robot or the whole fleet. The background worker advances a single row through a simulated status machine; it does not fan out a rollout.
On this page
01 What is shipped
detailsConsole and API create a row
Operators enter firmware_version, update_type (firmware, software, config, security_patch), an optional robot_id (omit for entire fleet), and rollout_percentage 0-100. Statuses are pending, downloading, installing, completed, failed, and rolled_back.
The worker is a simulator
OTAUpdateWorker advances that one row and uses :rand.uniform(100) <= 90 to decide success. It never reads rollout_percentage and never fans the update out to member robots. Treat rollout_percentage as stored metadata, not a shipped rollout contract.
List filters are nested
GET /api/v1/operator/ota-updates validates params["filter"] only. ?status=pending is ignored; use filter[status], filter[update_type], and filter[robot_id].
Related docs
see also