Overview
Rover Nexus connects your robot to the cloud through a lightweight on-robot agent.
The robot runs the rover-agent on a Linux computer. Your robot software exchanges messages with the agent over a local Zenoh bus using Cap'n Proto serialization. The agent relays those messages to and from the Rover Nexus cloud over mTLS (also Cap'n Proto). You never talk to the cloud directly; you talk to the agent.
See Architecture for the full picture.
The Cap'n Proto wire schema is public, and native client libraries are available for Rust, Python, and C++. See Client Libraries.
Message directions
- Uplink (robot → cloud): telemetry, faults/events, mission feedback, detected objects. Full reference: Uplink Messages.
- Downlink (cloud → robot): mission commands, teleop, mode/velocity commands, settings, field rules, and feature/asset updates. Full reference: Command Messages.
Both reference pages share a Common Types page for geometry, values, spatial features, and enumerations.
Integration paths
Rover Nexus exposes three ways for robot software to integrate with the on-robot agent, in order of directness: Zenoh (primary), a Unix domain socket, and the ROS 2 Bridge. For Rust, Python, or C++ robots, a client library wraps the messaging contract for you.
| Path | Best for | How it works |
|---|---|---|
| Zenoh messaging | Native / non-ROS robots that can embed Zenoh + Cap'n Proto | Your software publishes/subscribes the local Zenoh topic contract directly. The most direct path; see Custom Integrations. |
| Unix Domain Socket | Native robots on the same host as the agent | The agent exposes its local Cap'n Proto hop over a Unix domain socket as a drop-in alternative to Zenoh. Same messages, selected by config. The ready-made Python and C++ client libraries connect over this hop. |
| ROS 2 Bridge | Robots already running ROS 2 | An external bridge translates ROS 2 (DDS) topics ↔ the local Zenoh Cap'n Proto topics the agent consumes. |
Client libraries. Client libraries for Rust, Python, and C++ give you the Cap'n Proto message types so you don't hand-roll serialization. The ready-made Python and C++ transport clients connect over the Unix domain socket hop; for Zenoh, pair a library's types with a Zenoh session you create.
How to choose
- Custom controller, no ROS 2? Implement the Zenoh topic contract directly: the primary, native surface. See Custom Integrations.
- On the same host as the agent? You can run the local hop over a Unix domain socket instead of Zenoh, carrying the same messages and selected by config. The Python and C++ client libraries connect over it out of the box, so this is the quickest turnkey path in those languages.
- Running ROS 2 already? Use the ROS 2 Bridge; it requires no message-level coding.
Both transports carry identical Cap'n Proto messages and the same coordinate-frame behavior; the choice is a configuration setting, not a different contract.
What you provide
- A Linux computer on the robot to host the agent (see Supported Platforms).
- Robot configuration and declared capabilities.
- A mapping from your robot's data onto the agent's telemetry and command messages.
- If your robot localizes in a local frame, a configured local origin so the agent can bridge it to WGS84 (see Coordinate Frames).
Next steps
- Review Supported Platforms.
- Read the Architecture and Coordinate Frames.
- Configure the robot (config, capabilities, cameras).
- Wire up messaging via your chosen path, using a client library or implementing the contract directly.