A standardized communication protocol for autonomous robots to exchange data, coordinate tasks, and collaborate in real-time environments.
The R2R Protocol enables seamless robot-to-robot interaction across industrial automation, swarm robotics, logistics, and multi-agent systems. It defines structured message formats, negotiation logic, discovery mechanisms, and extensible APIs.
✅ Structured JSON/Protobuf messaging
✅ Supports TCP/IP, UDP, MQTT, WebSocket
✅ Task negotiation (auction, consensus)
✅ Status & telemetry updates
✅ Optional authentication
✅ Extensible via plugins/modules
✅ Docker-ready
✅ GitHub Actions CI/CD integration
✅ Python SDK published on PyPI
Language | Status | Directory |
---|---|---|
🐍 Python | ✅ Stable | sdk/python |
🦀 Rust | ⏳ Coming Soon | — |
🖥️ C++ | ⏳ Coming Soon | — |
🐹 Go | ⏳ Coming Soon | — |
🌐 JavaScript | ⏳ Coming Soon | — |
Want to contribute an SDK in your favorite language? Check out the contributing guide.
+-------------------+
| Monitoring UI |
| (Optional Web App)|
+--------+----------+
|
| (HTTP/WebSocket)
v
+--------+----------+ +----------------------+
| Coordinator Server |<--->| Authentication Module|
| - Task Assignment | | - Token/Cert Support |
| - Robot Discovery | | - TLS Encryption |
| - Negotiation Hub | +-----------+----------+
+--------+----------+ |
| |
| (WebSocket/TCP/MQTT) |
v v
+--------+----------+ +-----------+----------+
| Robot A | | Robot B |
| - robot_id: bot_01 | | - robot_id: bot_02 |
| - Capabilities | | - Capabilities |
| - Status Updates | | - Task Execution |
+--------+------------+ +----------+-----------+
| |
| Send/Receive Messages |
v v
+--------+----------------------------+----------+
| Transport Layer |
| - TCP/IP, UDP, WebSocket, MQTT, ROS2 (future) |
+------------------+------------------------------+
|
v
+------------------+------------------------------+
| Message Processing Layer |
| - Validate JSON/Protobuf |
| - Route messages by type |
| - Handle negotiation, commands, status updates |
+-------------------------------------------------+
|
v
+------------------+------------------------------+
| SDK / Client Library |
| - Python SDK (r2r-protocol
package) |
| - Easy-to-use APIs for sending/receiving |
| - Docker-ready image for testing/deployment |
+-------------------------------------------------+
See the full Protocol Specification.
🔧 Install from PyPI
pip install r2r-protocol
from r2r_protocol import RobotClient
# Connect to R2R server
client = RobotClient(robot_id="bot_01", host="192.168.1.10")
# Send status update
client.send_status({
"battery": 85,
"position": {"x": 10.2, "y": 5.1},
"task_progress": 0.75
})
You can run the R2R SDK in a Docker container:
docker build -t r2r-sdk .
docker run -it r2r-sdk
This will start a sample client instance and verify that the SDK works.
To contribute or extend the protocol:
- Clone the repo
git clone https://github.com/Tech-Parivartan/r2r-protocol.git
cd r2r-protocol
- Set up Python environment
cd sdk/python
pip install -e .
- Install test dependencies
pip install pytest
Run unit tests using:
cd tests
python -m pytest test_messages.py
We welcome contributions! Please read our here to get started.
Ways to Help
- Report bugs and suggest features
- Write more comprehensive tests
- Improve documentation and architecture diagrams
- Build example applications and integrations
Please open an issue before submitting a PR so we can align on scope.
The r2r-protocol is an open-source project by Tech Parivartan, under the Apache License 2.0. See the LICENSE file for details.
Have questions, feature requests, or want to share how you're using R2R-Protocol?
- Open an issue on GitHub
- Join our Discord / Slack (coming soon)
- Email us at [email protected]
- Follow us on Twitter @TechParivartan
- Follow us on LinkedIn Tech Parivartan
- Enhanced security features
- Visualization tools for monitoring robot interactions
- Support for more programming languages
- Improved error handling and logging
- Integration with popular robotics frameworks (ROS, OpenRAVE)