wayof-a2a-bridge
v1.0.2
Published
A2A 1.0 protocol SDK for inter-agent collaboration via the Agent-to-Agent protocol
Maintainers
Readme
wayof-a2a-bridge
TypeScript SDK for the A2A (Agent-to-Agent) 1.0 protocol — enables inter-agent collaboration between AI coding agents (opencode, Claude Code, Codex, Cursor, Aider, etc.) via the open A2A standard.
Quick Install
npm (public package — works everywhere):
npm install wayof-a2a-bridgeFrom source (private repo — requires Way-Of org access):
git clone https://github.com/Way-Of/wayofa2a.git
cd wayofa2a
npm install
npm run buildArchitecture
graph TB
subgraph ControlPlane["🎯 Way of Teams — Control Plane"]
Tickets["📋 Tickets"]
Plans["📐 Plans"]
Standups["📅 Standups"]
Kanban["📊 Kanban"]
Docs["📚 Docs"]
Knowledge["🧠 Knowledge"]
Memory["💾 Memory"]
Coordinator["👑 Coordinator Agent"]
end
subgraph DataPlane["🔗 A2A Mesh — Data Plane"]
Directory["📡 a2abridge Directory<br/>(Port 7777)"]
subgraph IDEAgents["💻 IDE Agents (via a2abridge MCP)"]
OE["opencode"]
CC["Claude Code"]
CX["Codex"]
CR["Cursor"]
AD["Aider"]
GM["Gemini CLI"]
end
subgraph PiAgents["🤖 Pi Agents"]
PiA2A["pi-a2a-adaptor<br/>(A2A Client)"]
PiACP["pi-acp-agents<br/>(ACP Client)"]
end
subgraph Optional["⚙️ Optional Add-ons"]
RealA2A["real-a2a<br/>(P2P Swarms)"]
LiteLLM["LiteLLM<br/>(Model Gateway)"]
end
end
subgraph Network["🌐 Tailscale Tailnet"]
Hub["Directory Hub"]
Client1["Client Machine 1"]
Client2["Client Machine 2"]
Server["Way of Teams Server"]
end
Coordinator -->|assigns work| Directory
Tickets -.->|become A2A tasks| Directory
Knowledge -.->|inject context| Directory
Memory -.->|store results| Directory
Directory <-->|A2A JSON-RPC + SSE| IDEAgents
Directory <-->|A2A JSON-RPC + SSE| PiA2A
PiACP -->|ACP stdio| Gemini["Gemini CLI"]
PiACP -->|ACP stdio| CustomACP["Custom ACP Agents"]
RealA2A -.->|Iroh P2P| Directory
LiteLLM -.->|Model API| IDEAgents
Hub -->|Directory :7777| Directory
Client1 -.->|Client| Directory
Client2 -.->|Client| Directory
Server -.->|Way of Teams| ControlPlane
classDef control fill:#1e3a5f,color:#fff,stroke:#3b82f6
classDef data fill:#0f172a,color:#fff,stroke:#22c55e
classDef net fill:#7c2d12,color:#fff,stroke:#f97316
classDef opt fill:#374151,color:#fff,stroke:#6b7280,stroke-dasharray: 5 5
class Tickets,Plans,Standups,Kanban,Docs,Knowledge,Memory,Coordinator control
class Directory,OE,CC,CX,CR,AD,GM,PiA2A,PiACP data
class Hub,Client1,Client2,Server net
class RealA2A,LiteLLM,Gemini,CustomACP optUsage
import { register, listAgents, sendMessage, inbox, completeTask } from 'wayof-a2a-bridge';
// 1. Announce yourself as available for collaboration
await register({
name: 'my-agent',
version: '1.0',
skills: ['coding', 'review', 'test']
});
// 2. Discover other online agents
const { data: agents } = await listAgents();
// 3. Send a task to a peer
await sendMessage(agents[0].url, 'Implement JWT auth in src/auth.ts');
// 4. Check inbox for incoming messages
const { data: messages } = await inbox();
// 5. Complete a task (reply to peer)
await completeTask(taskId, 'Done — implemented JWT auth');API
| Function | Description |
|----------|-------------|
| register(card) | Announce agent online (name, version, skills, optional url) |
| unregister() | Go offline |
| whoami() | Get your agent card |
| listAgents() | Discover all registered peers |
| sendMessage(url, text, opts?) | Send task to peer (returns task_id) |
| sendStreaming(url, text) | Streaming message |
| getTask(url, taskId) | Poll task status |
| cancelTask(url, taskId) | Cancel a task |
| inbox(peek?) | Check incoming messages |
| completeTask(taskId, text) | Reply/complete a task |
Requirements
Must run in an MCP host with the a2a-bridge skill loaded (provides the a2a_* tools globally).
License
MIT
Credits
Published as public npm package:
npm install wayof-a2a-bridgeBased on the A2A Protocol and a2a-bridge skill.
