logo
icon

OpenAB Grok

Open Agent Broker — a lightweight Rust harness that bridges Discord and Slack to any ACP-compatible coding CLI over stdio JSON-RPC. This template uses Grok Build (xAI's official coding agent CLI) as the backend via `grok agent stdio`. Source: https://github.com/openabdev/openab

template cover
Deployed0 times
PublisherzeaburZeabur
Created2026-05-17
Minimum2 Cores4 GB
Recommended4 Cores8 GB
Tags
AIDeveloper ToolsDiscordSlack

OpenAB Grok

OpenAB is a lightweight, open-source Rust harness that bridges Discord and Slack to any Agent Client Protocol-compatible coding CLI over stdio JSON-RPC.

This template runs the Grok variant — it uses Grok Build, xAI's official coding agent CLI, as the backend via grok agent stdio.

Important Notes

  • Image tag: This template uses a pinned version (0.8.3-beta.11). To upgrade, change the image tag in Zeabur Dashboard → Service → Settings. Available tags: GitHub Packages.
  • Persistent storage: /home/agent is mounted as a persistent volume. Grok credentials (~/.grok/auth.json), settings, and config survive restarts.

Setup

1. Get a Discord Bot Token

  1. Go to https://discord.com/developers/applications and click New Application
  2. Navigate to Bot tab → click Reset Token → copy the token
  3. On the same page, scroll down and enable Message Content Intent under Privileged Gateway Intents
  4. Go to OAuth2 → URL Generator → check scope bot → check permissions: Send Messages, Send Messages in Threads, Create Public Threads, Read Message History, Add Reactions, Manage Messages
  5. Copy the generated URL and open it in your browser to invite the bot to your server

2. Get Discord Channel IDs

  1. Open Discord → go to User Settings (gear icon) → Advanced → enable Developer Mode
  2. Right-click the channel where you want the bot to respond → Copy Channel ID
  3. For multiple channels, separate IDs with commas: 123456789012345678,234567890123456789

3. Choose an Auth Method

Grok Build supports three credential sources. Pick whichever fits your use case.

MethodWhen to useHow
API KeyPay-per-token API billing, CI / bot deploymentsGet a key from console.x.ai → paste into GROK_CODE_XAI_API_KEY variable
Device-AuthSuperGrok paid subscriptionLeave GROK_CODE_XAI_API_KEY empty. After deploy, run runuser -u agent -- grok login --device-auth in the service Exec terminal. The CLI prints a short code + URL — open the URL on any device, enter the code, approve. Token stored at /home/agent/.grok/auth.json (persists across restarts).
Deployment KeyxAI enterprise customersAdd GROK_DEPLOYMENT_KEY as a custom variable in Zeabur Dashboard → Service → Variables after deploy. Takes precedence over auth.json.

💡 Unlike OAuth flows that bind to a loopback port, Grok's device-auth works in any headless environment (no port-forward, no curl-the-callback trick).

4. Deploy

Fill in the variables and click deploy. The service connects to Discord automatically. If you used Device-Auth, run the login command in step 3 after the service is running.

Slack Setup (Optional)

OpenAB supports Slack via Socket Mode — no public URL needed.

  1. Go to https://api.slack.com/appsCreate New AppFrom scratch
  2. Socket Mode → Enable → generate an App-Level Token with scope connections:write → copy the xapp-... token (SLACK_APP_TOKEN)
  3. Event Subscriptions → Enable Events → add bot events: app_mention, message.channels, message.groups
  4. OAuth & Permissions → Bot Token Scopes → add: app_mentions:read, chat:write, channels:history, groups:history, channels:read, groups:read, reactions:write, files:read, users:read
  5. Install App → Install to Workspace → copy the xoxb-... token (SLACK_BOT_TOKEN)
  6. In each Slack channel you want the bot in, run /invite @YourAppName

Set SLACK_BOT_TOKEN and SLACK_APP_TOKEN in the template variables before deploying. Both Discord and Slack can run simultaneously.

Add Messaging Platforms (Telegram / LINE / Feishu / Google Chat / MS Teams / WeCom)

To bridge Telegram, LINE, Feishu/Lark, Google Chat, MS Teams, or WeCom, deploy the OpenAB Gateway template into the same Zeabur project. Then add these environment variables to this service:

  • GATEWAY_URL = ws://openab-gateway:8080/ws
  • GATEWAY_PLATFORM = one of telegram, line, feishu, googlechat, teams, wecom

Restart the service. The startup script auto-injects the [gateway] block into config.toml.

Usage

  • @mention the bot in an allowed Discord channel or Slack channel to start a conversation
  • OpenAB creates a thread for multi-turn conversations — no @mention needed for follow-ups
  • Each thread maps to a persistent Grok session (24h TTL)

Customization

FileDescription
/home/agent/.config/openab/config.tomlOpenAB config (sessions, reactions, STT, etc.)
/home/agent/.grok/auth.jsonGrok OAuth credentials (managed by grok login)
/home/agent/.grok/config.tomlGrok runtime config

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 OpenAB config options, see the OpenAB documentation. For Grok config options, see the Grok Build docs.

Disabling

Leave Discord Bot Token empty (and SLACK_BOT_TOKEN empty). The service sleeps instead of crashing.