Skip to content

MisterVVP/a2a-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

a2a-cpp: C++20 Agent2Agent (A2A) SDK

TCK conformance (main)

a2a-cpp is a modern C++ SDK for building Agent2Agent protocol clients and servers.

It supports core A2A workflows including client/server APIs, discovery, REST/JSON-RPC/gRPC transports, streaming, authentication hooks, and CMake/vcpkg/Conan build integration.

TCK Compliance Level

MUST (validated in CI via --level must --transport grpc,jsonrpc,http_json in .github/workflows/tck.yml).

Documentation

  • Documentation website (GitHub Pages): https://mistervvp.github.io/a2a-cpp/
  • Documentation home source: book/src/README.md
  • Project docs and engineering notes: docs/
  • Build and validation guide: docs/build.md

Repository layout

  • include/ public headers
  • src/ library implementation
  • tests/ unit and integration tests
  • proto/ protocol definitions
  • scripts/ local tooling and CI helpers
  • benchmarks/ optional Google Benchmark performance suite
  • tools/bench_runner/ Go benchmark threshold/report utility

Performance benchmarks

The SDK includes C++ microbenchmarks for core hot paths. Benchmarks are run in CI with threshold checks to catch performance regressions.

Google Benchmark measures SDK internals directly, including proto/JSON serialization, task store operations, task lifecycle logic, transport routing, server transport handling, UUIDv7 task ID generation, Agent Card generation, and HTTP adapter parsing/serialization. A Go-based benchmark runner parses Google Benchmark JSON output, compares fixed thresholds from benchmarks/thresholds.json, and generates CI summaries.

Benchmarks are optional and should be run in Release mode:

cmake -S . -B build-bench \
  -DCMAKE_BUILD_TYPE=Release \
  -DA2A_BUILD_BENCHMARKS=ON
cmake --build build-bench --target a2a_benchmarks -j"$(nproc)"
./build-bench/benchmarks/a2a_benchmarks

To run the CI-style threshold check locally:

./build-bench/benchmarks/a2a_benchmarks \
  --benchmark_out=benchmark-results.json \
  --benchmark_out_format=json \
  --benchmark_repetitions=5 \
  --benchmark_report_aggregates_only=true

go run ./tools/bench_runner/cmd/a2a-bench-runner \
  --results benchmark-results.json \
  --thresholds benchmarks/thresholds.json \
  --summary benchmark-summary.md

See benchmarks/README.md for threshold strategy, Release-mode guidance, and instructions for adding benchmarks.

About

C++20 SDK for the Agent2Agent (A2A) Protocol: build A2A clients and servers with REST, JSON-RPC, gRPC/protobuf, streaming, auth hooks, CMake, vcpkg.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors