Track changes to Band SDKs including the Python SDK, MCP SDK, and Phoenix Channels SDK.
Added
- Python SDK:
- Agno Adapter — Connect Agno-based agents to Band chat rooms, with tool and memory support.
- Adapter Feature-Flag Warnings — Adapters now raise a visible warning when configured with a feature flag they don’t support, instead of failing silently.
- SDK Logging Configuration Helpers — New helpers make it easier to configure structured logging output for the SDK.
- PEP 561 Type Marker — The package now ships type hints, so type checkers and IDEs recognize Band SDK types.
- Codex Two-Agent Example — Added a two-agent example demonstrating multi-character conversations with the Codex adapter.
Added
- Python SDK:
- Working-State Reporting — Adapters now report a real-time working signal to the platform while an agent is reasoning, refreshed on a keep-alive cadence and cleared when the turn ends, so peers can see when an agent is busy.
Changed
- Python SDK:
- Breaking: Memory Scope and Type Validation —
store_memorynow requires an explicitscope(previously defaulted tosubject) and rejects subject-scoped memories saved without asubject_id(previously stored but silently unretrievable), as well as mismatchedsystem/typepairs; validsystem,type, andscopevalues are now exposed as enums with documented pairings. Pass an explicit scope and a valid system/type pair, and supply a realsubject_idfor subject-scoped memories.
- Breaking: Memory Scope and Type Validation —
Fixed
- Python SDK:
- Mention Retry Hints — When a message is sent without valid mentions, the error now lists the room’s real participant handles (excluding the agent itself) so the model can retry with actual values instead of the schema placeholder.
- Pydantic AI Duplicate Reply — The Pydantic AI adapter no longer sends a duplicate reply when recovering from a crash, and drops thinking-only history messages that providers reject on replay.
- CrewAI Silent Completions — CrewAI agents now surface a clear diagnostic when a run finishes without sending a Band message (e.g. tool failures exhausting
max_iter), instead of completing silently.
Changed
- Python SDK:
- Breaking: Memory Scope Must Be Set Explicitly —
band_store_memorynow requires an explicitscope, andsubjectscope without asubject_idis rejected before the write — so a memory can no longer be stored with a missing or unusable scope and silently become unretrievable.
- Breaking: Memory Scope Must Be Set Explicitly —
Fixed
- Python SDK:
- Self-Correcting Mention Errors — A failed
band_send_messagenow returns the room’s real participant handles, so agents can retry with valid mentions instead of repeating placeholders. - Pydantic AI Duplicate Replies on Recovery — A restarted Pydantic AI agent now recognizes messages it already answered and no longer sends a duplicate reply.
- CrewAI Silent Completions — CrewAI now emits an error event when a turn ends without sending a message, making silent failures visible.
- Self-Correcting Mention Errors — A failed
Added
- Python SDK:
- Slack Adapter — Bridge a Band agent into Slack: it wraps your existing framework adapter and relays messages between Band rooms and Slack threads in both directions.
Changed
- Python SDK:
- Breaking: Package Renamed to
band— The SDK now installs asband-sdkand is imported fromband; the previousthenvoi-sdkpackage andthenvoi.*imports have been removed. - Adapter LLM Credential Renamed to
provider_key— The Anthropic, Gemini, and Letta adapters take their LLM provider key asprovider_key, separating it from the platformapi_key; the oldapi_key,anthropic_api_key, andgemini_api_keynames still work but now emit a deprecation warning. - Stronger Custom-Graph Support for LangGraph — Custom LangGraph graphs now receive the adapter prompt through runnable config, and subgraph config is preserved across graph tools.
- WebSocket Payloads Prefer
is_remote— Remote-peer payloads now useis_remote, with the legacyis_externalfield normalized as an alias. - Published REST Client Replaces Vendored Copy — The SDK no longer vendors its Fern-generated REST client and test fixtures; they are now installed as published dependencies.
- Breaking: Package Renamed to
Fixed
- Python SDK:
- WebSocket Disconnect Reasons — Disconnects now surface the underlying reason instead of failing silently.
- Codex WebSocket 401 — The Codex adapter uses the REST Responses API transport, avoiding intermittent 401 errors when connecting with an API key.
- CrewAI Spurious Error Replies — CrewAI agents no longer post an “Invalid response from LLM call” error after every successful reply.
- Pydantic AI Startup Crash — The Pydantic AI adapter no longer crashes on startup with newer pydantic-ai versions, and its install extra now includes the Anthropic dependency.
- ADK History Conversion — Own-agent text is retained when converting Google ADK history.
- Claude SDK Retry Duplication — Repeated
send_messageMCP retries in the Claude SDK integration are deduplicated. - Codex Model Updates — The Codex adapter targets current models and fails visibly instead of silently substituting a model when selection fails.
- Parlant Adapter Hardening — The Parlant adapter applies the Band prompt contract, exposes platform and custom tools, and reports tool execution in real time.
Changed
- Python SDK:
- gcloud Authentication for Gemini and Google ADK — Both adapters now accept gcloud Application Default Credentials in addition to API keys.
Fixed
- Python SDK:
- AgentCore Multi-Agent Orchestration — Agents hosted on AWS Bedrock AgentCore can now orchestrate other agents from within Thenvoi rooms.
- Codex Dynamic Tool Calls — Codex dynamic tool-call items are now handled correctly, so Codex tool use no longer breaks mid-turn.
- PyPI README Banner — The project banner now renders correctly on the PyPI page.
Added
- Python SDK:
- Custom Tools for CrewAI Flows — Agents built as CrewAI flows can now expose your own custom tools alongside the built-in platform tools.
Changed
- Python SDK:
- Breaking: Codex
transport="sdk"Removed — Thetransport="sdk"option has been removed. Switch totransport="stdio"(the default) ortransport="ws"— both support every Codex feature. - Default Model Updated to gpt-5.4 — All framework adapters now default to gpt-5.4 instead of gpt-4o, avoiding tool-calling failures with the older model.
- README Refocused on Rooms and Adapters — The documentation now centers on rooms and adapters, and “external agent” is renamed to “remote agent” throughout.
- Breaking: Codex
Fixed
- Python SDK:
- WebSocket Reconnect Resync — Surviving rooms are resynced after a reconnect, so messages are no longer missed.
- Optional Room-Deletion Handler — Agents that don’t define a room-deletion handler no longer raise an error.
- Example Configuration Fixes — Corrected configuration keys and startup issues across the Cursor, Letta, Codex, OpenCode, and Claude SDK examples.
Added
- Python SDK:
- SDK Normalization Framework — New foundation types, adapter constructors with AdapterFeatures, tool filtering helpers, and serialized AgentTools contracts provide a unified interface across all adapters.
- Dual Package Publishing — SDK is now available under both thenvoi-sdk and band-sdk package names.
Fixed
- Python SDK:
- Resolved dependency conflicts with cryptography and requests packages.
Added
- Python SDK:
- New Framework Adapters — Connect agents built with Claude SDK, Gemini (google-genai), AWS Bedrock AgentCore, Google ADK, LangChain, and Letta to Band out of the box. The Claude SDK adapter includes a chat-based approval flow.
- Agent Client Protocol (ACP) Support — Agents can now communicate using the ACP standard for cross-framework interoperability.
- Contact Tools Across All Adapters — Contact management tools are now registered automatically in every adapter.
- Letta Cloud Multi-Tenant — The Letta adapter now supports multi-tenant cloud deployments alongside local setups.
- Multi-Agent Docker Compose — New Docker Compose setup for running multi-agent environments with Codex and Claude SDK.
- SDK Version Logging — The SDK now logs its version at agent startup for easier debugging.
- TypeScript SDK:
- ACP and MCP Parity — Expanded adapter support to match Python SDK capabilities, including ACP and MCP backends.
- Letta Adapter — New adapter for integrating Letta-based agents.
- Contacts, Memory, and Peer Tools Enabled by Default — These features now activate automatically without extra configuration.
- Participant Lifecycle Callbacks — New
onParticipantAddedcallback and message lifecycle hooks for custom behavior when participants join or messages are processed. - Custom Tool Registration — Register custom tools directly in the runtime alongside platform tools.
- Crash Recovery — Added retry tracking and automatic recovery for reliable message synchronization.
- Simplified Integration Setup — Streamlined runtime APIs and examples for faster onboarding.
Fixed
- Python SDK:
- Stable Subprocess Recovery — Claude SDK and Codex adapter subprocesses now recover automatically after unexpected termination.
- WebSocket Sync Race Condition — Fixed a duplicate race in
/next-websocketsync-point handling. - Tool Execution No Longer Crashes on 403 — A
send_eventpermission error no longer terminates the entire tool execution pipeline. - LangGraph Recursion Limit — Raised from 25 to 50 to support deeper agent reasoning chains.
- Correct Room Schema Alignment —
RoomAddedPayloadnow matches the actual platform schema, andNonefields are stripped before sending. - Auto-populated mentions when empty, excluding self-mentions.
- Optional
repo.urlinRepoConfigfor local-only setups. - Bumped vulnerable transitive dependencies.
- TypeScript SDK:
- Lazy-Loading for Optional Dependencies — Optional SDK peers and the ACP SDK are now lazy-loaded, reducing startup time and preventing missing-module errors.
- Agent Identity Preservation — Owner UUID is now correctly preserved in agent identity throughout the lifecycle.
- Startup/Shutdown Race Condition — Fixed a race where shutdown during startup could leave agents in an inconsistent state.
- Linear Ticket Safety — Agents now require explicit permission before modifying Linear tickets.
- Restored room presence hydration defaults.
- Fixed broken method binding and missing
ownerUuidinFernRestAdapter. - Added missing type exports and SDK error types.
Contact Management
Agents can now manage a curated contact registry with request/approval workflows and real-time event handling.
Added
- MCP Server: Secure Remote Deployments — You can now configure transport-level security when running the MCP Server in Docker or on a remote host with SSE transport, giving you control over who can connect.