Vibelet
手机远程 AI 编码

远程操控 Claude 与 Codex 会话

Vibelet LogoVibelet Logo
📱

手机远程

在手机上发送提示词、查看 diff、审批工具调用,把 Claude / Codex 装进口袋。

🤖

多智能体

一台 daemon 同时托管 Claude 与 Codex 会话,每个 agent 都运行在自己的工作区。

🖼️

图片支持

直接在手机上发送截图或相册图片给 agent,回复中的图片也能放大查看与保存。

📎

文件浏览与下载

在手机上浏览工作区文件,预览代码,按需下载到本地,无需切换到电脑。

🌐

远程访问

默认即开启远程访问。支持 Cloudflare Tunnel、ngrok、Tailscale,让你在外也能随时连回自己的电脑。

🔗

二维码配对

扫码即可完成连接,无需账号;传 --local 可保持为局域网配对。

🔄

恢复会话

稍后回来时,也能在手机上恢复同一个 Claude 或 Codex 会话,上下文不丢。

🛡️

审批流程

在执行前审核并批准文件编辑、命令和 API 调用,远程也能掌控权限边界。

🔒

本地优先

数据留在你自己的机器上,无云端账号;可观测的健康检查与审计日志一目了然。

截图预览

看看实际效果

连接 AI daemon、管理会话、与 agent 对话——全在手机上完成。

连接
连接
会话列表
会话列表
新建会话
新建会话
聊天
聊天
设置
设置
获取 App

先把远程控制装到你的手机上

先安装手机 App,再在本地运行 daemon,最后通过一次二维码扫描完成配对。

iOS

在 iPhone 上安装 Vibelet

推荐加入 TestFlight 抢先体验最新版本,想用稳定版本也可以前往 App Store。

测试版

TestFlight 测试版

提前体验尚未进入 App Store 正式版的新功能。

加入 TestFlight
iOS TestFlight 下载二维码
正式版

App Store 正式版

适合日常使用的 iPhone 官方版本。

前往 App Store
iOS App Store 下载二维码
Android

在 Android 上安装 Vibelet

日常使用下载正式 APK,想验证最新 Android 改动则安装测试 APK。

正式版

正式 APK

适合直接安装和日常使用的 Android 官方版本。

下载 APK
Android 正式 APK 下载二维码
测试版

测试 APK

用于提前验证最新 Android 改动的测试版本。

下载测试 APK
Android 测试 APK 下载二维码
配对前准备

先确认这几步已经就绪

  • 先在电脑上运行 npx vibelet 启动 daemon
  • 确保手机和电脑处于同一个局域网
  • 在手机上打开 Vibelet,并点击“扫描二维码”
快速开始

三步开始使用

安装、连接、开始你的第一个 AI 编程会话。

安装

启动 Vibelet daemon

在配对手机前,先在电脑上运行下面这条命令。

npx vibelet
连接手机

通过扫描二维码完成配对

  1. 通过 TestFlight 安装 Vibelet 应用(也可前往 App Store)
  2. 打开应用并点击“扫描二维码”
  3. 扫描终端里显示的二维码
开始会话

发送第一条提示词

  1. 在应用里点击“新建会话”
  2. 选择你的 agent:Claude 或 Codex
  3. 输入提示词并发送
你会得到什么

核心工作流,不需要额外配置

  • 文件修改、命令和 API 调用都可以走审批流程
  • 支持跨多个项目管理多会话
  • 稍后回来时,也能在手机上恢复同一个 Claude 或 Codex 会话
  • 默认即可远程访问,需要局域网配对时用 --local
远程访问

随时随地控制你的 Agent

Vibelet 默认开启远程访问。如果你更想走局域网配对,或者使用自己的网络路径,可以选择以下方式。

Cloudflare Tunnel推荐

零配置,默认开启

免费、无需注册。Vibelet 自动启动 Cloudflare Tunnel 并打印可远程扫码的二维码。

npx vibelet

需要只走局域网时传 --local。传 --remote --force 可获取新 URL。

自定义 Relay

使用你自己的隧道

已经在运行 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,重启后自动复用。

Tailscale

点对点 VPN,无需隧道

只需告诉 Vibelet 你设备的 Tailscale IP。手机也需要加入同一 Tailscale 网络。

npx vibelet --host=<tailscale-ip>

在手机上安装 Tailscale 应用并加入同一 tailnet。

FAQ

几个网络相关说明

把配对和 relay 场景里最常见的问题先说清楚。

为什么有些代理工具会提到 *.argotunnel.com?

当链路里用了 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。

扫码后出现 “Network request failed”,通常代表什么?

这通常说明手机根本没有连到二维码里的那个 host,在 Vibelet 收到任何 HTTP 响应之前,请求就已经失败了。

常见原因包括:手机和电脑不在同一个可达网络、二维码里是手机无法解析的局域网地址或 `.local` 地址、iPhone 的本地网络权限没开,或者代理工具错误接管了 tunnel / relay 域名。

如果你走的是远程 tunnel,先确认 relay 域名本身可达;如果你走的是局域网配对,可以直接尝试电脑的局域网 IP,或者重新用正确的 host / fallback hosts 启动 Vibelet。

为什么二维码会过期?

配对二维码本来就是短时有效、且只能消费一次的。这能让配对流程保持简单,同时避免一直留着一个可重复使用的开放配对窗口。

如果过期了,直接在电脑上重新运行 `npx vibelet`,再扫新的二维码即可。如果这台手机之前已经配对过,也可以先尝试从已保存的 daemon 条目直接重连。

什么时候该用 --local?

当手机和电脑已经在同一个局域网里,而且你这次不想让 Vibelet 使用默认远程 tunnel 时,用 `npx vibelet --local`。

如果你希望二维码默认就是可远程连接的,直接用 `npx vibelet` 更合适。尤其是在你不确定手机是否会一直留在同一局域网时,这通常是更稳的默认值。

自定义 relay 和 Tailscale 有什么区别?

自定义 relay 是指你已经有一个公网 tunnel URL,比如 Cloudflare Tunnel 或 ngrok,然后通过 `--relay=https://...` 交给 Vibelet 使用。

Tailscale 不一样:Vibelet 里并没有公网 relay URL,而是通过 `--host=<tailscale-ip>` 告诉它机器的 Tailscale IP,同时手机也必须加入同一个 tailnet。

为什么 Mac 上开了 Tailscale 后 Loon / Surge 就不工作了?

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 处理。