Open Source · MIT · Node.js 20+

Turn Claude, Codex & Copilot into A2A agents

Your coding agents are powerful but isolated. Drop in a JSON config, get a spec-compliant A2A server, and let them discover each other, delegate tasks, and collaborate autonomously.

A2A v1.0 native · v0.3 clients backward compatible · Config-driven

Claude logoClaudepre-1.0
OpenAI Codex logoOpenAI Codex
GitHub Copilot logoGitHub Copilot
OpenCode logoOpenCode
Google Antigravity logoGoogle Antigravitypre-1.0
npm install -g a2a-claude
export ANTHROPIC_API_KEY=sk-ant-...
a2a-claude --config ./config.json

# Any A2A client can now discover and run it:
curl http://localhost:3000/.well-known/agent-card.json

Full walkthrough in the quick start guide.

Supported agents

All five share one core runtime and speak native A2A v1.0.

Guide: Choosing a wrapper →
AgentPackageVersionNotable Features
Claude logoClaudea2a-claudev0.4pre-1.0Built on Claude Agent SDK. Permission modes, background tasks, rate-limit handling.
OpenAI Codex logoOpenAI Codexa2a-codexv1.7Repository sandboxing and approval policy.
GitHub Copilot logoGitHub Copilota2a-copilotv1.8Bring your own model: Ollama, OpenAI, Anthropic, Azure, vLLM.
OpenCode logoOpenCodea2a-opencodev1.7Multi-provider out of the box.
Google Antigravity logoGoogle Antigravitya2a-antigravityv0.2pre-1.0Gemini-backed, through a managed Python bridge.

Why this exists

Bridging the gap between isolated code assistants and autonomous teamwork.

The Problem

You cannot cleanly hand a task from one coding agent to another, track long-running multi-turn work, or compose them into a team without building brittle custom glue code for each backend.

What a2a-wrapper does

It places each agent behind the same open Agent2Agent specification. They publish agent cards, receive tasks, stream real-time progress, and retain session context.

A2A is for agent-to-agent calls; MCP is for agent-to-tool calls. They work together seamlessly. Read how A2A works →

How it works

Three simple steps to connect and run your agents.

  1. 1

    Install the wrapper you need

    One lightweight npm package per agent, all built on the same core runtime.

  2. 2

    Write a JSON config

    Define name, skills, port, and agent backend options. Sensible defaults handle the rest.

  3. 3

    Call it from any A2A client

    Agent cards are discovered, streaming tasks execute, and sessions persist across calls.

A software engineering crew

A planner takes a feature request, delegates to Claude to write the implementation, then hands the result to Codex to write tests and fix failures.

examples/software-engineering-crew
crew $ node planner.mjs --mock "Add a slugify(text) helper"

A replay of the real --mock run: stand-in agents, no model calls, no files changed. Clone the repo to run it yourself.

Build this crew with real agents→

Observable →

Tool calls, reasoning, file changes and usage are emitted as events you can route to A2A artifacts, HTTP or your own telemetry sink.

Secure by default →

These agents can edit files and run commands. Bind, sandbox, and gate them before exposing an external port.

AI-ready docs →

Every documentation page is available as pure Markdown, ships with llms.txt, and connects to an MCP docs server.

What is a2a-wrapper?

a2a-wrapper is a set of Node.js packages that expose Claude, OpenAI Codex, GitHub Copilot, OpenCode and Google Antigravity as standalone agents over the open A2A (Agent2Agent) protocol. You write a JSON config file and get a spec-compliant A2A server that any A2A client can discover and call.

How is A2A different from MCP?

MCP standardizes how an AI application connects to external tools, data and workflows. A2A standardizes how independent agents communicate and collaborate as peers. The A2A project describes the two as complementary: MCP gives each agent depth, and A2A gives a system of agents reach.

How do I run Claude, Codex and GitHub Copilot together?

Put each behind an A2A server with its a2a-wrapper package, then have an orchestrator send tasks to them. For example, Claude implements a feature and Codex writes the tests, coordinated by a small planner script. Because they all speak A2A, any A2A-capable orchestrator works, and you can swap agents without changing the orchestration.

How do I install a wrapper?

Install the package globally with npm, for example "npm install -g a2a-copilot", then start it with "a2a-copilot --config ./config.json". You can also run it without installing through npx. The five packages are a2a-copilot, a2a-claude, a2a-codex, a2a-opencode and a2a-antigravity.

Which A2A protocol versions are supported?

A2A v1.0 natively, with backward compatibility for v0.3.x clients. The A2A specification lists 1.0.0 as the latest released version, with 0.3.0 among the earlier ones. The server negotiates per request, so old and new clients both work with no configuration.

Is it safe to expose an agent on a network?

Not by default. The A2A endpoint has no built-in authentication, the default bind address is 0.0.0.0, and the agents can edit files and run commands. The A2A project says a server must authenticate every request and use HTTPS in production, so bind to 127.0.0.1 for local use, run in a container with a scratch workspace, and put an authenticating, TLS-terminating proxy in front of anything shared.

Can agents call each other?

Yes, in two ways. An external orchestrator can call several agents, as the crew example does. Or a wrapper agent can declare sub-agents so its own model calls other A2A agents as tools.

Does it work with LangGraph, Google ADK, CrewAI or Microsoft Agent Framework?

It complements them. Use the framework for orchestration, state and memory, and call the wrappers as A2A execution nodes. Any orchestrator that can make HTTP calls, or that has an A2A client, can drive a wrapper.

Get Started Today

Ready to turn your coding agents into A2A agents?

Install a wrapper in seconds, run the quickstart tutorial, and let your agents discover each other.