> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2-update-deprecated-models.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack

> Host agents as Slack Applications.

Use the Slack interface to serve Agents, Teams, or Workflows on Slack. It mounts Slack event routes on a FastAPI app and sends responses back to Slack threads.

## Setup Steps

Follow the Slack setup guide in the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/06_agent_os/interfaces/slack/README.md).

Required configuration:

* `SLACK_TOKEN` (Bot User OAuth Token)
* `SLACK_SIGNING_SECRET` (App Signing Secret)
* An ngrok tunnel (for local development) and event subscriptions pointing to `/slack/events`

## Example Usage

Create an agent, expose it with the `Slack` interface, and serve via `AgentOS`:

```python basic.py theme={null}
from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.os import AgentOS
from agno.os.interfaces.slack import Slack

basic_agent = Agent(
    name="Basic Agent",
    model=OpenAIResponses(id="gpt-5.2"), # Ensure OPENAI_API_KEY is set
    add_history_to_context=True,
    num_history_runs=3,
    add_datetime_to_context=True,
)

agent_os = AgentOS(
    agents=[basic_agent],
    interfaces=[Slack(agent=basic_agent)],
)
app = agent_os.get_app()

if __name__ == "__main__":
    agent_os.serve(app="basic:app", port=8000, reload=True)
```

A complete example is available at `cookbook/06_agent_os/interfaces/slack/basic.py`.

## Core Components

* `Slack` (interface): Wraps an Agno `Agent`, `Team`, or `Workflow` for Slack integration via FastAPI.
* `AgentOS.serve`: Serves the FastAPI app using Uvicorn.

## `Slack` Interface

Main entry point for Agno Slack applications.

### Initialization Parameters

| Parameter                | Type                  | Default    | Description                                                                                                                               |
| ------------------------ | --------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `agent`                  | `Optional[Agent]`     | `None`     | Agno `Agent` instance.                                                                                                                    |
| `team`                   | `Optional[Team]`      | `None`     | Agno `Team` instance.                                                                                                                     |
| `workflow`               | `Optional[Workflow]`  | `None`     | Agno `Workflow` instance.                                                                                                                 |
| `prefix`                 | `str`                 | `"/slack"` | Custom FastAPI route prefix for the Slack interface.                                                                                      |
| `tags`                   | `Optional[List[str]]` | `None`     | FastAPI route tags for API documentation. Defaults to `["Slack"]` if not provided.                                                        |
| `reply_to_mentions_only` | `bool`                | `True`     | When `True` (default), bot responds to @mentions in channels and all direct messages. When `False`, responds to all messages in channels. |

Provide `agent`, `team`, or `workflow`.

### Key Method

| Method       | Parameters | Return Type | Description                                        |
| ------------ | ---------- | ----------- | -------------------------------------------------- |
| `get_router` | None       | `APIRouter` | Returns the FastAPI router and attaches endpoints. |

## Endpoints

Mounted under the `/slack` prefix:

### `POST /slack/events`

* Handles all Slack events (URL verification, messages, app mentions)
* Verifies Slack signature on each request
* Uses thread timestamps as session IDs for per-thread context
* Streams responses back into the originating thread (splits long messages)

## Testing the Integration

1. Run the app locally: `python <my-app>.py` (ensure ngrok is running)
2. Invite the bot to a channel: `/invite @YourAppName`
3. Mention the bot in a channel: `@YourAppName hello`
4. Open a DM with the bot and send a message

## Troubleshooting

* Verify `SLACK_TOKEN` and `SLACK_SIGNING_SECRET` are set
* Confirm the bot is installed and invited to the channel
* Check ngrok URL and event subscription path (`/slack/events`)
* Review application logs for signature failures or permission errors
