A lightweight, secure, cloud-native ACP harness that bridges Discord and any ACP-compatible coding CLI.
A lightweight, secure, cloud-native ACP harness that bridges Discord and any ACP-compatible coding CLI.
English | 繁體中文
A lightweight, secure, cloud-native ACP harness that bridges Discord, Slack, and any Agent Client Protocol-compatible coding CLI (Kiro CLI, Claude Code, Codex, Gemini, OpenCode, MiMo-Code, Kimi Code, Copilot CLI, Grok Build, Devin, Antigravity, Pi, etc.) over stdio JSON-RPC — delivering the next-generation development experience. Telegram, LINE, Feishu/Lark, Google Chat, WeCom, and Microsoft Teams are available through gateway adapters, either compiled into the unified binary or deployed as the standalone Custom Gateway.
Join our community! Come say hi on Discord — we'd love to have you: OpenAB — Official
…
OpenAB remains a thin broker: platform adapters converge on the same
dispatcher and session pool, then cross one ACP stdio boundary to the selected
agent runtime. Gateway adapters can run as a standalone companion or be
embedded in a unified build without changing that boundary. Platform-edge
labels distinguish inbound delivery from outbound replies: webhook/API for
webhook platforms and WS/webhook for Feishu/Lark.
openab-cp service for direct agent-to-agent delegation over WebSocket, with identity-bound registration and CP-authoritative policy; runtime client and facade land in follow-up releases (docs/control-plane.md)[[reply_to:id]] directive, enabling clear conversation threads in multi-bot channels (docs/output-directives.md)pre_boot) and shutdown (pre_shutdown) for bootstrapping, S3 sync, and state backup (docs/hooks.md)Before running openab, enable these in the Discord Developer Portal:
See docs/discord.md for a detailed step-by-step guide.
Discord
See docs/discord.md for a detailed step-by-step guide.
Slack
See docs/slack.md for a detailed step-by-step guide.
Telegram (via Custom Gateway)
See docs/telegram.md for the full setup guide. Requires the standalone Custom Gateway service.
LINE (via Custom Gateway)
See docs/line.md for the full setup guide. Requires the standalone Custom Gateway service.
Feishu/Lark (via Custom Gateway)
See docs/feishu.md for the full setup guide. Requires the standalone Custom Gateway service. Supports WebSocket long-connection (default, no public URL needed) and HTTP webhook fallback.
Google Chat (via Custom Gateway)
See docs/google-chat.md for the full setup guide. Requires the standalone Custom Gateway service.
WeCom (企业微信) (via Custom Gateway)
See docs/wecom.md for the full setup guide. Requires the standalone Custom Gateway service.
helm repo add openab https://openabdev.github.io/openab
helm repo update
helm install openab openab/openab \
--set agents.kiro.discord.botToken="$DISCORD_BOT_TOKEN" \
--set-string 'agents.kiro.discord.allowedChannels[0]=YOUR_CHANNEL_ID'
# Slack
helm install openab openab/openab \
--set agents.kiro.slack.enabled=true \
--set agents.kiro.slack.botToken="$SLACK_BOT_TOKEN" \
--set agents.kiro.slack.appToken="$SLACK_APP_TOKEN" \
--set-string 'agents.kiro.slack.allowedChannels[0]=C0123456789'
For additional Helm values such as fullnameOverride, nameOverride, envFrom, and agentsMd, see charts/openab/README.md.
kubectl exec -it deployment/openab-kiro -- kiro-cli login --use-device-flow
kubectl rollout restart deployment/openab-kiro
In your Discord channel:
@YourBot explain this code
The bot creates a thread. After that, just type in the thread — no @mention needed.
Slack: @YourBot explain this code in a channel — same thread-based workflow as Discord.
| Agent | CLI | ACP Adapter | Guide |
|---|---|---|---|
| Kiro (default) | kiro-cli acp |
Native | docs/kiro.md |
| Claude Code | claude-agent-acp |
@agentclientprotocol/claude-agent-acp | docs/claude-code.md |
| Codex | codex-acp |
@agentclientprotocol/codex-acp | docs/codex.md |
| Gemini | gemini --acp |
Native | docs/gemini.md |
| OpenCode | opencode acp |
Native | docs/opencode.md |
| MiMo-Code | mimo acp |
Native | docs/mimocode.md |
| Kimi Code | kimi acp |
Native | docs/kimi.md |
| Copilot CLI ⚠️ | copilot --acp --stdio |
Native | docs/copilot.md |
| Cursor | cursor-agent acp |
Native | docs/cursor.md |
| Grok Build | grok agent stdio |
Native | docs/grok.md |
| Devin | devin acp |
Native | docs/devin.md |
| Antigravity | agy-acp |
agy-acp | docs/antigravity.md |
| Pi | pi-acp |
pi-acp | docs/pi.md |
| Native Agent | openab-agent |
Built-in (Rust) | docs/native-agent.md |
Running multiple agents? See docs/multi-agent.md
Run any coding agent remotely on Amazon Bedrock AgentCore — no CLI bundled in the OAB image.
…
[agentcore]
runtime_arn = "arn:aws:bedrock-agentcore:us-east-1:123456789012:runtime/my-agent"
Smaller image (~50MB), persistent filesystem, isolated microVMs, pay-per-use. See docs/agentcore.md for full setup.
Full reference with all options, defaults, and Helm mapping: docs/config-reference.md
…
The Docker image bundles both openab and kiro-cli in a single container.
┌─ Kubernetes Pod ──────────────────────────────────────┐
│ openab (PID 1) │
│ └─ kiro-cli acp --trust-all-tools (child process) │
│ ├─ stdin ◄── JSON-RPC requests │
│ └─ stdout ──► JSON-RPC responses │
│ │
│ PVC (/data) │
│ ├─ ~/.kiro/ (settings, sessions) │
│ └─ ~/.local/share/kiro-cli/ (OAuth tokens) │
└───────────────────────────────────────────────────────┘
kubectl create secret generic openab-secret \
--from-literal=discord-bot-token="your-token"
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/pvc.yaml
kubectl apply -f k8s/deployment.yaml
| Manifest | Purpose |
|---|---|
k8s/deployment.yaml |
Single-container pod with config + data volume mounts |
k8s/configmap.yaml |
config.toml mounted at /etc/openab/ |
k8s/secret.yaml |
DISCORD_BOT_TOKEN injected as env var |
k8s/pvc.yaml |
Persistent storage for auth + settings |
Prefer AWS-native infrastructure over Kubernetes? oabctl is a
CLI that provisions and manages OpenAB agents on Amazon ECS Fargate — one
command bootstraps the cluster/IAM/S3/networking, and one command deploys an
agent, including Telegram/LINE webhook ingress (API Gateway → VPC Link →
Cloud Map) provisioned automatically.
oabctl bootstrap # one-time infra setup
oabctl create my-bot && oabctl apply -f my-bot/manifest.yaml --wait
See docs/oabctl.md for the full guide — installation, manifest schema, ingress/webhooks, secrets, and bootstrap.
MIT
No open issues yet, or sync has not completed.