{"id":46153197,"url":"https://github.com/0xranx/golembot","last_synced_at":"2026-04-06T08:02:36.389Z","repository":{"id":341348878,"uuid":"1169838651","full_name":"0xranx/golembot","owner":"0xranx","description":"Any Agent × Any Provider × Anywhere. Connect Cursor, Claude Code, OpenCode, or Codex to Slack, Telegram, Discord, Feishu, DingTalk, WeCom, WeChat — with any LLM provider.","archived":false,"fork":false,"pushed_at":"2026-03-29T02:44:42.000Z","size":8425,"stargazers_count":225,"open_issues_count":3,"forks_count":24,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-03-29T04:31:22.804Z","etag":null,"topics":["ai","ai-agent","ai-assistant","bot-framework","chatbot","claude-code","cli","codex","coding-agent","cursor","dingtalk","discord","feishu","lark","llm","opencode","slack","telegram","typescript","wecom"],"latest_commit_sha":null,"homepage":"https://0xranx.github.io/golembot/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xranx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-01T09:50:33.000Z","updated_at":"2026-03-29T02:59:51.000Z","dependencies_parsed_at":"2026-03-07T18:00:39.962Z","dependency_job_id":null,"html_url":"https://github.com/0xranx/golembot","commit_stats":null,"previous_names":["0xranx/golembot"],"tags_count":113,"template":false,"template_full_name":null,"purl":"pkg:github/0xranx/golembot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xranx%2Fgolembot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xranx%2Fgolembot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xranx%2Fgolembot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xranx%2Fgolembot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xranx","download_url":"https://codeload.github.com/0xranx/golembot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xranx%2Fgolembot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31464118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agent","ai-assistant","bot-framework","chatbot","claude-code","cli","codex","coding-agent","cursor","dingtalk","discord","feishu","lark","llm","opencode","slack","telegram","typescript","wecom"],"created_at":"2026-03-02T09:11:15.801Z","updated_at":"2026-04-06T08:02:36.383Z","avatar_url":"https://github.com/0xranx.png","language":"TypeScript","funding_links":[],"categories":["Agent Infrastructure","Agent Bridges"],"sub_categories":["Multi-Agent Orchestration"],"readme":"[English](README.md) | [中文](README.zh-CN.md)\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/logo-golem-light.svg\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/logo-golem-dark.svg\" alt=\"GolemBot\" width=\"560\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://0xranx.github.io/golembot/\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-0xranx.github.io%2Fgolembot-blue?style=for-the-badge\" alt=\"Documentation\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/0xranx/golembot/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/0xranx/golembot/ci.yml?branch=main\u0026style=for-the-badge\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/golembot\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/golembot.svg?style=for-the-badge\" alt=\"npm version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://nodejs.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg?style=for-the-badge\" alt=\"Node.js\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/tgU5FXChgM\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eAny Agent × Any Provider × Anywhere\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://clawhub.ai\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/0xranx/golembot/main/docs/public/icons/clawhub.png\" alt=\"ClawHub\" width=\"28\" valign=\"middle\"\u003e\u003c/a\u003e\n  Compatible with \u003ca href=\"https://clawhub.ai\"\u003e\u003cstrong\u003e13,000+ OpenClaw community skills\u003c/strong\u003e\u003c/a\u003e — the largest AI agent skill ecosystem. One command to search and install.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  📖 \u003ca href=\"https://0xranx.github.io/golembot/\"\u003e\u003cstrong\u003eDocumentation \u0026 Guides → 0xranx.github.io/golembot\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/7abddbd6-56c8-4ae3-8e5b-72e6f0104257\" width=\"720\" autoplay muted loop playsinline\u003e\n    \u003ca href=\"https://github.com/user-attachments/assets/7abddbd6-56c8-4ae3-8e5b-72e6f0104257\"\u003eWatch the demo\u003c/a\u003e\n  \u003c/video\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eOne command to connect your Coding Agent to Telegram \u0026 Discord\u003c/em\u003e\u003c/p\u003e\n\n---\n\nCursor, 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.\n\n**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.\n\n## Run Your Coding Agent Everywhere\n\n### On IM — your team's 24/7 AI teammate\n\n```bash\ngolembot init -e claude-code -n my-bot\ngolembot gateway    # Slack, Telegram, Discord, Feishu, DingTalk, WeCom, WeChat\n```\n\nYour 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.\n\n### In your product — full agent power, 5 lines of code\n\n```typescript\nimport { createAssistant } from 'golembot';\nconst bot = createAssistant({ dir: './my-agent' });\n\nfor await (const event of bot.chat('Analyze last month sales data')) {\n  if (event.type === 'text') process.stdout.write(event.content);\n}\n```\n\nEmbed into Slack bots, internal tools, SaaS products, customer support — anything that speaks Node.js.\n\n## Why GolemBot, not another AI framework?\n\n| | GolemBot | Traditional AI Frameworks |\n|---|---|---|\n| **AI brain** | Cursor / Claude Code / OpenCode / Codex — battle-tested, full coding ability | You wire up LLM APIs + tools from scratch |\n| **Setup** | `golembot init` → done | Chains, RAG, vector DB, prompt tuning... |\n| **Auto-upgrade** | Agent gets smarter? Your assistant gets smarter. Zero code changes. | You maintain everything yourself |\n| **Transparency** | `ls` the directory = see what the assistant knows and does | Black box pipelines |\n| **Engine lock-in** | Change one line in config to swap engines | Rewrite everything |\n| **Provider freedom** | 4 engines × any provider — OpenRouter, MiniMax, DeepSeek, SiliconFlow. One config block. | Locked to one LLM provider per framework |\n| **Skills** | 13,000+ community skills from ClawHub, one command to install | Write your own tools and prompts from scratch |\n| **Scheduled tasks** | Built-in cron scheduler — daily standups, dependency audits, test reports pushed to IM | Build your own job system |\n| **Multimodal** | Image messages from IM → saved to disk → agent reads and analyzes. All 7 channels supported. | Parse platform APIs yourself |\n\n## Quick Start\n\n```bash\nnpm install -g golembot\n\nmkdir my-bot \u0026\u0026 cd my-bot\ngolembot onboard      # guided setup (recommended)\n\n# Or manually:\ngolembot init -e claude-code -n my-bot\ngolembot run          # REPL conversation\ngolembot gateway      # start IM + HTTP service + Dashboard\ngolembot fleet ls     # list all running bots\ngolembot skill search \"data analysis\"  # browse 13,000+ ClawHub skills\n```\n\nLong 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.\n\n### Dashboard \u0026 Fleet\n\nEvery `golembot gateway` instance comes with a built-in web Dashboard showing real-time metrics, channel status, and a quick-test console:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/dashboard.png\" alt=\"GolemBot Dashboard\" width=\"720\"\u003e\n\u003c/p\u003e\n\nRunning multiple bots? `golembot fleet serve` aggregates them into a single Fleet Dashboard:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/fleet-dashboard.png\" alt=\"GolemBot Fleet Dashboard\" width=\"720\"\u003e\n\u003c/p\u003e\n\n## Architecture\n\n```\nSlack / Telegram / Discord / Feishu / DingTalk / WeCom / WeChat / HTTP API\n    Custom Adapters (email, GitHub Issues, ...)\n                    │\n                    ▼\n         ┌─────────────────────────┐\n         │     Gateway Service     │\n         │  (Channel adapters +    │\n         │   HTTP service)         │\n         └────────────┬────────────┘\n                      │\n              createAssistant()\n                      │\n          ┌───────┬───────┬───────┐\n          ▼       ▼       ▼       ▼\n       Cursor  Claude  OpenCode  Codex\n               Code\n          ↕ Provider Routing (OpenRouter, MiniMax, ...)\n```\n\n## Engine Comparison\n\n| | Cursor | Claude Code | OpenCode | Codex |\n|---|---|---|---|---|\n| Skill Injection | `.cursor/skills/` | `.claude/skills/` + CLAUDE.md | `.opencode/skills/` + opencode.json | `AGENTS.md` at workspace root |\n| Session Resume | `--resume` | `--resume` | `--session` | `exec resume \u003cthread_id\u003e` |\n| API Key | CURSOR_API_KEY | ANTHROPIC_API_KEY | Depends on Provider | `CODEX_API_KEY` (preferred) / ChatGPT OAuth |\n| Runtime Mode | `--force --trust --sandbox disabled` | `--dangerously-skip-permissions` | permission config | default `unrestricted`; also supports `sandbox` / `approval` / `search` / `addDirs` |\n\nThe `StreamEvent` interface is identical across all engines — switching requires zero code changes.\n\nIf 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.\n\nIf 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\n\n## Configuration\n\n`golem.yaml` — the single config file:\n\n```yaml\nname: my-assistant\nengine: claude-code\n\n# Optional: route engine to a third-party LLM provider\nprovider:\n  baseUrl: \"https://openrouter.ai/api\"\n  apiKey: \"${OPENROUTER_API_KEY}\"\n  model: \"anthropic/claude-sonnet-4\"\n\nchannels:\n  slack:\n    botToken: ${SLACK_BOT_TOKEN}\n    appToken: ${SLACK_APP_TOKEN}\n  telegram:\n    botToken: ${TELEGRAM_BOT_TOKEN}\n  discord:\n    botToken: ${DISCORD_BOT_TOKEN}\n    botName: my-assistant        # optional — normalizes @mention tokens in channel messages\n  feishu:\n    appId: ${FEISHU_APP_ID}\n    appSecret: ${FEISHU_APP_SECRET}\n  # Custom adapter — local file or npm package\n  my-email:\n    _adapter: ./adapters/email-adapter.js\n    token: ${EMAIL_TOKEN}\n\n# Optional: Codex runtime controls (Codex engine only)\ncodex:\n  mode: unrestricted   # compatibility alias; set safe to keep sandboxing\n  sandbox: workspace-write\n  approval: on-request\n  search: true\n  addDirs:\n    - ../shared-assets\n\ngateway:\n  port: 3000\n  token: ${GOLEM_TOKEN}\n```\n\nSensitive fields support `${ENV_VAR}` references. Custom channel adapters can be local `.js`/`.mjs` files or npm packages — [see the adapter guide](https://0xranx.github.io/golembot/api/channel-adapter).\n\n## Skill System\n\nA Skill is a directory containing `SKILL.md` + optional scripts. Drop it in, the assistant gains new abilities. Remove it, the ability is gone.\n\n```\nskills/\n├── general/          # Built-in: general assistant\n│   └── SKILL.md\n├── im-adapter/       # Built-in: IM reply conventions\n│   └── SKILL.md\n└── my-custom-skill/  # Your own\n    ├── SKILL.md\n    └── analyze.py\n```\n\n`ls skills/` is the complete list of what your assistant can do.\n\n## 13,000+ Skills from ClawHub\n\nGolemBot is fully compatible with [ClawHub](https://clawhub.ai) — 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.\n\n```bash\ngolembot skill search \"data analysis\"       # discover skills\ngolembot skill add clawhub:data-analysis    # one command to install\n```\n\n**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.\n\nAll skill commands support `--json` for programmatic access. The pluggable registry interface supports additional skill sources beyond ClawHub.\n\n## Docker Deployment\n\n```dockerfile\nFROM node:22-slim\nRUN npm install -g golembot\nWORKDIR /assistant\nCOPY . .\nEXPOSE 3000\nCMD [\"golembot\", \"gateway\"]\n```\n\n## Development\n\n```bash\ngit clone https://github.com/0xranx/golembot.git\ncd golembot\npnpm install\npnpm run build\npnpm run test          # Unit tests (1252+)\npnpm run e2e:opencode  # End-to-end tests (OpenCode)\npnpm run e2e:codex     # End-to-end tests (Codex)\npnpm run e2e:codex:launch  # Real Codex launch verification (flags, resume, HTTP path)\n```\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xranx%2Fgolembot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xranx%2Fgolembot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xranx%2Fgolembot/lists"}