Three steps from robot to user.
No backend to write, no VPN to hand out, no second login for your users.
Install the bridge
One apt package per robot, for ROS 2 Humble, Jazzy and Lyrical. It connects to Fleetless and to nothing else.
# on the robot sudo apt-get install ros-jazzy-fleetless-bridge export FLEETLESS_TOKEN=frt_… ros2 launch fleetless_bridge bridge.launch.py
Choose what it exposes
Pick topics, services, actions and cameras in the console. Each gets a name you choose, so renaming a ROS node breaks no app.
Hand it to your users
Create an app, give it roles, invite its users. They sign in through your app, and every way in follows the same roles.
# your users' assistant connects here https://mcp.fleetless.dev/warehouse_dash # your app uses the SDK npm install @fleetless/sdk
One table decides who may do what.
Every app has roles. A role may read, watch, move or call, per robot and per name. The API, the SDK and every assistant ask the same table, and a refusal names the rule that refused.
| Exposed as | observe | operate | shift_lead |
|---|---|---|---|
| battery_percentage | read | read | read |
| camera_front | snapshot | snapshot, live | snapshot, live |
| drive_to | none | start, cancel | start, cancel |
| dock | none | start | start, cancel |
| set_mode | none | none | call |
Every app starts with observe and operate. shift_lead is a role its developer added.
Three ways in. One set of rules.
Your app
REST and realtime, or the TypeScript SDK in the browser and in Node. Your login page, your name on it.
Set mode is greyed out: the role operate may not call it.
Their AI assistant
Switch on your app's MCP server. Your users add it to Claude, ChatGPT or Cursor and ask the robot directly.
How is amr-04 doing?
get_datapoint battery_percentage
87 % and docked at bay 2.
Send it to bay 4.
Not allowed for your role, observe. Ask someone with operate.
Live camera
ROS image topics, RTSP, MJPEG or V4L2, live over WebRTC. One uplink per camera, however many people watch.
Made for the people who own the robot.
ROS on the robot, nothing else
The bridge has no shell, no HTTP server and no access to the system. It speaks ROS 2 on one side and Fleetless on the other.
Robot time, not server time
Every value carries the moment the bridge captured it, so a slow network never rewrites history.
Offline is an answer
A command to a robot that is offline is refused at once. Nothing waits in a queue to fire an hour later.
Hosted in Germany
Fleetless runs in Nuremberg and is GDPR-compliant. On Enterprise, it runs on your own servers.
Start free. Pay when it ships.
Prices in EUR, excluding VAT. Paid plans are for companies; yearly billing saves 15 %.