Multi-agent crew
A runnable multi-agent software engineering workflow. A planner delegates a feature to Claude through a2a-claude, then hands the result to Codex through a2a-codex for tests and review, all over A2A.
The Software Engineering Crew example builds on the quick start: instead of one agent, several agents cooperate.
How it works
feature request ─▶ Planner (planner.mjs)
├─ 1. implement ─▶ a2a-claude (Claude) :3030
└─ 2. test & review ─▶ a2a-codex (Codex) :3020
both work in the same git workspace- The planner takes a feature request and sends it to Claude through
a2a-claude. - Claude implements it in the shared workspace and returns a summary as an A2A artifact.
- The planner hands that summary to Codex through
a2a-codex, which writes tests, runs them and fixes what it finds. - The planner prints the combined result.
The planner is about 100 lines of dependency-free Node that speaks plain A2A JSON-RPC. It could be any A2A-capable orchestrator. The point is that the two coding agents are interchangeable A2A peers.
Try it without API keys
git clone https://github.com/shashikanth-gs/a2a-wrapper.git
cd a2a-wrapper/examples/software-engineering-crew
node planner.mjs --mock "Add a slugify(text) helper"--mock starts two in-process stand-in agents so you can see the flow. They make no model calls and change no files.
Run it for real
You need an ANTHROPIC_API_KEY and an OPENAI_API_KEY (or codex login plus CODEX_MODEL).
These agents can edit files and run commands in WORKSPACE_DIR. Use a scratch repository, not one you care about. See the security guide.
Create a shared scratch repository
Codex requires a Git repository.
export WORKSPACE_DIR=$(mktemp -d)
git -C "$WORKSPACE_DIR" init && git -C "$WORKSPACE_DIR" commit --allow-empty -m initStart the implementer (Claude)
export ANTHROPIC_API_KEY=sk-ant-...
cd a2a-claude && npm run dev -- --config agents/example/config.jsonStart the tester (Codex)
export OPENAI_API_KEY=sk-... # same WORKSPACE_DIR as above
cd a2a-codex && npm run dev -- --config agents/example/config.jsonRun the crew
cd examples/software-engineering-crew
node planner.mjs "Add a slugify(text) helper to src/slugify.js that lowercases and hyphenates"Use IMPLEMENTER_URL and TESTER_URL if your agents run on other ports or hosts.
What the planner does
- Discovery: fetches
/.well-known/agent-card.jsonfrom each agent first. - Delegation: sends
message/sendwithconfiguration.blocking: true. - Artifacts: reads the text parts of each agent's returned artifacts.
- Sessions: shares one
contextIdacross both calls so each agent can keep multi-turn history.
Ideas to extend it
- Add a third agent (
a2a-copilotora2a-opencode) as a reviewer. - Loop until the tester reports passing tests.
- Replace the planner with LangGraph, Google ADK or any other A2A client.
- For the variant where sub-agents are exposed as MCP tools, see sub-agents.
Status
The --mock path runs with no external services. The real path depends on live model APIs and is not covered by CI, so treat it as a working reference.
Quick start
Turn GitHub Copilot into an A2A server with one JSON config file, then discover it through its agent card and send it a message from any A2A client.
What is A2A?
The Agent2Agent (A2A) protocol is an open standard for agents to discover each other, exchange tasks, stream results and collaborate, regardless of which framework or vendor built them. How it relates to MCP, and what it gives a2a-wrapper users.