| name | a2a-integration |
| description | Expose orxhestra agents as A2A protocol endpoints or connect to remote A2A agents. |
A2A Integration
A2A Server — expose an agent
from orxhestra import LlmAgent, InMemorySessionService
from orxhestra.a2a import A2AServer, AgentSkill
agent = LlmAgent(name="MyAgent", model=model, tools=[...])
server = A2AServer(
agent=agent,
session_service=InMemorySessionService(),
app_name="my-agent-service",
skills=[
AgentSkill(
id="qa", name="Q&A",
description="Answers general questions.",
tags=["general"],
),
],
)
app = server.as_fastapi_app()
Endpoints
| Method | Endpoint | Description |
|---|
GET | /.well-known/agent.json | Agent Card discovery |
POST | / | JSON-RPC 2.0 dispatch |
JSON-RPC methods
| Method | Description |
|---|
message/send | Send message, receive completed Task |
message/stream | Send message, receive SSE stream |
tasks/get | Retrieve task by ID |
tasks/cancel | Cancel a running task |
A2A Agent — connect to a remote agent
from orxhestra.agents.a2a_agent import A2AAgent
remote = A2AAgent(
name="RemoteAgent",
description="A remote research agent.",
url="http://localhost:9000",
)
async for event in remote.astream("What is quantum computing?"):
print(event.text)
In YAML Composer
agents:
remote_researcher:
type: a2a
description: "Remote research agent"
url: "http://localhost:9000"
orchestrator:
type: llm
tools:
- agent: remote_researcher
main_agent: orchestrator