Skip to content

Latest commit

 

History

History
127 lines (100 loc) · 5.72 KB

File metadata and controls

127 lines (100 loc) · 5.72 KB

Multi-Agent Setup

You can run multiple agents in a single Helm release. Each agent key in the agents map creates its own Deployment, ConfigMap, Secret, and PVC.

Example: Kiro + Claude Code

helm install openab openab/openab \
  --set agents.kiro.discord.botToken="$KIRO_BOT_TOKEN" \
  --set-string 'agents.kiro.discord.allowedChannels[0]=KIRO_CHANNEL_ID' \
  --set agents.claude.discord.botToken="$CLAUDE_BOT_TOKEN" \
  --set-string 'agents.claude.discord.allowedChannels[0]=CLAUDE_CHANNEL_ID' \
  --set agents.claude.image=ghcr.io/openabdev/openab-claude:latest \
  --set agents.claude.command=claude-agent-acp \
  --set agents.claude.workingDir=/home/node

How It Works

  • Each agents.<name> entry creates an independent set of Kubernetes resources (Deployment, ConfigMap, Secret, PVC)
  • Each agent gets its own Discord bot token and allowed channels
  • Agents run in separate pods and don't share state
  • Set agents.<name>.enabled: false to skip creating resources for an agent

Example: All Four Agents

helm install openab openab/openab \
  --set agents.kiro.discord.botToken="$KIRO_BOT_TOKEN" \
  --set-string 'agents.kiro.discord.allowedChannels[0]=KIRO_CHANNEL_ID' \
  --set agents.claude.discord.botToken="$CLAUDE_BOT_TOKEN" \
  --set-string 'agents.claude.discord.allowedChannels[0]=CLAUDE_CHANNEL_ID' \
  --set agents.claude.image=ghcr.io/openabdev/openab-claude:latest \
  --set agents.claude.command=claude-agent-acp \
  --set agents.claude.workingDir=/home/node \
  --set agents.codex.discord.botToken="$CODEX_BOT_TOKEN" \
  --set-string 'agents.codex.discord.allowedChannels[0]=CODEX_CHANNEL_ID' \
  --set agents.codex.image=ghcr.io/openabdev/openab-codex:latest \
  --set agents.codex.command=codex-acp \
  --set agents.codex.workingDir=/home/node \
  --set agents.gemini.discord.botToken="$GEMINI_BOT_TOKEN" \
  --set-string 'agents.gemini.discord.allowedChannels[0]=GEMINI_CHANNEL_ID' \
  --set agents.gemini.image=ghcr.io/openabdev/openab-gemini:latest \
  --set agents.gemini.command=gemini \
  --set agents.gemini.args='{--acp}' \
  --set agents.gemini.workingDir=/home/node

See individual agent docs for authentication steps:

Bot-to-Bot Communication

By default, each agent ignores messages from other bots. To enable multi-agent collaboration in the same channel (e.g. a code review bot handing off to a deploy bot), configure allow_bot_messages in each agent's config.toml:

[discord]
allow_bot_messages = "mentions"  # recommended

Modes

Value Behavior Loop risk
"off" (default) Ignore all bot messages None
"mentions" Only respond to bot messages that @mention this bot Very low — bots must explicitly @mention each other
"all" Respond to all bot messages Mitigated by turn cap (10 consecutive bot messages)

Which mode should I use?

"mentions" is recommended for most setups. It enables collaboration while acting as a natural loop breaker — Bot A only processes Bot B's message if Bot B explicitly @mentions Bot A. Two bots won't accidentally ping-pong.

Use "all" only when bots need to react to each other's messages without explicit mentions (e.g. monitoring bots). A hard cap of 10 consecutive bot-to-bot turns prevents infinite loops.

Example: Code Review → Deploy handoff

┌──────────────────────────────────────────────────────────┐
│ Discord Channel #dev                                     │
│                                                          │
│  👤 User: "Review this PR and deploy if it looks good"   │
│       │                                                  │
│       ▼                                                  │
│  🤖 Kiro (allow_bot_messages = "off"):                   │
│       "LGTM — tests pass, no security issues.            │
│        @DeployBot please deploy to staging."             │
│       │                                                  │
│       ▼                                                  │
│  🤖 Deploy Bot (allow_bot_messages = "mentions"):        │
│       "Deploying to staging... ✅ Done."                  │
└──────────────────────────────────────────────────────────┘

Note: the review bot doesn't need allow_bot_messages enabled — only the bot that needs to receive bot messages does.

Helm values

helm install openab openab/openab \
  --set agents.kiro.discord.botToken="$KIRO_BOT_TOKEN" \
  --set agents.kiro.discord.allowBotMessages="off" \
  --set agents.deploy.discord.botToken="$DEPLOY_BOT_TOKEN" \
  --set agents.deploy.discord.allowBotMessages="mentions"

Safety

  • The bot's own messages are always ignored, regardless of setting
  • "mentions" mode is a natural loop breaker — no rate limiter needed
  • "all" mode has a hard cap of 10 consecutive bot-to-bot turns per channel
  • Channel and user allowlists still apply to bot messages
  • trusted_bot_ids further restricts which bots are allowed through

Restricting to specific bots

If you only want to accept messages from specific bots (e.g. your own deploy bot), add their Discord user IDs:

[discord]
allow_bot_messages = "mentions"
trusted_bot_ids = ["123456789012345678"]  # only this bot's messages pass through

When trusted_bot_ids is empty (default), any bot can pass through (subject to the mode check). When set, only listed bots are accepted — all others are silently ignored.