v0.3.2 · MIT · Python + TypeScript
How agents
talk to each other.
A 5-layer communication standard for autonomous AI agents. Identity, routing, signing, streaming — one unified protocol.
Architecture
5 layers. One protocol.
ROAR is what TCP/IP is to computers — a stack that solves identity, discovery, signing, transport, and streaming at each layer independently.
L1
Identity
W3C DID-based agent identity with Ed25519 key pairs. Every agent has a verifiable DID and can sign its messages.
L2
Discovery
Federated hub network for agent registration and lookup. Challenge-response proof-of-possession prevents TOFU attacks.
L3
Delegation
Ed25519-signed delegation tokens with capability scoping, expiry, and use-count limits. Secure, non-forgeable authority chains.
L4
Exchange
Unified ROARMessage format over HTTP, WebSocket, stdio, or gRPC. HMAC-authenticated with replay protection and timestamp validation.
L5
Streaming
First-class stream events for real-time task updates and partial results — no polling required.
Features
Built to interoperate.
ROAR doesn't replace MCP, A2A, or ACP — it bridges all three.
Verifiable identity
Every agent message is signed. Every delegation token is cryptographically bound to the delegator's key.
Federated discovery
Hubs sync with peers. Agents can be discovered across a distributed network without a central registry.
Transport-agnostic
Same message format over HTTP, WebSocket, stdio, or gRPC. Switch transports without changing your agent logic.
MCP + A2A bridges
Built-in bridges to Model Context Protocol and Agent-to-Agent protocols. Speak the language your tools already use.
Replay protection
Strict timestamp windows, nonce tracking, and directional validation prevent replayed or intercepted messages.
Two SDKs
Python and TypeScript reference implementations. Same spec, same wire format, tested against shared golden fixtures.
Quickstart
Start in minutes.
Spin up an agent server, register it with a hub, and start exchanging signed messages.
from roar_sdk import AgentIdentity, ROARServer, ROARMessage, MessageIntent # Each agent gets a unique DID-based identity identity = AgentIdentity(display_name="my-agent", capabilities=["summarize"]) server = ROARServer( identity=identity, host="0.0.0.0", port=8089, signing_secret="shared-secret", ) @server.on(MessageIntent.DELEGATE) async def handle(msg: ROARMessage) -> ROARMessage: return ROARMessage( **{"from": server.identity, "to": msg.from_identity}, intent=MessageIntent.RESPOND, payload={"result": "done"}, ) server.serve() # FastAPI + uvicorn
import { AgentIdentity, ROARServer, MessageIntent } from "@roar-protocol/sdk"; // Each agent gets a unique DID-based identity const identity = new AgentIdentity({ displayName: "my-agent", capabilities: ["summarize"], }); const server = new ROARServer({ identity, host: "0.0.0.0", port: 8089, signingSecret: "shared-secret", }); server.on(MessageIntent.DELEGATE, async (msg) => ({ from: server.identity, to: msg.fromIdentity, intent: MessageIntent.RESPOND, payload: { result: "done" }, })); await server.serve();
Installation
Install the SDK.
Available on PyPI and npm. Include the ed25519 extra in production — delegation signatures require it.
Python (PyPI)
pip install "roar-sdk[server,ed25519]"
TypeScript (npm)
npm install @roar-protocol/sdk
Resources
Explore further.
GitHub
Spec, SDK source, reference implementations, and open issues.
→ github.com/ProwlrBot/roar-protocol
PyPI
roar-sdk package — changelog, versions, and install stats.
→ pypi.org/project/roar-sdk
Docs
Full API reference, usage guides, and integration examples.
→ INSTALL.md
ProwlrBot
The first ROAR-native autonomous agent, running in production.
→ app.prowlrbot.com
FAQ
Common questions.
What is ROAR Protocol?
ROAR is a 5-layer communication standard for autonomous AI agents:
identity, discovery, delegation, exchange, and streaming.
Is ROAR open source?
Yes. The spec and SDKs are MIT-licensed in the
roar-protocol repository.
How do I run a hub?
Use the reference hub in the repo, or the hosted hub at
https://roar-hub.fly.dev for experiments.