{"id":48521355,"url":"https://github.com/claypulse/clawscale","last_synced_at":"2026-04-07T21:02:01.093Z","repository":{"id":347689031,"uuid":"1194378349","full_name":"ClayPulse/ClawScale","owner":"ClayPulse","description":"Multi-tenant IM gateway for AI agents. Scale users and agents many-to-many across channels.","archived":false,"fork":false,"pushed_at":"2026-04-05T06:12:00.000Z","size":1196,"stargazers_count":3,"open_issues_count":4,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T06:22:02.629Z","etag":null,"topics":["ai-agent","chatbot","im-gateway","multi-tenant","openclaw","self-hosted"],"latest_commit_sha":null,"homepage":"https://clawscale.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ClayPulse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-03-28T09:18:17.000Z","updated_at":"2026-04-05T06:12:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ClayPulse/ClawScale","commit_stats":null,"previous_names":["claypulse/clawscale"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ClayPulse/ClawScale","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClayPulse%2FClawScale","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClayPulse%2FClawScale/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClayPulse%2FClawScale/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClayPulse%2FClawScale/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClayPulse","download_url":"https://codeload.github.com/ClayPulse/ClawScale/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClayPulse%2FClawScale/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31528751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-agent","chatbot","im-gateway","multi-tenant","openclaw","self-hosted"],"created_at":"2026-04-07T21:01:35.953Z","updated_at":"2026-04-07T21:02:01.084Z","avatar_url":"https://github.com/ClayPulse.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://clawscale.org/logo.png\" alt=\"ClawScale\" width=\"200\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eClawScale\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003cstrong\u003eThe easiest way to deploy AI chatbots to every messaging platform — at scale\u003c/strong\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003eEnglish | \u003ca href=\"README.zh-CN.md\"\u003e中文\u003c/a\u003e\u003c/p\u003e\n\nClawScale is the fastest, simplest way to set up AI-powered chatbots across WhatsApp, Discord, Slack, Telegram, and 14+ instant messaging platforms. Connect any AI backend — OpenClaw, Claude, GPT, or your own models — and go live in minutes, not weeks. Multi-tenant isolation means hundreds or thousands of users can chat simultaneously without interfering with each other. No boilerplate, no infrastructure headaches — just plug in your credentials, pick your AI, and hit **Connect**.\n\n## Why teams choose ClawScale\n\n- **Go live in minutes** — add a channel, paste your credentials, and your AI chatbot is live. No custom code, webhooks, or deployment pipelines to wire up\n- **Every IM platform, one dashboard** — WhatsApp, Discord, Slack, Telegram, Teams, LINE, Signal, WeChat, and more. Manage all your chatbots from a single place\n- **Scale to thousands of users** — each user gets fully isolated conversations, memory, and state. No cross-contamination, no shared context leaking between users\n- **Mix and match AI backends** — run OpenClaw, GPT, Claude, OpenRouter, self-hosted models, or all of them at once. Users can even talk to multiple agents in the same chat\n- **Consumer onboarding portal** — share a single link with your users. They see every available channel and can connect instantly — scan a QR for WeChat, add the bot on Discord via OAuth, message a number on WhatsApp. Fully white-label with custom branding\n- **Built for teams** — RBAC, audit logs, access policies, and project plans from day one. No bolting on security later\n- **Open source and extensible** — MIT licensed. Add custom adapters, swap AI providers, or self-host on your own infrastructure\n\n## Supported channels\n\n| Channel | Connection method |\n|---|---|\n| WhatsApp (Personal) | QR code scan |\n| WhatsApp Business | Meta Cloud API webhook |\n| Discord | Bot token |\n| Telegram | Bot token |\n| Slack | Bot token (Socket Mode) |\n| LINE | Channel access token (webhook) |\n| Signal | signal-cli REST API |\n| Microsoft Teams | Azure Bot Service (webhook) |\n| Matrix | Homeserver URL + access token |\n| WeChat Work (WeCom) | Bot token (WebSocket) |\n| WeChat Personal | QR code scan |\n| Web Chat Widget | Webhook |\n| Instagram | Meta API |\n| Facebook | Webhook |\n\nAdd channels from the dashboard in seconds — provide credentials and hit **Connect**. WhatsApp and WeChat Personal show a QR code for instant pairing. No server configuration or webhook wiring required.\n\n## Supported AI backends\n\nClawScale doesn't lock you into one AI provider. Bring your own keys, mix providers freely, and switch at any time — zero vendor lock-in:\n\n| Backend | Description |\n|---|---|\n| **OpenClaw** | One or more OpenClaw instances with their own tools, memory, and prompts |\n| **OpenAI** | GPT models via OpenAI API |\n| **Anthropic** | Claude models via Anthropic API |\n| **OpenRouter** | Access hundreds of models through one API key |\n| **Pulse** | Pulse Editor AI agent |\n| **CLI Bridge** | Any local CLI agent (e.g. Claude Code) running on your machine — connected via WebSocket tunnel, no public IP needed |\n| **Custom** | Any OpenAI-compatible endpoint (vLLM, Ollama, self-hosted models, etc.) |\n\nUsers can have multiple backends active at once. Replies are labeled by source (e.g. `[GPT-4o]`, `[Claude]`) so users know which agent is responding.\n\n## Getting started\n\n### Prerequisites\n\n- Node.js 20+\n- pnpm\n- Docker (for PostgreSQL)\n\n### Quick start\n\n```bash\n# 1. Start Postgres\ndocker compose up postgres -d\n\n# 2. Configure environment\ncp .env.example .env\n# Edit .env — defaults work for local dev\n\n# 3. Install dependencies\npnpm install\n\n# 4. Push database schema\ncd packages/api \u0026\u0026 pnpm db:push \u0026\u0026 cd ../..\n\n# 5. Start API and web (separate terminals)\ncd packages/api \u0026\u0026 pnpm dev\ncd packages/web \u0026\u0026 pnpm dev\n```\n\n- **Dashboard**: http://localhost:4040\n- **API**: http://localhost:4041\n\nOr run everything with Docker:\n\n```bash\ncp .env.example .env\ndocker compose up --build\n```\n\nOpen the dashboard and **Register** to create your project. You're the admin. From here you can add channels, connect AI backends, and have your first chatbot live in under 5 minutes.\n\n## How it works\n\n```\nEnd-user (WhatsApp, Discord, Slack, etc.)\n    |\n    v\nChannel Adapter ──\u003e POST /gateway/:channelId\n    |\n    v\nMessage Router\n    ├── Parse commands (/team, /backends, etc.)\n    ├── Resolve target backend(s)\n    ├── Load conversation history\n    ├── Call AI backend(s)\n    └── Save messages + return reply\n    |\n    v\nChannel Adapter ──\u003e Reply to end-user\n```\n\n1. A user sends a message on any connected platform\n2. The channel adapter normalizes the message and forwards it to ClawScale\n3. ClawScale routes the message to the right AI backend(s), keeping each user's conversation history isolated\n4. The AI response is sent back through the same channel\n\n## Consumer onboarding portal\n\nClawScale generates a consumer-facing onboarding page for your end-users. Share a single URL and they'll see every connected channel with one-click connection:\n\n```\nhttps://your-clawscale-instance/onboard?tenant=your-project\n```\n\n| Channel | How users connect |\n|---|---|\n| Discord | OAuth invite link — adds the bot to their server |\n| WhatsApp | Save the number and send a message, or scan a QR code |\n| WeChat | Scan a QR code with the WeChat app |\n| Telegram | One-click link opens a chat with the bot |\n| Slack | Install link adds the app to their Slack workspace |\n| LINE, Signal, Teams, Matrix, Web Chat | Platform-specific connect link or instructions |\n\n**White-label branding** — admins can customize the onboarding portal from the dashboard:\n\n- Custom headline and subtitle\n- Custom logo\n- Accent color\n- Option to hide the \"Powered by ClawScale\" footer\n\nThis means developers set up the channels once, and ClawScale provides a polished, branded portal that end-users interact with directly — no additional frontend work needed.\n\n## Attachment support\n\nClawScale passes attachments (images, audio, video, documents) from users straight through to your AI backends. Supported on every channel that carries media:\n\n| Channel | Supported attachment types |\n|---|---|\n| WhatsApp (Personal \u0026 Business) | Images, audio, video, documents |\n| Discord | Images, files |\n| Telegram | Photos, documents, audio, video |\n| Slack | Files |\n| LINE | Images, audio, video, files |\n| Signal | Attachments |\n| Matrix | Files |\n| Microsoft Teams | Files |\n| WeChat Personal \u0026 WeCom | Images |\n\nAI backends that support vision (e.g. GPT-4o, Claude 3) will receive image attachments as part of the conversation. Other backends receive a placeholder noting the attachment.\n\n## CLI Bridge\n\nRun any local CLI agent (such as Claude Code) on your machine and connect it to ClawScale as a backend — no public IP or server deployment required.\n\n```\nYour Machine                          ClawScale Server\n+-----------------+                   +------------------+\n| Local Agent     |                   |                  |\n| (Claude Code)   |\u003c-- spawn         |   ClawScale API  |\n|                 |                   |                  |\n| clawscale-bridge|---WebSocket------\u003e|   /bridge (WS)   |\n|                 |   (outbound)      |                  |\n+-----------------+                   +------------------+\n                                             |\n                                      Chat Platforms\n                                      (Telegram, Discord, etc.)\n```\n\n**Quick start:**\n\n1. Go to **AI Backends** in the dashboard, click **Add backend**, choose **CLI Bridge**, and copy the generated bridge token.\n2. Run the bridge on your machine:\n\n```bash\nnpx @clawscale/cli-bridge \\\n  --server wss://your-clawscale-server/bridge \\\n  --token brg_xxxxxxxxxxxx \\\n  --agent claude-code\n```\n\nThe bridge opens an outbound WebSocket connection (no inbound ports needed) and reconnects automatically with exponential backoff if it drops.\n\n| Option | Description |\n|---|---|\n| `--server` | ClawScale WebSocket URL, e.g. `wss://your-server/bridge` |\n| `--token` | Bridge token from the dashboard |\n| `--agent` | Agent type — currently `claude-code` |\n\n## Chat commands\n\nEnd-users can run commands directly in chat to manage their experience:\n\n| Command | What it does |\n|---|---|\n| `/backends` | List available AI backends |\n| `/team` | Show which backends are active |\n| `/team invite \u003cname\u003e` | Add a backend to the conversation |\n| `/team kick \u003cname\u003e` | Remove a backend |\n| `/clear` | Delete conversation history |\n| `/help` | Show all commands |\n\nTo message a specific backend: `gpt\u003e explain quantum computing`\n\n## Multi-tenant isolation\n\nClawScale is designed for multi-user deployments. Every user's conversations, memory, and state are fully isolated — data never crosses boundaries.\n\n**Access control** — project admins decide who can interact with the bot:\n\n- **Anonymous** — anyone can chat (default)\n- **Whitelist** — only approved users\n- **Blacklist** — block specific users\n\n**Roles** — each project has three roles:\n\n| Role | Access |\n|---|---|\n| **Admin** | Full access — channels, backends, settings, members, audit logs |\n| **Member** | Manage conversations |\n| **Viewer** | Read-only access |\n\n**Plans**: Starter (5 members, 3 channels), Business (50 members, 20 channels), Enterprise (unlimited).\n\n## Why ClawScale over building it yourself?\n\nMost teams that want IM chatbots end up gluing together webhook handlers, message queues, user-state stores, and AI API calls — and then doing it again for every new platform. ClawScale replaces all of that with a single gateway that already handles multi-tenant isolation, conversation routing, attachment forwarding, and backend orchestration out of the box.\n\n## Comparison with OpenClaw\n\nClawScale originated from [OpenClaw](https://github.com/pulseeditor/openclaw). OpenClaw bundles messaging gateways and an AI agent into one process — great for personal use, but conversations bleed into each other when multiple users share the same instance.\n\nClawScale separates the gateway layer from the agent layer, so each can scale independently:\n\n| | OpenClaw | ClawScale |\n|---|---|---|\n| **Architecture** | Monolithic — gateways + agent in one process | Decoupled — gateway layer + pluggable agent backends |\n| **Users** | Single user, shared memory | Multi-tenant with isolated memory per user |\n| **Agents** | One built-in agent | Multiple backends per tenant |\n| **Scaling** | One instance | Horizontal — multiple agents behind one gateway |\n| **Admin controls** | None | Dashboard with RBAC, audit logs, access policies |\n| **Time to deploy** | Manual setup per platform | Minutes — dashboard-driven, no code required |\n\n## Tech stack\n\n- **API** — [Hono](https://hono.dev) + [Prisma](https://prisma.io) + PostgreSQL\n- **Web** — [Next.js](https://nextjs.org) 16 + React 19 + Tailwind CSS\n- **AI** — OpenAI SDK, Anthropic SDK, LangChain\n- **Monorepo** — pnpm workspaces\n\n```\npackages/\n├── api/       # Backend, channel adapters, AI routing, Prisma schema\n├── web/       # Next.js dashboard\n└── shared/    # Shared TypeScript types\n```\n\n## Environment variables\n\n| Variable | Description |\n|---|---|\n| `DATABASE_URL` | PostgreSQL connection string |\n| `JWT_SECRET` | Secret for signing auth tokens |\n| `OPENAI_API_KEY` | OpenAI API key (optional) |\n| `CORS_ORIGIN` | Frontend URL (default: `http://localhost:4040`) |\n| `PORT` | API port (default: `4041`) |\n| `WHATSAPP_AUTH_DIR` | WhatsApp session files directory (default: `./data/whatsapp`) |\n| `OPENCLAW_BIN` | Path to OpenClaw binary (optional) |\n| `OPENCLAW_PORT_BASE` | Dynamic port assignment base (default: `19000`) |\n| `OPENCLAW_DATA_DIR` | Per-tenant OpenClaw data directory (default: `./data/tenants`) |\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclaypulse%2Fclawscale","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclaypulse%2Fclawscale","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclaypulse%2Fclawscale/lists"}