10000 GitHub - NeelaOrg/a2a-python-aws: Official Python SDK for the Agent2Agent (A2A) Protocol
[go: up one dir, main page]

Skip to content

NeelaOrg/a2a-python-aws

 
 

A2A Python SDK

License PyPI version PyPI - Python Version PyPI - Downloads Python Unit Tests Ask DeepWiki

A2A Logo

A Python library for running agentic applications as A2A Servers, following the Agent2Agent (A2A) Protocol.


✨ Features

  • A2A Protocol Compliant: Build agentic applications that adhere to the Agent2Agent (A2A) Protocol.
  • Extensible: Easily add support for different communication protocols and database backends.
  • Asynchronous: Built on modern async Python for high performance.
  • Lambda-native: Ships with an AWS Lambda JSON-RPC runtime (including streaming SSE) so you can deploy agents without an HTTP framework.
  • Optional Integrations: Includes optional support for:

🚀 Getting Started

Prerequisites

  • Python 3.10+
  • uv (recommended) or pip

🔧 Installation

Install the core SDK and any desired extras using your preferred package manager.

Feature uv Command pip Command
Core SDK uv add a2a-sdk pip install a2a-sdk
All Extras uv add "a2a-sdk[all]" pip install "a2a-sdk[all]"
gRPC Support uv add "a2a-sdk[grpc]" pip install "a2a-sdk[grpc]"
OpenTelemetry Tracing uv add "a2a-sdk[telemetry]" pip install "a2a-sdk[telemetry]"
Encryption uv add "a2a-sdk[encryption]" pip install "a2a-sdk[encryption]"
Database Drivers
PostgreSQL uv add "a2a-sdk[postgresql]" pip install "a2a-sdk[postgresql]"
MySQL uv add "a2a-sdk[mysql]" pip install "a2a-sdk[mysql]"
SQLite uv add "a2a-sdk[sqlite]" pip install "a2a-sdk[sqlite]"
All SQL Drivers uv add "a2a-sdk[sql]" pip install "a2a-sdk[sql]"

AWS Lambda support is part of the core SDK—no extra installation step required.

🧱 Deploying on AWS Lambda

Use A2ALambdaApplication to run the JSON-RPC server directly inside AWS Lambda. The adapter shares the same transport-neutral processor as the rest of the SDK, so existing handlers keep working; you simply wire the Lambda event to the processor and optionally stream SSE frames via the Lambda response streaming API.

import asyncio

from a2a.server.apps.jsonrpc import A2ALambdaApplication
from my_project.handlers import AgentRequestHandler, agent_card

lambda_app = A2ALambdaApplication(agent_card=agent_card, http_handler=AgentRequestHandler())


async def _async_handler(event, context, response_stream=None):
    result = await lambda_app.handle_event(
        event, context, response_stream=response_stream
    )
    if result is not None:
        return result
    # Streaming responses return None because response_stream was used.
    return {'statusCode': 200, 'body': '', 'headers': {}, 'isBase64Encoded': False}


def handler(event, context, response_stream=None):
    return asyncio.run(
        _async_handler(event, context, response_stream=response_stream)
    )

For Server-Sent Events, enable Lambda response streaming in your function URL or API Gateway integration and pass the provided response_stream parameter to handle_event. The adapter writes text/event-stream chunks for message/stream and tasks/resubscribe so clients receive tokens as soon as they are produced.

Examples

  1. Run Remote Agent

    git clone https://github.com/a2aproject/a2a-samples.git
    cd a2a-samples/samples/python/agents/helloworld
    uv run .
  2. In another terminal, run the client

    cd a2a-samples/samples/python/agents/helloworld
    uv run test_client.py
  3. You can validate your agent using the agent inspector. Follow the instructions at the a2a-inspector repo.


🌐 More Examples

You can find a variety of more detailed examples in the a2a-samples repository:


🤝 Contributing

Contributions are welcome! Please see the CONTRIBUTING.md file for guidelines on how to get involved.


📄 License

This project is licensed under the Apache 2.0 License. See the LICENSE file for more details.

About

Official Python SDK for the Agent2Agent (A2A) Protocol

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.9%
  • Other 0.1%
0