Overview

This guide shows you how to connect OpenRouter to Slack using OpenClaw. You'll configure the messaging channel, set up AI provider authentication, and deploy your assistant.

Slack Capabilities

  • Direct messages
  • Group chats
  • Media support
  • Reactions
  • Thread support
  • Native commands

OpenRouter Features

  • Access to 100+ models
  • Unified billing
  • Model comparison
  • Automatic fallbacks

Step 1: Configure Slack

  1. Create a Slack app at api.slack.com/apps
  2. Enable Socket Mode and create app token
  3. Add bot token scopes and install to workspace
  4. Set SLACK_BOT_TOKEN and SLACK_APP_TOKEN environment variables
  5. Configure slack in openclaw.json

Step 2: Configure OpenRouter

OpenRouter API key

  1. Create account at openrouter.ai
  2. Generate API key
  3. Set OPENROUTER_API_KEY environment variable

Environment variable: OPENROUTER_API_KEY

Step 3: Combined Configuration

Add both configurations to your openclaw.json:

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "openrouter/anthropic/claude-sonnet-4"
      }
    }
  },
  "models": {
    "providers": {
      "openrouter": {
  "models": {
    "providers": {
      "openrouter": {
        "apiKey": "${OPENROUTER_API_KEY}
    }
  },
  "channels": {
    "slack": {
      "botToken": "${SLACK_BOT_TOKEN}",
      "appToken": "${SLACK_APP_TOKEN}",
      "dmPolicy": "allowlist"
    }
  }
}
}

Step 4: Start and Test

# Start the gateway
openclaw gateway start

# Check connection status
openclaw status

# View real-time logs
openclaw logs --follow

Access Control

Slack supports the following access control policies:

DM Policies

Policy Description
allowlist Only senders in allowFrom list are processed
pairing Unknown senders receive a pairing code; admin must approve
open All DMs are processed (requires allowFrom: ["*"])

Group Policies

Policy Description
allowlist Only groups in groupAllowFrom are processed
open All groups are processed

Deploy Options

Choose how to deploy your Slack + OpenRouter setup: