logo
Back to Templates
icon

OpenAB Copilot

Open Agent Broker — a lightweight Rust harness that bridges Discord to any ACP-compatible coding CLI (Claude Code, Codex, Gemini, Kiro, Copilot) over stdio JSON-RPC. Source: https://github.com/openabdev/openab

template cover
Dideploy0 kali
PenerbitzeaburZeabur
Dibuat2026-04-19
Minimum2 Core4 GB
Direkomendasikan4 Core8 GB
Tag
AIDeveloper ToolsDiscord

OpenAB Copilot

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 Copilot variant (openab-copilot) which uses GitHub Copilot CLI as the agent backend.

Important Notes

  • Paid subscription required: GitHub Copilot CLI requires a paid Copilot plan (Pro, Pro+, Business, or Enterprise). The Free tier does not include CLI/ACP access.
  • Public preview: Copilot CLI ACP support has been in public preview since Jan 2026. Behavior may change.
  • Auth after deploy: Unlike Claude/Codex, there is no API-key env var for Copilot. You must run gh auth login inside the container after the first deploy (see below).
  • Image tag: This template uses a pinned version (0.8.0). To upgrade, change the image tag in Zeabur Dashboard → Service → Settings. Available tags: GitHub Packages.
  • Persistent storage: /home/node is mounted as a persistent volume. Plugins, settings, config, and GitHub OAuth credentials (~/.config/gh/) survive restarts.
  • Config ownership: The container starts as root and switches to node user (uid 1000) before running openab. If you encounter permission issues, restart the service — ownership is fixed automatically on boot.

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. Deploy

Fill in the Discord bot token and (optional) channel IDs, then click deploy. The container will start in sleep mode until Copilot is authenticated.

3. Authenticate with GitHub Copilot (device flow)

After the service starts, open Zeabur Dashboard → Service → Exec and run:

runuser -u node -- gh auth login --hostname github.com --git-protocol https -p https -w

Follow the device-code URL in your browser to authorize. The OAuth token is stored under /home/node/.config/gh/ and persisted across restarts.

Verify with:

runuser -u node -- gh auth status

Then restart the service so openab picks up the new credentials.

4. 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

Usage

  • @mention the bot in an allowed 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 Copilot session (24h TTL)
  • Copilot CLI defaults to Claude Sonnet 4.6; other models (Opus 4.6, Haiku 4.5, GPT-5.3-Codex, Gemini 3 Pro) are selected interactively via /model and are not controllable in ACP mode

Customization

FileDescription
/home/node/.config/openab/config.tomlOpenAB config (sessions, reactions, STT, etc.)
/home/node/.config/gh/GitHub OAuth credentials (from gh auth login)

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/node/.config/openab/config.toml

For config options, see the OpenAB documentation and the Copilot agent guide.

Webhook / Bot Integration

By default, openab ignores messages from other bots and webhooks. To allow webhook-triggered messages (e.g. automated testing or CI pipelines), add the following to your config.toml:

[discord]
allow_bot_messages = "mentions"

With this setting, openab responds to any bot or webhook message that @mentions it. To restrict to a specific webhook, also add:

trusted_bot_ids = ["YOUR_WEBHOOK_USER_ID"]

The webhook user ID is the numeric ID in the webhook URL: https://discord.com/api/webhooks/<ID>/...

Disabling

Leave Discord Bot Token empty. The service sleeps instead of crashing.