Open Agent Broker — a lightweight Rust harness that bridges Discord and Slack to any ACP-compatible coding CLI (Claude Code, Codex, Gemini, Kiro) over stdio JSON-RPC. This template uses the Kiro CLI as the agent backend. Source: https://github.com/openabdev/openab

OpenAB is a lightweight, open-source Rust harness that bridges Discord to any Agent Client Protocol-compatible coding CLI over stdio JSON-RPC.
This template deploys the Kiro variant using the base openab image with kiro-cli as the agent backend.
beta channel and auto-updates with each new OpenAB beta release. Switch to stable for production use. To pin a specific version, change the image tag in Zeabur Dashboard → Service → Settings. Available tags: GitHub Packages./home/agent is mounted as a persistent volume. Plugins, settings, config, and credentials survive restarts.bot → check permissions: Send Messages, Send Messages in Threads, Create Public Threads, Read Message History, Add Reactions, Manage Messages123456789012345678,234567890123456789If you have a paid Kiro subscription, go to kiro.dev → Settings → API Keys → create a key and paste it into the KIRO_API_KEY variable. This lets the bot authenticate automatically — no post-deploy steps needed.
Free tier users can leave KIRO_API_KEY empty and authenticate after deployment (see step 5).
Fill in the variables and click deploy. The service connects to Discord automatically.
Skip this step if you set KIRO_API_KEY in step 3.
After the service is running, open the service terminal in Zeabur Dashboard and run:
runuser -u agent -- kiro-cli login --use-device-flow
ℹ️
runuser -u agentruns the login as theagentuser, so credentials are owned correctly from the start — no chown or restart needed.
Follow the on-screen URL and code to complete device flow authorization in your browser. New conversations will pick up the new auth automatically — restart only if you need to invalidate existing in-memory sessions.
OpenAB supports Slack via Socket Mode — no public URL needed.
connections:write → copy the xapp-... token (SLACK_APP_TOKEN)app_mention, message.channels, message.groupsapp_mentions:read, chat:write, channels:history, groups:history, channels:read, groups:read, reactions:write, files:read, users:readxoxb-... token (SLACK_BOT_TOKEN)/invite @YourAppNameSet SLACK_BOT_TOKEN and SLACK_APP_TOKEN in the template variables before deploying. Both Discord and Slack can run simultaneously.
For Telegram, deploy the OpenAB Telegram template and switch its image tag to beta-kiro with the matching OPENAB_AGENT_COMMAND. Other platforms are enabled by environment variables in unified mode (LINE_CHANNEL_SECRET, FEISHU_APP_ID, GOOGLE_CHAT_ENABLED=true, TEAMS_APP_ID, WECOM_CORP_ID) — see the OpenAB docs. Webhook platforms need a public HTTPS domain on the service (port 8080); Feishu connects outbound via WebSocket and needs no domain.
| File | Description |
|---|---|
/home/agent/.config/openab/config.toml | OpenAB config (sessions, reactions, STT, etc.) |
config.toml is created from a built-in template on first boot. After that, edit the file directly — environment variables are only used for initial setup. To reset to defaults, delete the file and restart: rm /home/agent/.config/openab/config.toml
For config options, see the OpenAB documentation.
Leave Discord Bot Token empty. The service sleeps instead of crashing.