A comprehensive toolkit for debugging and testing the A2A (Agent-to-Agent) communication protocol. This project consists of two components: a Quarkus-based A2A server implementation and a React-based debug client for interacting with A2A agents.
A Quarkus-based A2A server that implements the Agent-to-Agent protocol. This component acts as a test server that can be used to validate A2A client implementations.
Key Features:
- Full A2A protocol implementation using Quarkus
- REST endpoints for agent communication
- Dev UI for monitoring and testing
- Influence the result by passing special strings as message
A pure frontend application built with React and TypeScript for debugging A2A agent interactions. It connects directly to A2A agents via the browser.
Key Features:
- Direct browser-to-agent communication using @a2a-js/sdk
- Start new conversations or resume existing tasks
- Real-time chat interface with JSON response inspection
- URL-based state management for easy sharing
- Task and context ID tracking with copy functionality
cd a2a-debug-server
./mvnw quarkus:devThe server will be available at http://localhost:11001
cd a2a-debug-client
npm install
npm run devThe client will be available at http://localhost:3000
- Start the a2a-debug-server (or use any A2A-compliant agent)
- Start the a2a-debug-client frontend
- Enter the agent card URL (e.g.,
http://localhost:11001/.well-known/agent-card.json) - Start chatting with the agent or load an existing task
By default, the server will start an async task and respond with a "Still working..." status message on subsequent messages. You can influence the server's response by including special strings in your messages:
COMPLETE_TASKin the initial message. Completes the task immediately (sync).COMPLETE_MESSAGEin the initial message. Returns a message instead of a task.COMPLETEin a follow-up message for an already running task. Completes the task.
- Server: Quarkus, Java, A2A protocol implementation
- Client: React 18, TypeScript, Material UI, @a2a-js/sdk
- Build Tools: Maven (server), Vite (client)
Each component has its own README with detailed development instructions: