ROAR Protocol — Python SDK. Standalone implementation of the 5-layer agent communication standard.
Project description
roar-sdk
ROAR Protocol — Python SDK. 5-layer agent communication standard.
Design by @kdairatchi — ProwlrBot/roar-protocol
Install
pip install roar-sdk # core: types, client, server (pydantic only)
pip install 'roar-sdk[http]' # + httpx for HTTP transport
pip install 'roar-sdk[websocket]' # + websockets transport
pip install 'roar-sdk[ed25519]' # + Ed25519 signing (cryptography)
pip install 'roar-sdk[server]' # + fastapi + uvicorn for serving
pip install 'roar-sdk[server,ed25519]' # full stack
Quick Start
from roar_sdk import AgentIdentity, ROARMessage, MessageIntent, ROARClient, ROARServer
# Layer 1: identity
agent = AgentIdentity(display_name="my-agent", capabilities=["code"])
# Layer 4: build and sign a message
msg = ROARMessage(
**{"from": agent, "to": other},
intent=MessageIntent.DELEGATE,
payload={"task": "review"},
)
msg.sign("shared-secret")
# Layer 3: send over HTTP
client = ROARClient(agent, signing_secret="shared-secret")
response = await client.send_remote(
to_agent_id=other.did,
intent=MessageIntent.DELEGATE,
content={"task": "review"},
)
What's in the Box
| Module | What it gives you |
|---|---|
AgentIdentity, AgentCard |
Layer 1 — W3C DID-based agent identity |
AgentDirectory, SQLiteAgentDirectory |
Layer 2 — in-memory and persistent discovery |
ROARHub |
Layer 2 — federated hub with REST API |
DiscoveryCache |
Layer 2 — TTL+LRU discovery cache |
ROARClient, ROARServer |
Layer 3 — HTTP client and server |
create_roar_router |
Layer 3 — FastAPI router (HTTP + WebSocket + SSE) |
ROARMessage, MessageIntent |
Layer 4 — unified message format |
sign_ed25519, verify_ed25519 |
Layer 4 — asymmetric signing |
DelegationToken, issue_token |
Layer 4 — scoped capability grants |
EventBus, StreamFilter |
Layer 5 — real-time event streaming |
IdempotencyGuard |
Layer 5 — deduplication |
DIDDocument, DIDKeyMethod, DIDWebMethod |
Identity — W3C DID documents |
AutonomyLevel, CapabilityDelegation |
Identity — graduated autonomy model |
MCPAdapter, A2AAdapter, ACPAdapter |
Adapters — MCP, A2A, ACP bridges |
detect_protocol |
Adapters — auto-detect incoming protocol |
Server Example
from fastapi import FastAPI
from roar_sdk import AgentIdentity, MessageIntent, ROARMessage, ROARServer
from roar_sdk.router import create_roar_router
identity = AgentIdentity(display_name="code-reviewer", capabilities=["code-review"])
server = ROARServer(identity, signing_secret="shared-secret")
@server.on(MessageIntent.DELEGATE)
async def handle_delegate(msg: ROARMessage) -> ROARMessage:
return ROARMessage(
**{"from": server.identity, "to": msg.from_identity},
intent=MessageIntent.RESPOND,
payload={"review": "LGTM"},
context={"in_reply_to": msg.id},
)
app = FastAPI()
app.include_router(create_roar_router(server, rate_limit=60))
# uvicorn main:app --port 8089
Protocol Adapters
from roar_sdk import MCPAdapter, A2AAdapter, ACPAdapter
from roar_sdk.adapters.detect import detect_protocol, ProtocolType
# Auto-detect incoming format
protocol = detect_protocol(raw_json)
if protocol == ProtocolType.MCP:
msg = MCPAdapter.mcp_to_roar(tool_name, params, agent)
elif protocol == ProtocolType.A2A:
msg = A2AAdapter.a2a_task_to_roar(task, sender, receiver)
elif protocol == ProtocolType.ACP:
msg = ACPAdapter.acp_message_to_roar(acp_msg, ide, agent)
Links
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
roar_sdk-0.3.2.tar.gz
(39.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
roar_sdk-0.3.2-py3-none-any.whl
(53.9 kB
view details)
File details
Details for the file roar_sdk-0.3.2.tar.gz.
File metadata
- Download URL: roar_sdk-0.3.2.tar.gz
- Upload date:
- Size: 39.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
096e49e76d2cd47bf479c0e3298274e7fa08c51d159c88e1e4933b68e69af4ec
|
|
| MD5 |
5d5346b8ab42781ae4c7e0fae49aca78
|
|
| BLAKE2b-256 |
0ecba99924ac5c81a6d4a72936ffaead4a851dedca0ad89a6892b454a0d7437c
|
File details
Details for the file roar_sdk-0.3.2-py3-none-any.whl.
File metadata
- Download URL: roar_sdk-0.3.2-py3-none-any.whl
- Upload date:
- Size: 53.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d35c5115d5ab5f0656d3777e95b5e3f9b2301f0bf1803b812133f2cc463de09c
|
|
| MD5 |
782cbd022c7892e8e3c3e3e78240e902
|
|
| BLAKE2b-256 |
36d20154df1b08ae769908ed4af41bff2191fdf2967dc94196813e481f905c76
|