手机远程
在手机上发送提示词、查看 diff、审批工具调用,把 Claude / Codex 装进口袋。
在手机上发送提示词、查看 diff、审批工具调用,把 Claude / Codex 装进口袋。
一台 daemon 同时托管 Claude 与 Codex 会话,每个 agent 都运行在自己的工作区。
直接在手机上发送截图或相册图片给 agent,回复中的图片也能放大查看与保存。
在手机上浏览工作区文件,预览代码,按需下载到本地,无需切换到电脑。
默认即开启远程访问。支持 Cloudflare Tunnel、ngrok、Tailscale,让你在外也能随时连回自己的电脑。
扫码即可完成连接,无需账号;传 --local 可保持为局域网配对。
稍后回来时,也能在手机上恢复同一个 Claude 或 Codex 会话,上下文不丢。
在执行前审核并批准文件编辑、命令和 API 调用,远程也能掌控权限边界。
数据留在你自己的机器上,无云端账号;可观测的健康检查与审计日志一目了然。
连接 AI daemon、管理会话、与 agent 对话——全在手机上完成。





先安装手机 App,再在本地运行 daemon,最后通过一次二维码扫描完成配对。
推荐加入 TestFlight 抢先体验最新版本,想用稳定版本也可以前往 App Store。
日常使用下载正式 APK,想验证最新 Android 改动则安装测试 APK。
安装、连接、开始你的第一个 AI 编程会话。
在配对手机前,先在电脑上运行下面这条命令。
npx vibeletVibelet 默认开启远程访问。如果你更想走局域网配对,或者使用自己的网络路径,可以选择以下方式。
免费、无需注册。Vibelet 自动启动 Cloudflare Tunnel 并打印可远程扫码的二维码。
npx vibelet需要只走局域网时传 --local。传 --remote --force 可获取新 URL。
已经在运行 cloudflared、ngrok 或其他隧道?直接传入公网 URL 即可。
# Cloudflare(手动)
npx cloudflared tunnel --protocol http2 --url http://localhost:9876
# ngrok
ngrok http 9876
# 然后告诉 Vibelet:
npx vibelet --relay=https://<your-tunnel-url>relay URL 会持久化到 ~/.vibelet/relay.json,重启后自动复用。
只需告诉 Vibelet 你设备的 Tailscale IP。手机也需要加入同一 Tailscale 网络。
npx vibelet --host=<tailscale-ip>在手机上安装 Tailscale 应用并加入同一 tailnet。
把配对和 relay 场景里最常见的问题先说清楚。
当链路里用了 Cloudflare Tunnel / Argo Tunnel,一些基于规则的代理工具需要把 *.argotunnel.com 当成真实目标来解析,并且不要再套一层代理。
在 Loon 这类配置里,通常就是把 *.argotunnel.com 放进 real-ip 和 skip-proxy。目的很直接:让 tunnel 域名按正常方式解析,并且直接连接,不再经过额外的代理链。
比如在 Loon 里,遇到开了代理后无法联通,可以先在 `[General]` 里补这两行: `real-ip = *.argotunnel.com` `skip-proxy = *.argotunnel.com`
如果你当前网络本身不能直连 *.argotunnel.com,就不要继续把它放在 skip-proxy 里;应该给它指定一个稳定的代理策略,或者改用自定义 relay / Tailscale。
这通常说明手机根本没有连到二维码里的那个 host,在 Vibelet 收到任何 HTTP 响应之前,请求就已经失败了。
常见原因包括:手机和电脑不在同一个可达网络、二维码里是手机无法解析的局域网地址或 `.local` 地址、iPhone 的本地网络权限没开,或者代理工具错误接管了 tunnel / relay 域名。
如果你走的是远程 tunnel,先确认 relay 域名本身可达;如果你走的是局域网配对,可以直接尝试电脑的局域网 IP,或者重新用正确的 host / fallback hosts 启动 Vibelet。
配对二维码本来就是短时有效、且只能消费一次的。这能让配对流程保持简单,同时避免一直留着一个可重复使用的开放配对窗口。
如果过期了,直接在电脑上重新运行 `npx vibelet`,再扫新的二维码即可。如果这台手机之前已经配对过,也可以先尝试从已保存的 daemon 条目直接重连。
当手机和电脑已经在同一个局域网里,而且你这次不想让 Vibelet 使用默认远程 tunnel 时,用 `npx vibelet --local`。
如果你希望二维码默认就是可远程连接的,直接用 `npx vibelet` 更合适。尤其是在你不确定手机是否会一直留在同一局域网时,这通常是更稳的默认值。
自定义 relay 是指你已经有一个公网 tunnel URL,比如 Cloudflare Tunnel 或 ngrok,然后通过 `--relay=https://...` 交给 Vibelet 使用。
Tailscale 不一样:Vibelet 里并没有公网 relay URL,而是通过 `--host=<tailscale-ip>` 告诉它机器的 Tailscale IP,同时手机也必须加入同一个 tailnet。
Tailscale 官方 GUI 版(macsys)走 macOS NetworkExtension 框架,会接管默认路由。Loon / Surge 同样基于 NetworkExtension,两者会抢路由表——Tailscale 一开,代理工具的 TUN 实际就失效了,翻墙断掉。
解决办法:换成开源独立版 `tailscaled`,它直接用 `utun` 接口,不走 NetworkExtension,可以和 Loon 完全共存。
操作步骤:退出 `Tailscale.app`,在 Finder 里把它拖进废纸篓(这一步会触发系统扩展卸载弹窗,用 `rm` 不会),然后执行: `brew install tailscale` `sudo tailscaled install-system-daemon` `sudo tailscale up --advertise-exit-node`
Loon / Surge 那边补几条直连,避免 Tailscale 流量被代理拦截:把 `100.64.0.0/10` 加到 `skip-proxy` 和 `bypass-tun`,并在规则段顶部加上 `*.ts.net` 直连和 `IP-CIDR,100.64.0.0/10,DIRECT,no-resolve`。
iOS 上两者互斥(系统级 NE 限制,只允许一个 VPN tunnel)。通常的做法是把 Mac 当作 Tailscale exit node,手机选这台 Mac,所有流量经 Tailscale 隧道送到 Mac 后再由 Mac 上的 Loon 处理。