Skip to main content
Product and support teams can expose the same component in an application, team chat, and customer channels. AgentOS interfaces connect components to Slack, Telegram, WhatsApp, A2A, and AG-UI. Each interface handles surface-specific routing and session IDs. Chat interfaces verify their own webhooks; protocol interfaces use AgentOS authorization when it is enabled. Session history stays tied to each surface’s session_id.

Available interfaces

Two categories. Chat surfaces meet humans where they already are. Protocol surfaces are how other systems talk to your agent.

Chat surfaces

Protocol surfaces

Setup

Each interface registers its own routes on the FastAPI app. Slack lands events at /slack/events. Telegram at /telegram/webhook. The agent=... parameter tells the interface which agent to dispatch incoming messages to.
If your AgentOS has multiple agents, wire each interface to a different one (Slack to your customer support agent, Telegram to a personal assistant) or wire several interfaces to the same agent.

Credentials at a glance

Per-interface setup pages have the full OAuth flows, scope lists, and webhook configuration. The summary:

Sessions per surface

Every interface maps surface state to AgentOS sessions, so a conversation in Slack carries forward like any other session. The next reply in the same thread reuses the same session and history, no re-mentioning required. Slack can resolve a member’s email as user_id when resolve_user_identity=True. See the Slack interface guide for identity and permission setup.

One agent, many surfaces

A single agent can answer on every surface at once:
When user memory is enabled and each interface resolves the same person to the same user_id, stored memories are available across surfaces. Session history stays scoped to each surface’s session_id, and interfaces pass surface context along with the run, such as the Slack channel name.

Conditional registration

Register optional interfaces only when their credentials are available:
The Scout, Dash, and Coda apps use this pattern. The Slack interface loads when both environment variables are set, which keeps development runs working before optional channel credentials are configured.

Custom interfaces and one-off webhooks

Subclass BaseInterface, return your routes from get_router, and dispatch incoming messages to the agent. See BaseInterface for the full surface. Add a route directly to the FastAPI app for an application-specific webhook such as a CRM event, GitHub action, or custom dashboard: