手机远程
在手机上发送消息、查看远程会话状态,并审批需要确认的请求。
在手机上发送消息、查看远程会话状态,并审批需要确认的请求。
Vibelet 连接到你自己的电脑,iOS App 只作为远程控制器。
直接在手机上发送截图或相册图片到远程会话,回复中的图片也能放大查看与保存。
在手机上浏览远程文件夹,预览支持的文件,并按需下载到本地。
默认即开启远程访问。支持 Cloudflare Tunnel、ngrok、Tailscale,让你在外也能随时连回自己的电脑。
扫码即可完成连接,无需账号;传 --local 可保持为局域网配对。
稍后回来时,也能在手机上恢复同一个远程会话,上下文不丢。
在敏感远程会话请求继续前,先从手机上确认。
数据留在你自己的机器上;iOS App 不会在设备上下载、安装或运行可执行代码。
连接配对电脑、管理会话、与远程助手对话,全在手机上完成。





先安装手机 App,再在电脑上运行桌面连接器,最后通过一次二维码扫描完成配对。
推荐加入 TestFlight 抢先体验最新版本,想用稳定版本也可以前往 App Store。
日常使用下载正式 APK,想验证最新 Android 改动则安装测试 APK。
安装、连接、开始你的第一个远程会话。
在配对手机前,先在电脑上运行下面这条命令。
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`,再扫新的二维码即可。如果这台手机之前已经配对过,也可以先尝试从已保存的设备条目直接重连。
当手机和电脑已经在同一个局域网里,而且你这次不想让 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 处理。