Back to Nanobot

Build a Slack AI Agent with nanobot

docs/guides/slack-ai-agent.md

0.3.02.6 KB
Original Source

Build a Slack AI Agent with nanobot

This guide connects nanobot to Slack through Socket Mode. No public webhook URL is required for the first working setup.

What this guide builds

  • a Slack app with Socket Mode
  • a bot token and app-level token
  • the slack channel enabled in nanobot
  • a DM pairing flow and mention test from an approved Slack user

Prerequisites

  • A working nanobot reply:
bash
nanobot agent -m "Hello!"
  • Permission to create a Slack app in a workspace.

Install nanobot

bash
python -m pip install nanobot-ai
nanobot onboard --wizard

Enable the Slack channel

Install the optional channel dependency:

bash
nanobot plugins enable slack

In Slack, create an app, enable Socket Mode, create an app-level token with connections:write, add bot scopes, subscribe to bot events, and install the app to your workspace.

Merge this snippet into ~/.nanobot/config.json:

json
{
  "channels": {
    "slack": {
      "enabled": true,
      "botToken": "xoxb-...",
      "appToken": "xapp-...",
      "groupPolicy": "mention",
      "dm": {
        "policy": "allowlist"
      }
    }
  }
}

Slack DMs are open by default. Setting dm.policy to "allowlist" with no dm.allowFrom entries makes new DM senders receive a pairing code. Approve the code before using the bot normally.

Run nanobot gateway

bash
nanobot channels status
nanobot gateway

Test a message

DM the Slack bot directly. It should return a pairing code. Approve it from a trusted local surface:

bash
nanobot agent -m "/pairing approve ABCD-EFGH"

Then DM the bot again, or mention it in a channel:

text
@nanobot Hello from Slack

Security notes

  • Keep groupPolicy as mention unless the bot is intentionally listening to every channel message.
  • Keep dm.policy as "allowlist" when you want pairing-based approval.
  • Use groupAllowFrom with allowlist mode for approved channels.
  • Reinstall the Slack app after changing scopes.
  • Keep bot and app tokens out of committed config files.

Troubleshooting

  • If Socket Mode fails, confirm the app-level token starts with xapp-.
  • If the bot cannot send files, add files:write, reinstall the app, and restart nanobot.
  • If a DM responds normally without pairing, check that dm.policy is "allowlist".
  • If channel messages are ignored, check event subscriptions and group policy.

Next: memory, automations, MCP tools