Connect any robot with 5 lines of Python. Monitor status in real time, stream telemetry, and surface faults before they become failures.
One platform to connect, monitor, and diagnose every robot — from local dev all the way to production at scale.
Status is published the moment it changes — QoS 1 + retain=True so a fresh dashboard load always shows the current state.
Four severity levels, rich metadata, and UUID-based deduplication. QoS 1 retries never create duplicate events in your history.
Stream numeric sensors, GPS coordinates, or free-form JSON. Live sparklines and time-range queries per metric, per robot.
LWT handles clean disconnects. A 75-second watchdog catches power loss, network partitions, and silent crashes that bypass the broker.
Exponential back-off with ±10 % jitter. After every reconnect the last known status is re-published automatically — state never drifts.
TLS-encrypted MQTT, bcrypt API keys, JWT dashboard auth. Org IDs embedded in every topic enable broker-level ACL tenant isolation.
pip install the robotops SDK on your robot hardware. Pure Python, one dependency.
We're in private beta. Request access and we'll email you an API key once your account is provisioned.
Call robot.start() and your robot appears in the fleet dashboard instantly.
Connection management, retries, heartbeats, and LWT happen automatically under the hood. You focus on what your robot does.
start() — no broker host or password in robot code.robot_id creates the fleet entry automatically. No manual registration step.from robotops import RobotClient robot = RobotClient( robot_id="arm-042", org_id="acme-corp", api_key="sk-••••••••••••••••", backend_url="https://api.elementrobotics.xyz", ) robot.start() robot.report_status("online") # Stream sensor data robot.send_telemetry("temp_c", value=motor_temp, unit="C") robot.send_telemetry("location", lat=lat, lng=lng) # Report a fault robot.report_fault( "MOTOR_OVERHEAT", severity="warning", data={"motor": 3, "temp_c": motor_temp}, )