共计 4876 个字符,预计需要花费 13 分钟才能阅读完成。
本文要介绍的 ClawHost 是 fastclaw-ai 开发的基于 Kubernetes 原生多租户的编排项目,而不是 bfzli 开发的一键 VPS 云托管平台 https://clawhost.cloud/ ,这两个开源项目想要解决的是 OpenClaw 部署场景中的不同问题。本文重点介绍前者,基于 K8s 集群的多租户部署面板。
背景
[[OpenClaw]](前身为 Clawdbot / Moltbot)是 2025 年底由奥地利开发者 Peter Steinberger 创建的开源 AI Agent 框架,上线不到三个月就获得了超过 19 万 GitHub Star。OpenClaw 的核心设计是单用户个人助手,通过 Node.js 长驻服务将 LLM([[Anthropic]]、[[OpenAI]]、本地模型等)连接到本地机器和各种即时通讯平台。
但在企业或 SaaS 场景下,需要为成百上千个用户各自运行一个独立的 OpenClaw 实例。如果每个租户单独部署一台 VPS,成本过高;如果所有人共用一个实例,又无法保证内存和数据的隔离。fastclaw-ai/clawhost 就是为了解决这个矛盾而诞生的。
什么是 ClawHost(fastclaw-ai)
ClawHost 是一个用 [[Go]] 编写的 [[Kubernetes]] 原生平台,提供 RESTful API 来创建、部署和管理多租户环境下的 OpenClaw Bot 实例。每个 Bot 作为独立的 K8s Pod 运行,拥有自己的 Deployment 和 Service,通过子域名路由对外暴露,无需为每个 Bot 单独配置 Ingress。
项目采用 Apache 2.0 协议开源,主要技术栈为 Go 和 TypeScript。
核心架构
ClawHost 的架构分为三层:
Client ──▶ ClawHost(API + Proxy) ──▶ K8s Cluster
具体来说:
- ClawHost 本体:包含 Bot API、Admin API 和 HTTP/WebSocket 反向代理
- [[PostgreSQL]]:存储 App、Bot、Channel 等元数据,与 Pod 内配置双向同步
- K8s 集群:每个 Bot 运行在隔离的 Pod 中,附带 Gateway、IM Channel 和 Device 管理
ClawHost 本身不需要运行在 K8s 集群内部,只需要一个能访问集群 API 的 kubeconfig 即可。这意味着可以在集群外部的管理节点上运行 ClawHost,通过 API 远程控制集群内的 Bot 实例。
核心功能
Bot 生命周期管理。通过 API 对 Bot 实例执行创建、启动、停止、重启、升级和删除操作。每次启动 Bot 时,ClawHost 自动在 K8s 中创建对应的 Deployment 和 Service。
多租户隔离。通过 App 层级实现租户隔离,每个 App 拥有独立的 API Token,App 下的 Bot 按 user_id 归属到具体用户。不同租户之间的 Bot 运行在各自的 Pod 中,计算和网络完全隔离。
IM 渠道集成。支持将 Bot 连接到 [[Telegram]]、[[Slack]]、[[Discord]]、Teams、LINE、[[飞书]] 等即时通讯平台。提供设备配对审批和自动审批机制。
Skills 管理。可以动态地为运行中的 Bot 添加、更新或删除 Skills,无需重新部署。
多模型提供商。支持配置 Anthropic、OpenAI、MiniMax 等多个 AI 模型提供商,可以按 Bot 单独设置。
子域名路由代理。所有流量通过 ClawHost 的代理层转发,支持 HTTP 和 WebSocket。Bot 通过 {bot-id}.{domain} 的子域名模式访问,不需要每个 Bot 单独创建 Ingress 资源。
自动清理。通过 K8s CronJob 定期运行清理任务,自动停止和回收过期的 Bot。默认在过期 72 小时后执行清理,每次批量处理 50 个,优先清理最早过期的 Bot。清理时只删除 K8s 资源释放计算资源,数据库记录和 PVC 数据保留以备恢复。
内置管理面板。在 /admin 路径下提供 Web 管理界面,使用 [[Next.js]] + [[shadcn/ui]] 构建,静态导出后嵌入到 Go 二进制文件中。支持 App 和 Bot 的增删改查、API Token 的复制和重置,在桌面端显示表格视图,移动端自动切换为卡片布局。
部署方式
ClawHost 提供三种部署方式。
Helm Chart 安装(推荐)。先本地构建镜像,然后通过 Helm 一键部署 ClawHost、PostgreSQL 和 RBAC 到 K8s 集群:
docker build -t clawhost:latest .
helm install clawhost deploy/helm/clawhost \
-n clawhost --create-namespace \
--set adminToken="my-admin-token" \
--set domain.botDomain="clawhost.loc"
kubectl 手动部署。依次 apply namespace、RBAC、PVC、secrets、PostgreSQL 和 ClawHost 的 YAML 清单文件。
本地二进制运行。直接在主机上运行 ClawHost 二进制,通过 kubeconfig 连接远程 K8s 集群。适合开发和调试。
Helm values 中可以配置 Bot 的 CPU 和内存限制(默认 2000m CPU、4Gi 内存)、共享 PVC 大小(默认 10Gi)、PostgreSQL 连接、Ingress 等参数。
API 概览
ClawHost 的 API 以 /bot/api/v1 为前缀,通过 Bearer Token 鉴权。主要分为以下几组:
- Admin API:管理 App(创建、列表、更新、删除、重置 Token)和批量升级 Bot
- Bot API:Bot 的 CRUD 和生命周期操作(start/stop/restart),获取状态和连接信息
- Skills API:按名称对 Bot 的 Skill 进行增删改
- IM Channels API:添加、列表、删除渠道,管理设备配对和审批
- Devices API:列出设备、审批设备、撤销设备
- Model Providers API:按提供商管理 AI 模型配置
- Proxy:通过路径
/proxy/{bot_id}/*或子域名将请求转发到目标 Bot
使用流程示例
# 1. 创建 App,获取 API Token
curl -X POST http://localhost:18080/bot/api/v1/admin/apps \
-H "Authorization: Bearer my-admin-token" \
-H "Content-Type: application/json" \
-d '{"name": "my-app"}'
# 2. 使用 App Token 创建 Bot
curl -X POST http://localhost:18080/bot/api/v1/bots \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user_id": "user-001",
"name": "my-bot",
"slug": "my-bot",
"config": {
"model": "claude-sonnet-4-20250514",
"api_key": "sk-ant-xxx"
}
}'
# 3. 启动 Bot(在 K8s 中创建 Deployment + Service)
curl -X POST http://localhost:18080/bot/api/v1/bots/$BOT_ID/start \
-H "Authorization: Bearer $API_TOKEN"
# 4. 通过代理访问 Bot
curl http://localhost:18080/proxy/$BOT_ID/
本地开发中的子域名路由
Bot 的 Web UI 通过子域名访问(如 my-bot.clawhost.loc)。本地开发时可以用 [[Caddy]] 处理 TLS 和子域名转发:
clawhost.loc {
tls internal
reverse_proxy localhost:18080
}
*.clawhost.loc {
tls internal
reverse_proxy localhost:18080
}
由于 /etc/hosts 不支持通配符,需要使用 dnsmasq 或本地 DNS 解析器。在 macOS 上使用 OrbStack 时,可以直接利用 *.orb.local 域名。
与 bfzli/clawhost 的对比
市面上有两个叫 ClawHost 的项目,面向不同的使用场景:
| 维度 | fastclaw-ai/clawhost | bfzli/clawhost |
|---|---|---|
| 定位 | K8s 原生多租户编排平台 | 一键 VPS 云托管平台 |
| 语言 | Go + TypeScript | TypeScript(Hono + React) |
| 隔离方式 | K8s Pod 级别隔离 | 每用户独立 VPS |
| 适用规模 | 数十到数千个 Bot | 单用户到小规模 |
| 云提供商 | 任意 K8s 集群 | Hetzner / DigitalOcean / Vultr |
| 计费 | 自行实现 | 内置 Polar.sh 集成 |
| 许可证 | Apache 2.0 | MIT |
| GitHub Star | 307 | 286 |
如果目标是构建多租户 SaaS 平台或为团队提供 Bot 服务,fastclaw-ai/clawhost 更合适;如果只是想快速给自己或少量用户部署独立的 OpenClaw 实例,bfzli/clawhost 更简单直接。
同类方案对比
OpenClaw 多租户部署领域还有其他方案:
- [[ClawTank]]:托管式 OpenClaw 平台,每个用户一个 Docker 容器,无需技术背景,月费 9 美元起
- [[ClawPod]]:另一个托管式方案,提供多种部署配置
- openclaw-multitenant(OCMT):社区 Fork,提供容器隔离、加密 Vault 和团队协作功能
- openclaw-rocks/k8s-operator:[[Kubernetes]] Operator 方式部署 OpenClaw,提供生产级安全和可观测性
- aws-samples/sample-multi-tenancy-openclaw-on-eks:AWS 官方的 EKS 多租户参考架构
与这些方案相比,ClawHost(fastclaw-ai)的特点在于它是一个完整的编排控制面,不仅管理 Pod 生命周期,还集成了 IM 渠道管理、Skills 管理、模型提供商配置和子域名代理,提供了开箱即用的 Admin UI 和完整的 RESTful API。
适用场景
- 为企业内部多个团队或部门提供各自独立的 AI Agent 服务
- 构建面向外部用户的 OpenClaw SaaS 托管平台
- 教育或培训场景中为每个学员分配独立的 Bot 实例
- 需要集中管理大量 OpenClaw Bot 并实现自动扩缩和清理的运维团队
前置要求
- Go 1.24+(从源码构建时)
- Node.js 20+ 和 npm(构建 Admin UI 时)
- Kubernetes 1.28+ 集群(本地可使用 [[OrbStack]] 或 Docker Desktop)
- kubectl,可选 [[Helm]] v3
相关链接
- fastclaw-ai/clawhost 源码:https://github.com/fastclaw-ai/clawhost
- bfzli/clawhost 源码:https://github.com/bfzli/clawhost
- OpenClaw 多服务器集群部署指南:https://dev.to/linou518/openclaw-guide-ch9-multi-server-cluster-deployment-4h72
- OpenClaw 多租户 Docker 部署教程:https://clawtank.dev/blog/openclaw-multi-tenant-docker-guide
- OpenClaw K8s Operator:https://github.com/openclaw-rocks/k8s-operator
- AWS EKS 多租户参考架构:https://github.com/aws-samples/sample-multi-tenancy-openclaw-on-eks

