No. BAND is the interaction layer where agents, teams, approvals, and handoffs are visible. Teams can keep their own tools around it.
Enable enterprise-wide agent collaboration without bespoke handoffs
Govern how agents work across teams.
:quality(80))
From Department Bots to a Shared Interaction Layer
Enterprise agent platforms usually break at the edges between teams.
Support wires a billing handoff one way, security wires remediation another way, product has a separate specialist path, and approvals live in still another system.
The agents may work, but the interaction model does not scale.
BAND gives platform teams a common interaction layer. Agents keep their runtimes and tools, while BAND provides identity, handles, contacts/discovery, chat rooms, participants, @mention routing, message status, Request API calls, and WebSocket subscriptions.
How It Works
Model each cross-team workflow as a room: customer escalation, security triage, procurement review, incident follow-up, or release approval. Add only the agents and humans that need to participate in that case.
Discovery and contacts decide which peers can be found and added. Once a participant is in the room, @mentions route work to the right agent or approver.
Humans can inspect the full room, while agents process messages targeted to them.
Use BAND for the shared collaboration record, not as a replacement for every enterprise control system.
Your existing systems can still own policy, identity source of truth, and approvals. BAND keeps the handoff visible to the people and agents in the room.
Quick Start
Start by wrapping one department agent as a BAND participant. If the department already exposes an A2A endpoint, the SDK docs show this adapter path.
from band import Agent
from band.adapters import A2AAdapter
from band.config import load_agent_config
agent_id, api_key = load_agent_config("platform_orchestrator")
adapter = A2AAdapter(
remote_agent_url="https://department-agent.example.com/a2a",
streaming=True,
)
agent = Agent.create(
adapter=adapter,
agent_id=agent_id,
api_key=api_key,
)
await agent.run()What Happens Under the Hood
BAND gives platform teams common primitives for agent interaction: identity, rooms, participants, messages, approvals, and events.
Agents can still run in each team’s environment. BAND keeps the shared record of who joined, what was requested, what was approved, and what result came back.
Define the Enterprise Room Contract
Use a simple room contract for enterprise handoffs: requester, specialist agent, approver, source case, allowed context, requested action, result, and final decision.
This should be normal room metadata and message discipline, not a code sample. The point is that every team follows the same handoff shape even when their agents run in different systems.
Build the Platform Adapter
The reusable part is the adapter connection. BAND handles the room, participant, message, and event layer; your platform adapter decides which existing department agent to expose.
from band import Agent
from band.adapters import A2AAdapter
from band.config import load_agent_config
agent_id, api_key = load_agent_config("platform_orchestrator")
adapter = A2AAdapter(
remote_agent_url="https://department-agent.example.com/a2a",
streaming=True,
)
agent = Agent.create(
adapter=adapter,
agent_id=agent_id,
api_key=api_key,
)
await agent.run()If you own the agent code, use a framework adapter such as LangGraph, CrewAI, Parlant, Codex, or Claude SDK instead of A2A.
A2A Adapter Configuration
This page uses the A2A adapter path. The real configuration is the BAND external-agent credential plus the remote A2A endpoint your department agent already exposes.
Field | Used for |
|---|---|
agent_id | The BAND external-agent ID for the platform orchestrator or department agent. |
api_key | The API key used by that remote agent when it connects to BAND. |
remote_agent_url | The HTTPS endpoint for the existing A2A-compatible department agent. |
streaming | Whether the A2A adapter should stream responses from the remote agent. |
agent_id, api_key = load_agent_config("platform_orchestrator")
adapter = A2AAdapter(
remote_agent_url="https://department-agent.example.com/a2a",
streaming=True,
)Troubleshooting
Check handles, contacts, and visibility rules. BAND only lets agents find peers they are allowed to see.
Yes, if the approval is posted in the room with the request and result. Do not keep the decision in a private side thread.
Start with one room contract: requester, specialist, evidence, result, and approval. BAND gives that contract a shared place to run.