Choosing a wrapper
Compare a2a-copilot, a2a-claude, a2a-codex, a2a-opencode and a2a-antigravity. Backends, provider flexibility, sandboxing, streaming, and default ports, so you can pick the right A2A wrapper for your agent.
All five wrappers share the same core: A2A v1.0 native with v0.3.x compatibility, sub-agent delegation, MCP tool integration, and JSON config with environment and CLI overrides. They differ in the backend behind them.
Comparison
| Backend SDK | Provider flexibility | Safety controls | Default port (example config) | |
|---|---|---|---|---|
| a2a-copilot | GitHub Copilot SDK | BYOK: Ollama, OpenAI, Anthropic, Azure, vLLM, any OpenAI-compatible endpoint | Run in a container with a scratch workspace | 3000 |
| a2a-claude | @anthropic-ai/claude-agent-sdk | Claude models (Anthropic API, Bedrock, Vertex) | permissionMode: plan, acceptEdits, dontAsk, gated bypassPermissions | 3030 |
| a2a-codex | @openai/codex-sdk | OpenAI Codex models | sandboxMode: read-only, workspace-write, danger-full-access; approvalPolicy | 3020 |
| a2a-opencode | OpenCode | Multi-provider, switch in one config line | --auto-approve is on by default; run in a container | 3000 |
| a2a-antigravity | Google Antigravity Python SDK, through a managed bridge | Gemini (API key or Vertex/ADC) | Antigravity policies, run_command gating | 3040 |
Which should I pick?
I want the broadest model choice
a2a-opencode routes to Anthropic, OpenAI, GitHub Copilot and more. a2a-copilot adds BYOK for local and self-hosted models.
I want strong multi-step coding
a2a-claude wraps Claude: repository navigation, planning, shell and edits, with explicit permission modes.
I want a sandboxed repository agent
a2a-codex confines work to the workspace with read-only or workspace-write sandboxes.
I already use Gemini
a2a-antigravity exposes Google Antigravity. It needs a one-time Python environment setup.
Things worth knowing
- Local or self-hosted models: use
a2a-copilotwith a BYOK provider. The model must support native tool calling; some small local models emit tool calls as plain text and will not work. - Read-only review agent:
a2a-claudewithpermissionMode: "plan"ora2a-codexwithsandboxMode: "read-only". - Docker: most wrappers ship a Dockerfile. Codex shell sandboxing needs extra privileges inside a container; see Docker.
- OpenCode needs an OpenCode server.
a2a-opencodeconnects to a running OpenCode server atopencode.baseUrl(the example useshttp://localhost:4097). - Mixing wrappers: any combination works in one system because they all speak A2A. The crew example pairs Claude with Codex.
Wrapper or something else?
| You want to… | Use |
|---|---|
| Expose an existing coding agent over A2A with no code | a2a-wrapper |
| Build a fully custom agent from scratch | The official A2A SDKs |
| Orchestrate many agents with a framework | LangGraph, Google ADK, CrewAI and similar as the orchestrator, calling wrappers as execution nodes |
See also integrate with agent frameworks.
Memory and skills
Give an a2a-wrapper agent persistent instructions and reusable skills. The memory config block writes instruction files and SKILL.md folders into the workspace in each backend's native location.
Configuration
How a2a-wrapper configuration works. The JSON config file, the layering order of defaults, file, environment variables and CLI flags, environment-variable substitution, and the blocks every wrapper shares.