Skip to main content
Deploy agents as A2A servers for agent-to-agent communication.

CLI

pip install "praisonaiagents[api]"
export OPENAI_API_KEY="your-key"

Python

from praisonaiagents import Agent
from praisonaiagents.ui.a2a import A2A
from fastapi import FastAPI
import uvicorn

agent = Agent(
    name="Assistant",
    role="Helpful AI Assistant",
    goal="Help users with their questions",
    llm="gpt-4o-mini"
)

a2a = A2A(
    agent=agent,
    url="http://localhost:8000/a2a"
)

app = FastAPI()
app.include_router(a2a.get_router())

uvicorn.run(app, host="0.0.0.0", port=8000)
Expected Output:
INFO:     Started server process
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000
Verify:
curl http://localhost:8000/.well-known/agent.json
Expected Response:
{
  "name": "Assistant",
  "description": "Helpful AI Assistant",
  "url": "http://localhost:8000/a2a",
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": false
  }
}

agents.yaml

A2A server mode is Python-only. Use the Python SDK to create A2A servers.

A2A Endpoints

EndpointMethodDescription
/.well-known/agent.jsonGETAgent Card for discovery
/a2aPOSTJSON-RPC messages
/statusGETServer status

A2A Parameters

ParameterTypeDefaultDescription
agentAgent-PraisonAI Agent instance
agentsAgents-Multi-agent workflow
namestragent.nameA2A endpoint name
descriptionstragent.roleAgent description
urlstrhttp://localhost:8000/a2aA2A endpoint URL
versionstr1.0.0Version string
prefixstr""URL prefix

Send A2A Message

curl -X POST http://localhost:8000/a2a \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "message/send",
    "id": "1",
    "params": {
      "message": {
        "role": "user",
        "parts": [{"type": "text", "text": "Hello!"}]
      }
    }
  }'
Expected Response:
{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "message": {
      "role": "agent",
      "parts": [{"type": "text", "text": "Hello! How can I help you?"}]
    }
  }
}

Python Client

import requests

# Get Agent Card
response = requests.get("http://localhost:8000/.well-known/agent.json")
agent_card = response.json()
print(f"Agent: {agent_card['name']}")

# Send Message
message = {
    "jsonrpc": "2.0",
    "method": "message/send",
    "id": "1",
    "params": {
        "message": {
            "role": "user",
            "parts": [{"type": "text", "text": "Hello!"}]
        }
    }
}
response = requests.post("http://localhost:8000/a2a", json=message)
print(response.json())

Troubleshooting

IssueFix
Port in uselsof -i :8000
Missing depspip install "praisonaiagents[api]"
No API keyexport OPENAI_API_KEY="your-key"
Agent Card 404Check router is included in app