什么是无头运行时:可以理解成“没有窗口的 Vibex”。Agent 会话、工作区、Git、终端和供应商配置都由它负责,能力和桌面端完全一样,只是它跑在服务器上,你需要通过桌面端或手机连过去操作。它的程序名是
vibex-server。一、云端开发:把 Vibex 部署到服务器
Agent 会在服务器上读写代码、执行命令,所以先把服务器准备好,再用客户端连过去。开始之前
- 一台装了 Docker 的 Linux 服务器。只有你一个人用:1 核 2 GB 内存起步;同时跑多个 Agent:建议 2 核 4 GB 以上。
- 代码要能在服务器上访问到:在服务器上
git clone,或者把宿主机的代码目录挂进容器(下面示例用的是挂载)。 - Agent 的账号或 API Key 等客户端连上以后再配置:在桌面端的 配置中心 里添加(见 配置中心),不要写进 compose 文件,也不要提交到仓库。
第 1 步:启动运行时
项目仓库里已经包含一份完整的docker-compose.yml 配置文件,可以直接查看:deploy/server/docker-compose.yml。下面这份是按本文场景裁剪的最小示例,保存成 docker-compose.yml 放在服务器上任意目录即可:
image 里的 rc 跟随最新候选版,latest 跟随最新稳定版;需要固定版本时再改成具体版本号。已经克隆了仓库时,也可以直接用仓库里的部署文件从源码构建:docker compose -f deploy/server/docker-compose.yml up --build -d vibex-server。pairing_code=123-456-789:一次性配对码,默认 5 分钟后过期。pairing_link=vibex://pair#/code/...:一条配对连接串,已经包含服务器地址、一次性配对码和服务器证书(DER)。复制整条即可;客户端会在发出第一个请求前固定这张证书,所以自签证书的服务器不需要系统 CA。
如果服务器在公网
公网部署只多一件事:必须用 HTTPS。让 Caddy 自动申请证书,运行时自己只监听本机回环地址:Caddyfile:
80、443 和 SSH;运行时的 8765 保持在回环地址上,不要暴露到公网。把域名和地址换成你自己的之后,VIBEX_ALLOWED_HOSTS 与 VIBEX_ALLOWED_ORIGINS 必须和实际访问用的域名一致,否则请求会被直接拒绝。
第 2 步:桌面端连过去
- 点击标题栏的 运行时 按钮,打开运行时管理器。
- 点 添加运行时…,选 连接串 标签,把上面那条
vibex://pair#/code/...整条粘贴进去,点 配对。服务器用自签证书时也走这条,因为证书指纹就在连接串里。 - 也可以选 配对码 标签,手动填 服务器地址 和 一次性配对码。
- 配对成功后,运行时的 证书 一栏会显示
sha256:指纹,可以和服务器日志里的tls_fingerprint对一下。 - 在详情里点 切换到此运行时 切过去;从这一刻起,桌面端里的会话、文件、Git、终端都来自服务器。想回到用本机开发,在列表里选中 本机 再点 切换到此运行时。要移除这个运行时,在详情里点 移除——它只删除本机保存的设备凭据,服务器上的设备授权仍然存在,需要在那台服务器上撤销。
第 3 步:手机连过去
- 打开移动端,选 连接云端服务器。
- 填 服务器地址(例如
192.168.1.10:8765)和 配对码,点 使用配对码连接。 - 服务器用自签证书时,改把
vibex://pair#/code/...连接串粘进 连接串 输入框,它会同时带上证书。 - 确认配对信息即可;这台设备能做什么由服务器生成配对码时决定,默认是 完全控制。想给它更小的权限,就在服务器上用
docker exec vibex-server vibex-server pairing-code --permission read-only重新生成一个配对码(可选read-only、approve-only、full-control)。
第 4 步:让 Agent 看到你的代码
Agent 在服务器上运行,它只能看到服务器(容器)里的目录。所以代码必须放在服务器上:- 在服务器上
git clone到/data/repos/你的项目;或者 - 在 compose 里把宿主目录挂进容器(示例中的
- /srv/repos:/data/repos)。
VIBEX_WORKSPACE_ROOTS 里(示例中的 /data:/data/repos)。回到客户端:新建会话 → 项目目录 → 选择其他目录,你会看到 /data 和 /data/repos 两个位置,进去选中项目即可。
只挂载、不加进
VIBEX_WORKSPACE_ROOTS,客户端浏览不到那个目录;只加进 VIBEX_WORKSPACE_ROOTS、不挂载,运行时里也没有这个路径。第 5 步:日常维护
二、远程开发:手机连你自己的桌面端
这条路线的权威仍然是你的电脑:Agent、文件、Git、终端都在桌面端上跑,手机只是拿到一个可以查看和操作的窗口。适合“人在外面,想看一眼进度、回一句话、批一个权限”。开始之前
- 桌面端正在运行,电脑保持开机(睡眠会导致连接断开)。
- 手机和电脑网络可达:同一个 Wi-Fi 最简单;不在同一网络时用 Tailnet 或自建 Relay。
第 1 步:在桌面端发布远程访问
- 点击顶部工具栏的 配对移动设备 图标。对话框有两个标签:配对 用来发布新的配对,已配对设备 (N) 用来管理已经持有授权的设备。
- 选择连接方式:
- Tailnet(推荐):通过 Tailscale 等私有网络访问,适合不在同一 Wi-Fi 的情况。
- 自管 Direct HTTPS:你自己有一个能指向这台电脑的 HTTPS 地址。
- 自建 Relay:手机和电脑无法直连时,通过你自建的 Relay 转发加密流量。
- 按界面提示填写地址(Direct HTTPS 填
https://你的地址,Relay 填https://你的 Relay 地址),选择这台手机能做什么(默认 只读,见下面的权限级别),然后点 发布。 - 界面会出现二维码和配对链接:扫码即可配对,也可以 复制链接 发给手机。链接有效期很短,过期就点 重新生成。
第 2 步:在手机上完成配对
- 和电脑在同一个 Wi-Fi:移动端会直接发现 nearby desktops,选中后确认即可。
- 不在同一网络:用手机扫码,或者打开复制过来的
vibex://链接。 - 也可以手动连接:在移动端选 使用配对码连接,填入桌面端显示的地址和配对码。
第 3 步:在手机上能做什么
移动端没有配置中心,不能管理 Agent、供应商、MCP 或技能。它的设置只包含 Connection、会话 timeline、外观、Notifications 和关于。
所有写操作的真实结果始终由权威运行时产生;移动端显示的是它的投影。
直连不通时:自建 Relay
手机和电脑都可能在公司网络或运营商 NAT 后面,互相连不上。这时用一台你能访问的服务器跑 Relay,它只转发加密帧,看不到内容:127.0.0.1:9700),然后在桌面端发布远程访问时选 自建 Relay,填入 https://你的 Relay 域名。
Relay 是纯转发的:它不保存你的会话、文件或供应商配置,也不解密内容。它在内存里维护房间和连接,重启后房间会消失,设备重连时会自动重建。
断线与重连
网络切换、锁屏或应用回到前台后,客户端会重新认证并补齐缺失的历史:先显示权威的会话和时间线状态,再恢复实时更新。权限级别
配对时给移动端选权限,按需要最小授权。级别由发起端在创建配对时决定,客户端无法自行提权:
撤销设备在权威端完成:
- 桌面端作为权威端时,打开 配对移动设备,切到 已配对设备 (N) 标签,找到那台设备点 撤销 并确认。列表显示每台设备的状态、权限和最后活动时间,可以 刷新设备 重新加载;设备多于六台时分页显示。
- 无头运行时作为权威端时,在服务器上执行
docker exec vibex-server vibex-server revoke DEVICE_ID(或直接运行vibex-server revoke DEVICE_ID)。
安全清单
- 运行时的
8765端口只在本机或内网开放;公网访问必须走 HTTPS。权威端默认只监听 loopback,不要使用未认证的公网监听。 - 权限给最小的一档,只在需要时才用 完全控制。
- 配对码、二维码和连接串不要发到公开渠道;它们用过一次就失效,也不要当作长期凭据。
- 定期撤销不用的设备。
- Relay 只转发加密流量,不要把它当成权限边界,也不要在它的日志里放业务数据。
遇到问题先看这里
环境变量
上面示例只用了最必要的变量。vibex-server、Relay 和桌面端的完整变量清单、默认值与用途见环境变量参考;部署形态、命令与健康检查见自托管无头运行时,Relay 的端点、限制与推送配置见自托管 Relay。
需要更底层的细节(配对握手、加密、同步契约)时,阅读开发者指南中的 Remote v2 与 Relay。