AI 原生的任务管理平台,编码 Agent 是一等公民。部署 PostgreSQL (pgvector)、 Go 后端和 Next.js 前端三个服务。

三个服务,不需要外部对象存储。附件写入后端的持久卷。
RESEND_API_KEY 留空,去 backend 服务日志里找验证码,搜索
Verification code。ALLOW_SIGNUP=false 和
DISABLE_WORKSPACE_CREATION=true,然后重启。daemon 跑在你自己的电脑上,不在 Zeabur。Multica 服务端只是 API、 WebSocket 和数据库。
brew install multica-ai/tap/multica
multica setup self-host \
--server-url https://你的API域名 \
--app-url https://你的域名
两个 URL 不一样,这是刻意的。--app-url 是你登录用的 Web 应用;
--server-url 是 API 域名,CLI 在保存配置前会先探测它的 /health。
这个路径 Web 应用不转发,所以把 --server-url 指向应用域名会让 setup
报告服务器不可达。
浏览器两种情况都不受影响:它始终留在应用域名上,包括 WebSocket,因此
Cookie 不会跨域,COOKIE_DOMAIN 保持不设置。
浏览器侧会跟随你访问的主机:Web 应用从自己的 origin 提供 /api、
/auth、/uploads 和 /ws,客户端从 window.location 推导 wss://。
这一侧没有任何东西钉死域名,所以换域名后 UI 和 WebSocket 无需配置即可工作。
不会自动适应的是后端。它从不读取请求的 Host —— 它输出的每个公开 URL 都 来自环境变量。绑定新域名后,在 backend 服务上更新这些变量并重启:
| 变量 | 设置为 | 不更新会怎样 |
|---|---|---|
MULTICA_APP_URL | 新的应用 origin | 引导页显示旧域名;邀请和验证码邮件链接到旧域名 |
FRONTEND_ORIGIN | 新的应用 origin | 上一项的回退值;CSRF origin 校验 |
CORS_ALLOWED_ORIGINS | 新的应用 origin | 跨域请求被拒绝 |
MULTICA_PUBLIC_URL | 新的 API origin | multica setup self-host 会把旧 URL 交给 daemon |
要带协议、结尾不带斜杠。这几项失败时都是静默的 —— 应用照常加载、
看起来一切正常。改完后打开 /api/config,确认 daemon_app_url 和
daemon_server_url 都是你实际使用的域名。
绑自定义域名之前有个坑值得先知道:MULTICA_PUBLIC_URL 默认是
${ZEABUR_API_URL},而这个内置变量即使在你另外绑了自定义域名之后,
仍然解析成自动生成的 *.zeabur.app 域名,不会跟随自定义域名。
所以一旦你给后端挂上自己的域名,就要把 ${ZEABUR_API_URL} 换成写全的
那个域名。
然后在每台跑 daemon 的机器上用新的 --server-url 重新执行
multica setup self-host —— CLI 会把 URL 存下来,不重新执行的话现有
daemon 会一直用旧的。
S3_BUCKET 留空,后端会回退到本地磁盘并写入 /app/data/uploads 卷。
以后要换成 S3 兼容存储(R2 / MinIO / B2),在 backend 上设置
S3_BUCKET、AWS_ENDPOINT_URL、AWS_ACCESS_KEY_ID、
AWS_SECRET_ACCESS_KEY。如果 endpoint 浏览器访问不到,还要加
ATTACHMENT_DOWNLOAD_MODE=proxy。已上传的旧文件不会自动迁移。
uploads 卷把 backend 限制在单副本。需要多副本时先迁到 S3,并补上
REDIS_URL —— 没有 Redis 时实时事件退化为进程内内存,认证限流关闭。
Multica 采用修改版 Apache License 2.0,附加条款覆盖托管/嵌入式商业用途、 品牌标识和署名要求。单一组织内部使用不需要商业授权;对第三方提供服务则需要。 移除 UI 中的 Multica 名称、Logo 或版权信息需要书面的品牌豁免。
源码:https://github.com/multica-ai/multica · 许可:https://github.com/multica-ai/multica/blob/main/LICENSE