All-in-one Feishu/Lark bot powered by OpenAB + Kiro. Deploys the OAB agent and the Feishu gateway together — fill in App ID and App Secret and you're done. WebSocket mode (outbound-only, no public endpoint needed). Source: https://github.com/openabdev/openab

One-click OpenAB deployment for Feishu/Lark — bot agent + WebSocket gateway bundled together. Just fill in your Feishu App ID and App Secret.
Feishu Open Platform ◀──Outbound WebSocket── ┌──────────────────┐ ◀──WebSocket── ┌────────────┐
│ openab-gateway │ │ openab │
│ (feishu only) │ │ (Kiro CLI)│
└──────────────────┘ └────────────┘
no public ingress internal only
| Service | Purpose | Public |
|---|---|---|
openab | OAB agent running Kiro CLI | No |
openab-gateway | Feishu event WebSocket → OAB WebSocket bridge | No |
Both services are internal-only — the gateway connects outbound to Feishu Open Platform, no inbound webhook or public domain needed.
cli_xxx) and App Secret → paste both into the variables above⚠️ Easy to miss. Without this, the app cannot receive messages.
im.message.receive_v1im:message — send and receive messagesim:message.group_at_msg — receive group @messagesim:message.group_at_msg:readonly — read group @mentionsim:message.p2p_msg:readonly — read DMsim:resource — download images/filescontact:user.base:readonly — resolve display namesIf you have a paid Kiro subscription, go to kiro.dev → Settings → API Keys → create a key and paste it into KIRO_API_KEY. Free tier users skip this and authenticate post-deploy in step 4.
Click deploy. No public domain is assigned — Feishu WebSocket is outbound-only.
Skip if you set KIRO_API_KEY in step 2.
After the openab service is running, open its terminal in Zeabur Dashboard and run:
runuser -u agent -- kiro-cli login --use-device-flow
Follow the URL and code to authorize in your browser.
Add the bot to a Feishu group (or DM it directly) and send a message. In groups, @mention the bot to trigger a response (default behavior). The gateway connects outbound to Feishu, receives the event, forwards it to OAB via internal WebSocket, and OAB replies through the gateway.
Check openab-gateway logs for feishu websocket connected to confirm the outbound link is up.
/home/agent/.config/openab/config.toml — OAB config (sessions, reactions, etc.). Created on first boot from a built-in template with the [gateway] block pre-wired. To regenerate, delete and restart.openab-gateway service in Zeabur Dashboard → Variables → change FEISHU_DOMAIN from feishu to lark and restart.true (bot only responds when @mentioned). To allow all messages in approved groups, add FEISHU_REQUIRE_MENTION=false to the openab-gateway service.stable channel (ghcr.io/openabdev/openab:stable) and auto-updates with each OpenAB stable release. Gateway is pinned at ghcr.io/openabdev/openab-gateway:0.5.1 (no :stable tag yet). To pin or bump, change the tag in Zeabur Dashboard → Service → Settings. Available tags: OpenAB / Gateway.This bundle uses Kiro as the default agent. For Claude / Codex / Cursor / Gemini / OpenCode / Hermes / Grok, deploy the corresponding bot template separately together with the standalone OpenAB Gateway.
See OpenAB Gateway for Telegram, LINE, Google Chat, MS Teams, WeCom. For an all-in-one Telegram bundle, see OpenAB Telegram Bundle.