Protocol and App Bridges
These adapters connect Band to something that is not an agent framework: a remote A2A agent, A2A clients, an ACP editor, or Slack. The bridges that need Band credentials read them from the PlatformConnection the runtime injects, so none takes api_key or rest_url. Every adapter follows the shared adapter construction rules and takes the feature keywords.
A2AAdapter
Brings a remote A2A agent into a room as a Band participant.
Declares no emit kinds or capabilities, and the remote agent’s turns are not judged by the turn-outcome rule. See A2A Adapter for a worked example.
A2AGatewayAdapter
Exposes Band peers as A2A HTTP endpoints.
rest_client is a test injection seam; normally leave it unset. api_key and rest_url are not constructor parameters; passing either raises TypeError. The adapter builds its REST client at startup from the injected PlatformConnection. Declares no emit kinds or capabilities. See A2A Gateway for a worked example.
ACP Server
BandACPServerAdapter
Platform bridge for editor-facing ACP integrations. Import it from band.adapters.
BandACPServerAdapterConfig has no fields yet. rest_client is a test injection seam. api_key and rest_url are not constructor parameters; passing either raises TypeError. The adapter builds its REST client from the injected PlatformConnection and declares no emit kinds or capabilities, so a nonempty emit or capabilities raises BandConfigError.
ACPServer
ACP protocol handler used with BandACPServerAdapter.
ACPServer implements twelve ACP methods:
It also exposes ext_method and ext_notification for ACP extension traffic. set_config_option is acknowledged and ignored. initialize advertises session/list, session/resume, session/fork, and session/close; the last three are unstable ACP routes that answer only when the server runs through run_acp_server(server) from band.integrations.acp, which is what band-acp uses, and plain acp.run_agent(server) returns method_not_found for them. session/close cancels the session’s active prompt.
See ACP Server for a worked example.
SlackAdapter
Wraps an inner framework adapter and bridges it into Slack.
SlackAdapter has no port setting: mount adapter.router into your own ASGI app. Passing port to SlackAdapterConfig raises ValidationError.
Omit every feature keyword and the bridge adopts the inner adapter’s resolved features unchanged. Pass one and it merges over the inner adapter’s features field by field, writes the result onto the inner adapter, and validates against the inner adapter’s supported sets.
SlackApp
Configuration for one Slack app served by SlackAdapter. The required tokens depend on the config’s transport; the wrong combination raises ValidationError at config construction, for example transport='socket' requires app_token and bot_token on every SlackApp; missing for: dev.
See Slack for a worked example.