PHPackages                             andreibesleaga/a2a-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. andreibesleaga/a2a-php

ActiveLibrary[API Development](/categories/api)

andreibesleaga/a2a-php
======================

A2A (AI Agent-to-Agent) Protocol PHP SDK

v0.9.0-beta(7mo ago)1191Apache-2.0PHPPHP ^8.0CI passing

Since Jul 10Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/andreibesleaga/a2a-php)[ Packagist](https://packagist.org/packages/andreibesleaga/a2a-php)[ Docs](https://github.com/andreibesleaga/a2a-php)[ RSS](/packages/andreibesleaga-a2a-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (11)Versions (17)Used By (0)

A2A PHP SDK
===========

[](#a2a-php-sdk)

A PHP implementation of the A2A (Agent-to-Agent) Protocol v0.3.0. The repository includes a fully compliant sample server, strict JSON-RPC validation logic, task management utilities, streaming support, and push notification handling.

Quick start
-----------

[](#quick-start)

```
# Install dependencies
composer install

# Start the reference server
php -S localhost:8081 examples/complete_a2a_server.php

# (Optional) expose an authenticated extended card
export A2A_DEMO_AUTH_TOKEN="example-secret"
```

The server exposes the JSON-RPC endpoint at `http://localhost:8081/` and publishes the agent card at `http://localhost:8081/.well-known/agent-card.json`.

Compliance status
-----------------

[](#compliance-status)

CategoryResultMandatory25 / 25 tests passingCapability14 / 14 tests passingQuality12 / 12 tests passingFeatures15 / 15 tests passingResults are produced with the official [A2A Test Compatibility Kit](https://github.com/a2aproject/a2a-tck) using `python3 run_tck.py --category all`.

Implementation highlights
-------------------------

[](#implementation-highlights)

- Strict JSON-RPC 2.0 validation with precise error codes for malformed requests, invalid identifiers, or incorrect parameter payloads.
- Task lifecycle support with history, metadata, artifact persistence, and idempotent cancellation semantics.
- Server-Sent Events streaming, including the `tasks/resubscribe` snapshot feed that replays history before emitting the current task status.
- Push notification configuration management with consistent list, get, set, and delete behaviour backed by the shared storage layer.
- Authenticated extended agent card endpoint gated by the `A2A_DEMO_AUTH_TOKEN` environment variable for demonstration purposes.

Reference server methods
------------------------

[](#reference-server-methods)

MethodDescriptionNotes`get_agent_card`Returns the public agent card.JSON-RPC response.`agent/getAuthenticatedExtendedCard`Returns the extended card when `Authorization: Bearer` or `X-API-Key` matches `A2A_DEMO_AUTH_TOKEN`.JSON-RPC response.`message/send`Processes an inbound message and returns the task snapshot.Validates message parts and metadata.`message/stream`Starts an SSE session for live task updates while processing a streamed message.Emits JSON-RPC envelopes over SSE.`tasks/send`Accepts an explicit task and message payload, ensuring reuse of existing task IDs.Sets status to working and finalises with handler result.`tasks/get`Retrieves the latest task state, history, and artifacts.Supports the optional `historyLength` parameter.`tasks/cancel`Cancels a running task once and reports an error on repeated cancellation attempts.Uses `TaskManager::cancelTask`.`tasks/resubscribe`Emits task history and current status over SSE for reconnecting clients.Utilises stored history snapshots.`tasks/pushNotificationConfig/set`Persists a push configuration for a task.Stores webhook data in shared storage.`tasks/pushNotificationConfig/get`Returns the stored configuration for a task.Null when absent.`tasks/pushNotificationConfig/list`Lists all stored configurations, optionally filtered by `taskId`.Returns an array of summary objects.`tasks/pushNotificationConfig/delete`Removes the configuration for a task.Returns `null` on success.`ping`Health-check method.Returns `{ "status": "pong" }`.Refer to `docs/api-reference.md` for complete request and response schemas.

Working with Server-Sent Events
-------------------------------

[](#working-with-server-sent-events)

The reference server streams events from the same JSON-RPC endpoint when the `message/stream` or `tasks/resubscribe` methods are invoked. Responses are encoded as JSON-RPC payloads and delivered as SSE events with IDs set to the task or message identifiers. The `StreamingServer` guarantees that a resubscribe replay includes every stored message history entry before the terminal task status update.

Testing
-------

[](#testing)

```
# Start the server in one terminal
php -S localhost:8081 examples/complete_a2a_server.php

# Run the TCK from the sibling repository
cd ../a2a-tck
python3 run_tck.py --sut-url http://localhost:8081 --category all

# Run the PHPUnit suite from the project root
cd ../a2a-php
composer test
```

The TCK run exercises JSON-RPC validation, streaming behaviour, push notification management, and task-state transitions. PHPUnit covers unit and integration scenarios for the PHP components.

Documentation
-------------

[](#documentation)

Additional documentation lives in the `docs/` directory:

- `docs/README.md` – high-level overview and architecture notes.
- `docs/api-reference.md` – detailed method and data model reference.
- `docs/protocol-compliance.md` – TCK summary and behavioural guarantees.

For HTTPS deployment details, see `A2A_HTTPS_IMPLEMENTATION.md` and `HTTPS_SUMMARY.md`.

Contributing
------------

[](#contributing)

1. Fork the repository and create a feature branch.
2. Install dependencies with `composer install`.
3. Add unit tests or TCK scenarios covering the change.
4. Run `composer test` and (optionally) `python3 ../a2a-tck/run_tck.py`.
5. Open a pull request describing the change and validation steps.

License
-------

[](#license)

Distributed under the Apache License 2.0. See `LICENSE` for the full text.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance75

Regular maintenance activity

Popularity9

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 82.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~11 days

Recently: every ~20 days

Total

9

Last Release

224d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bb3d8ed88f7a5abc614ffba7f4e3708bd0ff94eff7699ce31106814d0db89dd4?d=identicon)[andreibesleaga](/maintainers/andreibesleaga)

---

Top Contributors

[![andreibesleaga](https://avatars.githubusercontent.com/u/33538982?v=4)](https://github.com/andreibesleaga "andreibesleaga (43 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (6 commits)")[![google-labs-jules[bot]](https://avatars.githubusercontent.com/in/842251?v=4)](https://github.com/google-labs-jules[bot] "google-labs-jules[bot] (3 commits)")

---

Tags

a2aa2a-protocolagent-to-agentaiphpphp-sdkprotocolsdksdk-phpsdkprotocolAgenta2a

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/andreibesleaga-a2a-php/health.svg)

```
[![Health](https://phpackages.com/badges/andreibesleaga-a2a-php/health.svg)](https://phpackages.com/packages/andreibesleaga-a2a-php)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[laravel-zero/framework

The Laravel Zero Framework.

3371.4M369](/packages/laravel-zero-framework)[temporal/sdk

Temporal SDK

4002.2M18](/packages/temporal-sdk)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[wheelpros/fitment-platform-api

Magento 2 (Open Source)

12.1k1.2k](/packages/wheelpros-fitment-platform-api)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
