Any Agent × Any Provider × Anywhere. Connect Cursor, Claude Code, OpenCode, or Codex to Slack, Telegram, Discord, Feishu, DingTalk, WeCom, WeChat — with any LLM provider.
$ npx -y skills add 0xranx/golembot --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: 0xranx/golembot
What's inside
Cursor, Claude Code, OpenCode, Codex — these Coding Agents can already write code, run scripts, analyze data, and reason through complex tasks. But they're stuck in an IDE or a terminal window.
GolemBot gives them a body. One command connects your Coding Agent to Slack, Telegram, Discord, Feishu, DingTalk, WeCom, WeChat, or any HTTP client — with any LLM provider. Route Claude Code through OpenRouter, run Codex on MiniMax, or point OpenCode at DeepSeek — one config block, zero code changes. Write a custom adapter to plug in email, GitHub Issues, or any other message source. Or embed into your own product with 5 lines of code. No AI framework, no prompt engineering — the agent you already have is the brain.
golembot init -e claude-code -n my-bot
golembot gateway # Slack, Telegram, Discord, Feishu, DingTalk, WeCom, WeChat
Your colleagues @ the bot in group chat. It can write code, analyze files, answer questions — because behind it is a real Coding Agent, not a thin API wrapper.
import { createAssistant } from 'golembot';
const bot = createAssistant({ dir: './my-agent' });
for await (const event of bot.chat('Analyze last month sales data')) {
if (event.type === 'text') process.stdout.write(event.content);
}
Embed into Slack bots, internal tools, SaaS products, customer support — anything that speaks Node.js.
| GolemBot | Traditional AI Frameworks | |
|---|---|---|
| AI brain | Cursor / Claude Code / OpenCode / Codex — battle-tested, full coding ability | You wire up LLM APIs + tools from scratch |
| Setup | golembot init → done | Chains, RAG, vector DB, prompt tuning... |
| Auto-upgrade | Agent gets smarter? Your assistant gets smarter. Zero code changes. | You maintain everything yourself |
| Transparency | ls the directory = see what the assistant knows and does | Black box pipelines |
| Engine lock-in | Change one line in config to swap engines | Rewrite everything |
| Provider freedom | 4 engines × any provider — OpenRouter, MiniMax, DeepSeek, SiliconFlow. One config block. | Locked to one LLM provider per framework |
| Skills | 13,000+ community skills from ClawHub, one command to install | Write your own tools and prompts from scratch |
| Scheduled tasks | Built-in cron scheduler — daily standups, dependency audits, test reports pushed to IM | Build your own job system |
| Multimodal | Image messages from IM → saved to disk → agent reads and analyzes. All 7 channels supported. | Parse platform APIs yourself |
npm install -g golembot
mkdir my-bot && cd my-bot
golembot onboard # guided setup (recommended)
# Or manually:
golembot init -e claude-code -n my-bot
golembot run # REPL conversation
golembot gateway # start IM + HTTP service + Dashboard
golembot fleet ls # list all running bots
golembot skill search "data analysis" # browse 13,000+ ClawHub skills
Long task still running? Use /stop in REPL or IM, assistant.cancel(sessionKey?) in code, or POST /abort over HTTP to cancel the current task without clearing session history.
Every golembot gateway instance comes with a built-in web Dashboard showing real-time metrics, channel status, and a quick-test console:
Running multiple bots? golembot fleet serve aggregates them into a single Fleet Dashboard:
Slack / Telegram / Discord / Feishu / DingTalk / WeCom / WeChat / HTTP API
Custom Adapters (email, GitHub Issues, ...)
│
▼
┌─────────────────────────┐
│ Gateway Service │
│ (Channel adapters + │
│ HTTP service) │
└────────────┬────────────┘
│
createAssistant()
│
┌───────┬───────┬───────┐
▼ ▼ ▼ ▼
Cursor Claude OpenCode Codex
Code
↕ Provider Routing (OpenRouter, MiniMax, ...)
| Cursor | Claude Code | OpenCode | Codex | |
|---|---|---|---|---|
| Skill Injection | .cursor/skills/ | .claude/skills/ + CLAUDE.md | .opencode/skills/ + opencode.json | AGENTS.md at workspace root |
| Session Resume | --resume | --resume | --session | exec resume <thread_id> |
| API Key | CURSOR_API_KEY | ANTHROPIC_API_KEY | Depends on Provider | CODEX_API_KEY (preferred) / ChatGPT OAuth |
| Runtime Mode | --force --trust --sandbox disabled | --dangerously-skip-permissions | permission config | default unrestricted; also supports sandbox / approval / search / addDirs |
The StreamEvent interface is identical across all engines — switching requires zero code changes.
If you run Codex, note that GolemBot defaults to codex.mode: unrestricted. Set codex.mode: safe if you want to keep Codex sandboxed. You can also use fine-grained codex.sandbox, codex.approval, codex.search, and codex.addDirs settings.
If you route Codex through a custom provider, that provider must support the OpenAI Responses API. Providers that only expose /chat/completions or Anthropic-style /messages endpoints will fail. See the Provider Routing guide: https://0xranx.github.io/golembot/guide/provider-routing#codex-requires-responses-api
golem.yaml — the single config file:
name: my-assistant
engine: claude-code
# Optional: route engine to a third-party LLM provider
provider:
baseUrl: "https://openrouter.ai/api"
apiKey: "${OPENROUTER_API_KEY}"
model: "anthropic/claude-sonnet-4"
channels:
slack:
botToken: ${SLACK_BOT_TOKEN}
appToken: ${SLACK_APP_TOKEN}
telegram:
botToken: ${TELEGRAM_BOT_TOKEN}
discord:
botToken: ${DISCORD_BOT_TOKEN}
botName: my-assistant # optional — normalizes @mention tokens in channel messages
feishu:
appId: ${FEISHU_APP_ID}
appSecret: ${FEISHU_APP_SECRET}
# domain: lark # optional — Lark global tenants
# pingTimeout: 30 # optional — WebSocket pong timeout in seconds
# Custom adapter — local file or npm package
my-email:
_adapter: ./adapters/email-adapter.js
token: ${EMAIL_TOKEN}
# Optional: Codex runtime controls (Codex engine only)
codex:
mode: unrestricted # compatibility alias; set safe to keep sandboxing
sandbox: workspace-write
approval: on-request
search: true
addDirs:
- ../shared-assets
gateway:
port: 3000
token: ${GOLEM_TOKEN}
Sensitive fields support ${ENV_VAR} references. Custom channel adapters can be local .js/.mjs files or npm packages — see the adapter guide.
A Skill is a directory containing SKILL.md + optional scripts. Drop it in, the assistant gains new abilities. Remove it, the ability is gone.
skills/
├── general/ # Built-in: general assistant
│ └── SKILL.md
├── im-adapter/ # Built-in: IM reply conventions
│ └── SKILL.md
└── my-custom-skill/ # Your own
├── SKILL.md
└── analyze.py
ls skills/ is the complete list of what your assistant can do.
GolemBot is fully compatible with ClawHub — the largest AI agent skill marketplace by OpenClaw. The SKILL.md format is 100% compatible, so all 13,000+ community skills work out of the box.
golembot skill search "data analysis" # discover skills
golembot skill add clawhub:data-analysis # one command to install
Agent-powered skill discovery: Your agent can search and install skills autonomously during conversations. Ask it "find me a good code review skill" — it searches ClawHub, shows results, and installs on your confirmation.
All skill commands support --json for programmatic access. The pluggable registry interface supports additional skill sources beyond ClawHub.
FROM node:22-slim
RUN npm install -g golembot
WORKDIR /assistant
COPY . .
EXPOSE 3000
CMD ["golembot", "gateway"]
git clone https://github.com/0xranx/golembot.git
cd golembot
pnpm install
pnpm run build
pnpm run test # Unit tests (1252+)
pnpm run e2e:opencode # End-to-end tests (OpenCode)
pnpm run e2e:codex # End-to-end tests (Codex)
pnpm run e2e:codex:launch # Real Codex launch verification (flags, resume, HTTP path)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
.cursor/
rules/
architecture-constraints.mdc
engine-internals.mdc
testing-conventions.mdc
.dockerignore
.env.example
.github/
ISSUE_TEMPLATE/
bug_report.md
feature_request.md
PULL_REQUEST_TEMPLATE.md
workflows/
ci.yml
docs.yml
release.yml
windows-spawn-smoke.yml
.gitignore
.husky/
pre-commit
.npmignore
.npmrc
.releaserc.json
AGENTS.md
biome.json
CHANGELOG.md
CLAUDE.md
CONTRIBUTING.md
dist/
channel.d.ts
channel.d.ts.map
channel.js
channel.js.map
channels/
dingtalk.d.ts
dingtalk.d.ts.map
dingtalk.js
dingtalk.js.map
discord.d.ts
discord.d.ts.map
discord.js
discord.js.map
feishu-format.d.ts
feishu-format.d.ts.map
feishu-format.js
feishu-format.js.map
feishu.d.ts
feishu.d.ts.map
feishu.js
feishu.js.map
slack-format.d.ts
slack-format.d.ts.map
slack-format.js
slack-format.js.map
slack.d.ts
slack.d.ts.map
slack.js
slack.js.map
telegram-format.d.ts
telegram-format.d.ts.map
telegram-format.js
telegram-format.js.map
telegram.d.ts
telegram.d.ts.map
telegram.js
telegram.js.map
wecom.d.ts
wecom.d.ts.map
wecom.js
wecom.js.map
weixin.d.ts
weixin.d.ts.map
weixin.js
weixin.js.map
cli-utils.d.ts
cli-utils.d.ts.map
cli-utils.js
cli-utils.js.map
cli.d.ts
cli.d.ts.map
cli.js
cli.js.map
codex-provider-compat.d.ts
codex-provider-compat.d.ts.map
codex-provider-compat.js
codex-provider-compat.js.map
commands.d.ts
commands.d.ts.map
commands.js
commands.js.map
dashboard.d.ts
dashboard.d.ts.map
dashboard.js
dashboard.js.map
doctor.d.ts
doctor.d.ts.map
doctor.js
doctor.js.map
engine.d.ts
engine.d.ts.map
engine.js
engine.js.map
engines/
claude-code.d.ts
claude-code.d.ts.map
claude-code.js
claude-code.js.map
codex.d.ts
codex.d.ts.map
codex.js
codex.js.map
cursor.d.ts
cursor.d.ts.map
cursor.js
cursor.js.map
opencode.d.ts
opencode.d.ts.map
opencode.js
opencode.js.map
provider-env.d.ts
provider-env.d.ts.map
provider-env.js
provider-env.js.map
shared.d.ts
shared.d.ts.map
shared.js
shared.js.map
fleet.d.ts
fleet.d.ts.map
fleet.js
fleet.js.map
gateway.d.ts
gateway.d.ts.map
gateway.js
gateway.js.map
history-fetcher.d.ts
history-fetcher.d.ts.map
history-fetcher.js
history-fetcher.js.map
image-compress.d.ts
image-compress.d.ts.map
image-compress.js
image-compress.js.map
inbox.d.ts
inbox.d.ts.map
inbox.js
inbox.js.map
index.d.ts
index.d.ts.map
index.js
index.js.map
onboard.d.ts
onboard.d.ts.map
onboard.js
onboard.js.map
peer-require.d.ts
peer-require.d.ts.map
peer-require.js
peer-require.js.map
proactive.d.ts
proactive.d.ts.map
proactive.js
proactive.js.map
provider-presets.d.ts
provider-presets.d.ts.map
provider-presets.js
provider-presets.js.map
registry.d.ts
registry.d.ts.map
registry.js
registry.js.map
scheduler.d.ts
scheduler.d.ts.map
scheduler.js
scheduler.js.map
seen-messages.d.ts
seen-messages.d.ts.map
seen-messages.js
seen-messages.js.map
server.d.ts
server.d.ts.map
server.js
server.js.map
session.d.ts
session.d.ts.map
session.js
session.js.map
task-store.d.ts
task-store.d.ts.map
task-store.js
task-store.js.map
token-meta.d.ts
token-meta.d.ts.map
token-meta.js
token-meta.js.map
ui-shared.d.ts
ui-shared.d.ts.map
ui-shared.js
ui-shared.js.map
weixin-login.d.ts
weixin-login.d.ts.map
weixin-login.js
weixin-login.js.map
workspace.d.ts
workspace.d.ts.map
workspace.js
workspace.js.map
docker-compose.yml
Dockerfile
docs/
.vitepress/
config.ts
theme/
custom.css
index.ts
api/
channel-adapter.md
create-assistant.md
http-api.md
stream-events.md
assets/
dashboard.png
demo.mp4
feishu-chat.png
fleet-dashboard.png
logo-golem-dark.svg
logo-golem-light.svg
skill-search.png
social-preview.svg
weixin-image.jpg
weixin-text.png
weixin-voice.jpg
channels/
dingtalk.md
discord.md
feishu.md
overview.md
slack.md
telegram.md
wecom.md
weixin.md
drafts/
wechat-article-outline.md
wechat-article.md
engines/
claude-code.md
codex.md
cursor.md
opencode.md
overview.md
faq.md
guide/
cli-commands.md
configuration.md
dashboard.md
docker.md
embed.md
getting-started.md
group-chat.md
inbox.md
memory.md
onboard-wizard.md
provider-routing.md
scheduled-tasks.md
index.md
launch-copy.md
public/
assets/
dashboard.png
fleet-dashboard.png
icons/
claude.svg
claw.svg
clawhub.png
cpu.svg
cursor.svg
dingtalk.svg
discord.svg
feishu.svg
folder.svg
opencode.svg
plug.svg
slack.svg
telegram.svg
wecom.svg
weixin.svg
logo-dark.svg
logo-icon-dark.svg
logo-icon-light.svg
logo-light.svg
og-image.png
og-image.svg
robots.txt
reference/
architecture.md
coding-cli-claude-code.md
coding-cli-codex.md
coding-cli-comparison.md
coding-cli-cursor.md
coding-cli-docs.md
coding-cli-opencode.md
skills/
builtin.md
create-skill.md
overview.md
testing/
im-playbook.md
issues.md
todo/
bugs-and-debt.md
enhancements.md
phase3-features.md
README.md
zh/
api/
channel-adapter.md
create-assistant.md
http-api.md
stream-events.md
channels/
dingtalk.md
discord.md
feishu.md
overview.md
slack.md
telegram.md
wecom.md
weixin.md
engines/
claude-code.md
codex.md
cursor.md
opencode.md
overview.md
faq.md
guide/
cli-commands.md
configuration.md
dashboard.md
docker.md
embed.md
getting-started.md
group-chat.md
inbox.md
memory.md
onboard-wizard.md
provider-routing.md
scheduled-tasks.md
index.md
reference/
architecture.md
coding-cli-claude-code.md
coding-cli-codex.md
coding-cli-comparison.md
coding-cli-cursor.md
coding-cli-docs.md
coding-cli-opencode.md
skills/
builtin.md
create-skill.md
overview.md
testing/
im-playbook.md
issues.md
examples/
e2e-claude-code.ts
e2e-codex-launch.ts
e2e-codex.ts
e2e-headless.ts
e2e-opencode.ts
e2e-test.ts
feishu-format-demo.ts
im-format-test.ts
im-image-test.ts
multi-bot-group/
.gitignore
adapters/
mock-group-adapter.mjs
bot-a/
golem.yaml
skills/
researcher/
SKILL.md
bot-b/
golem.yaml
skills/
coder/
SKILL.md
README.md
run.mjs
golem.yaml
LICENSE
notes.md
package.json
pnpm-lock.yaml
pnpm-workspace.yaml
README.md
README.zh-CN.md
skills/
escalation/
... 154 moreFAQ
golembot is a Claude Code plugin with 13 hand-picked skills for automation work, indexed on Flowy. Install it with the command on its page. It includes escalation, general, im-adapter. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.