Skip to main content

Slack alaiops Bot — Backend Architecture

Slack alaiops Bot — Backend Architecture

Basic Info

  • Workspace: alai-talk.slack.com
  • Bot user: @alaiops (U0AEMU81LBG)
  • Channels: 11 public + 6 private (manual invite required for private)
  • Mode: Socket Mode (no public webhook needed)

Tokens Location

  1. Primary: macOS Keychain
    • slack-bot/slack-bot-token
    • slack-bot/slack-app-token
  2. Fallback 1: Bitwarden/Vault
  3. Fallback 2: Environment variables

Daemon

  • LaunchAgent: com.john.slack-bot
  • PID lookup: pgrep -f slack-bot.js
  • Code: ~/system/tools/slack-bot.js
  • Logs: ~/system/logs/slack-bot.log

Backend Chain (via comms-responder.js)

Priority-based fallback system (lower number = higher priority, faster response):

  1. Groq (priority 5, ~100-500ms) — PRIMARY
    • Model: llama-3.1-8b-instant
    • Added: 2026-04-18
    • Requires: GROQ_API_KEY env var
    • Adapter: ~/system/tools/adapters/groq.js
  2. Claude API (priority 10, ~2s)
  3. Claude CLI (priority 20, ~20s)
  4. Ollama (priority 30, ~40s) — FALLBACK ONLY

Groq Adapter

// Registered in ~/system/tools/adapters/index.js
const groq = require("./groq.js");

// Usage
const response = await groq.send("prompt", {
  model: "llama-3.1-8b-instant",
  temperature: 0.7,
  max_tokens: 512
});

Event Subscriptions

Status: Re-enabled 2026-04-18 after scope fix

Critical fix: Bot NO LONGER requires admin scopes (caused "Enterprise only" error). Removed admin scopes from User token, kept 15 bot scopes.

Active bot scopes (15):

  • app_mentions:read
  • channels:history
  • channels:read
  • chat:write
  • groups:history
  • groups:read
  • im:history
  • im:read
  • im:write
  • mpim:history
  • mpim:read
  • reactions:read
  • reactions:write
  • users:read
  • users:read.email

Dead Pattern Warning

If bot stops responding, check logs first:

tail -100 ~/system/logs/slack-bot.log

Benign pattern (ignore): "Dedup: skipping" — message already processed

Error patterns (investigate):

  • "Socket mode error"
  • "Token invalid"
  • "Groq API error"
  • "All backends failed"

Test Commands

# Send test message
node ~/system/tools/slack.js send general "Test from John"

# Read channel history
node ~/system/tools/slack.js read general 10

# Check bot status
pgrep -f slack-bot.js && echo "Running" || echo "Stopped"

See Also

  • Groq adapter source: ~/system/tools/adapters/groq.js
  • Bot source: ~/system/tools/slack-bot.js
  • Comms responder: ~/system/tools/comms-responder.js

Created: 2026-04-19 | Last updated: 2026-04-18 (Groq backend added)