使用文档

适用于 Roamtty Android 版与 iOS 版。其他问题请看支持页面或发邮件至 support@roamtty.com。

Roamtty 是 SSH 客户端:AI 编程工具(Claude Code、Codex、Grok 等)运行在你自己的服务器上,Roamtty 在手机上启动它们、显示状态,并让你顺手地操作终端。应用没有后端服务器,连接只发往你添加的主机。

快速开始

  1. 在服务器上开启 SSH,装好并登录 AI 命令行工具。
  2. 在 Roamtty 主机页点 + 添加主机,再在主机菜单中选“安装插件”装上 tmux 和 mosh。
  3. 点“AI Agent”,选文件夹,开始工作。锁屏或断网后任务仍在服务器上运行,回来自动接上。

手机不在服务器所在的网络时,用 Tailscale 连回去,不必把 SSH 暴露在公网。

准备服务器

任何能 SSH 登录的 Linux、macOS、BSD 或 Windows 主机都可以。

  • Ubuntu / Debian:sudo apt install openssh-server
  • macOS:系统设置 → 通用 → 共享 → 打开“远程登录”
  • Windows:可选功能中添加“OpenSSH 服务器”,再在管理员 PowerShell 中运行 Start-Service sshd

然后按官方说明安装 claude、codex 或 grok,先在服务器上登录一次。Roamtty 不会经手你的账号或 API Key。

tmux(断线后任务继续运行)和 mosh(换网络不掉线)不用手动装:在主机菜单中选“安装插件”,应用会用主机的包管理器安装(Linux 需 sudo,sudo 密码不保存;macOS 用 Homebrew;Windows 用 winget 装 psmux)。

主机列表:两台主机的卡片上显示实时桌面缩略图,以及在线和已连接状态
主机列表

添加主机

在主机页点 +,填名称、地址(域名、局域网 IP 或 Tailscale 的 100.x.y.z)、用户名和端口。

认证方式可选密码、私钥(Ed25519 / RSA,支持加密私钥)或交互式认证(一次性验证码等)。密码只在勾选“在本机加密保存密码”时保存。会话模式保持默认的 tmux。

首次连接会弹出服务器的 SHA-256 指纹,点“信任并连接”即可。

可选:核对指纹

想确认连上的确实是自己的服务器(比如在公共 Wi-Fi 上),可在服务器上运行下面的命令,看输出中的 SHA256:… 是否与应用显示的一致:

for f in /etc/ssh/ssh_host_*_key.pub; do ssh-keygen -lf "$f"; done

以后指纹变化时连接会被阻止;确认是服务器重装或换了密钥后,在主机菜单中选“重新核验…”。

主机卡片显示系统图标、在线状态与建连延时;卡片右侧的 ⋮ 菜单可打开终端、查看文件、启动 AI Agent、安装插件、编辑或删除主机。

添加主机页:名称、地址、用户名、端口、认证方式和会话模式
添加主机

启动 AI Agent

点“AI Agent”(或主机菜单中的同名项),选择起始文件夹、Agent 和权限模式:

  • 计划 / 只读:Claude Code 先出计划,批准后才修改;Codex、Grok 以只读沙箱运行。
  • 普通:改文件或运行命令前先问你。
  • YOLO:跳过所有确认,只在信任任务与环境时使用。

应用记住上次的选择,常用文件夹显示在顶部。“打开终端”则打开普通 shell。

用 AI Agent 打开:选择文件夹、Claude 和权限模式(计划、普通、YOLO)
选择文件夹与权限模式

会话列表

首页按待确认、运行中、已完成分组列出所有会话,卡片标题是 Agent 当前的任务。

  • 等待确认的卡片上点“允许”,不用打开终端即可批准。
  • 已完成的卡片显示回答摘要,点“追问”直接输入下一条指令。
  • 每个会话是服务器上独立的 tmux 会话。锁屏、断网或关掉应用后任务继续运行,点卡片即重新附着。
  • 卡片菜单中的“关闭”会结束远端任务;服务器连不上时长按卡片可强制删除,只移除手机上的卡片。
  • 每台主机最多保留 8 个会话。

装有 mosh 时终端优先走 mosh(UDP),8 秒无回应自动回退到 SSH。

会话列表:一个 Claude Code 会话等待确认并带“允许”按钮,一个正在运行,一个已完成并显示摘要
会话状态与“允许”按钮

终端操作

操作效果
点击光标所在行弹出键盘(点其他位置不弹出)
双击Tab 补全;小幽灵旁出现 ↑ ↓ ← 键,用来选择补全项
三击粘贴剪贴板
左右滑动← / →,滑动后按住跳到行首或行尾
上下滑动回看历史(tmux 会话滚动 tmux 自己的历史)
双指缩放调整字号
长按在命令行上用放大镜拖动光标;在输出上选择复制
点击链接用浏览器打开,GitHub 链接优先用 GitHub App

光标行末尾常驻一个 Esc 键,停止输入后它变成回车键。

屏幕边缘拿扳手的小幽灵:按住弹出快捷键环(Esc、Ctrl、Shift、F1–F12 等,随前台的 Agent 变化),拖到键上松手即发送;点按展开操作栏:

  • 会话菜单:返回主机详情、关闭或重启当前会话、切换到其他会话
  • 上传文件 / 下载文件
  • 插入图片:一次最多 9 张,上传后把远端路径填进命令行,方便发给 Agent
  • 常用命令:读取服务器上的 shell 历史,点一条即执行
  • 设置:编辑文本(在大输入框里写好长提示词再发送)、固定或隐藏操作栏、粘贴、调整字号
Agent 终端:Claude Code 改文件前显示差异并等你确认
Agent 终端
按住小幽灵弹出的 Claude Code 快捷键环
按住小幽灵:快捷键环
点按小幽灵展开的操作栏:会话菜单、上传文件、下载文件、插入图片、常用命令和设置
点按小幽灵:操作栏
常用命令:从服务器的 ~/.bash_history 读取的命令列表,可搜索,点按即执行
常用命令

文件与监控

主机菜单中的“查看文件”通过 SFTP 浏览服务器:预览代码(带语法高亮)、Markdown 和图片并在文件中查找,重命名、删除、新建文件夹、复制路径、单个或批量下载,或在当前文件夹直接打开终端、启动 AI Agent。首次下载时选择手机上的下载目录,之后自动保存到那里。在相册等应用中把图片分享给 Roamtty 即可上传到服务器。

点主机卡片进入详情页,实时查看 CPU、内存、磁盘、网络、GPU 和占用最高的进程,适合确认构建或测试是否卡住;顶部按钮可直接启动 AI Agent、打开终端或查看文件。

文件浏览:focus-board 文件夹中的 static、tests、app.py、CHANGELOG.md 和 README.md
文件浏览
Markdown 预览:标题、列表与代码块
Markdown 预览
主机详情:实时 CPU、内存、磁盘与网络
主机监控
安装插件:tmux 与 mosh 均显示已安装
主机菜单 → 安装插件

远程桌面

能开桌面的主机会在会话卡片右下角显示桌面按钮;没有会话的主机,在主机详情页点“桌面”。第一次打开时应用会自动安装桌面插件,不需要填任何配置。退出桌面页后连接在后台保持(默认 10 分钟,可在设置里修改),再点约 1 秒回到画面。

桌面页的工具栏(竖屏在底部,横屏在右侧)有“操作”、“键盘”、“显示桌面”和“所有窗口”。

操作效果
轻点 / 连点两下在手指处左键单击 / 双击
双指轻点,或按住后松手右键
按住再移动拖拽
单指或双指上下滑动滚动页面,带惯性
双指捏合缩放画面
三指上滑 / 下滑所有窗口 / 显示桌面
三指左右滑切换桌面

在“操作”里可以切换屏幕触控和鼠标指针两种方式,还能传文件、同步剪贴板、打开电脑的声音、调整帧率和画质。键盘支持把打好的中文直接发到电脑。

  • Linux:X11 桌面;Wayland 支持 wlroots 系合成器(sway、Hyprland、labwc、river)。GNOME、KDE 的 Wayland 会话暂不支持,可在登录界面选 X11 会话。
  • macOS 13 及以上:第一次打开时,在 Mac 的“系统设置 › 隐私与安全性”里为 Roamtty Desktop 打开“屏幕与系统音频录制”和“辅助功能”。
  • Windows 10 1903 及以上、Windows 11:需要已在电脑上登录桌面。

画面可用时走 UDP(端口 60000–61000,和 mosh 相同),被防火墙挡住时自动改走 SSH。同一台电脑同时只能由一台手机控制。没有图形桌面的服务器不显示按钮。

竖屏远程桌面:Ubuntu 上的 Firefox,底部是操作、键盘、显示桌面和所有窗口
竖屏桌面
所有窗口:终端、编辑器和 Firefox 的缩略图
所有窗口
横屏远程桌面:Ubuntu 上的 Firefox,右侧是工具栏
横屏桌面
横屏显示的 Windows 桌面:Edge 里打开的页面和任务栏
Windows 桌面

设置

左上角菜单 →“设置”:

  • 外观:跟随系统、深色或浅色
  • 终端字体:内置多款等宽字体,也可导入自定义 TTF / OTF 字体,并带 Nerd Font 图标回退
  • 语言:简体中文或 English
  • 下载目录:下载的文件保存到哪里

同一菜单中的“帮助”有一份手势与操作的速查。

设置页:外观、终端字体、语言与通知
设置

后台与锁屏

Agent 等你确认或做完一轮时,应用会发通知,点通知直接进入对应会话;可在设置 → 通知里选择全部提醒、只在等你确认时提醒或关闭。

  • Android:在设置中打开“允许后台运行”并取消电池优化;小米、华为、OPPO、vivo 等还需允许自启动并在最近任务中锁定;OPPO、一加、realme(ColorOS)还要在 应用详情 → 耗电管理 选“完全允许后台行为”,否则退到后台几秒后网络就被断开,Agent 通知也要等回到应用才到(设置 → 后台连接 里有入口)。有连接时通知栏常驻一条 Roamtty 通知(可在 设置 → 通知 →“隐藏后台连接通知”里关掉,连接不受影响);Agent 等你确认或做完一轮时另发一条通知,点它直接进入那个会话。
  • iPhone:系统会在后台暂停网络连接。任务在服务器的 tmux 里继续运行,回到应用时自动重连。应用离开屏幕约半分钟后,系统不再让它运行,之后的变化会在回到应用时提醒。
通知栏里的 Roamtty 通知:Claude 等你确认,以及对应的主机和文件
任务通知

保证任务不中断的是服务器上的 tmux,而不是手机一直在线。

从外网连接:Tailscale

Tailscale 把手机和服务器放进同一个加密虚拟局域网,每台设备得到固定的 100.x.y.z 地址;服务器不需要公网 IP,也不用开放端口。Roamtty 无需任何设置,流量经系统 VPN 走隧道。

  1. 服务器:Linux 运行下面的命令并在浏览器中登录;macOS、Windows 从 tailscale.com/download 安装。
    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up
  2. 手机:安装 Tailscale App,用同一个账号登录。
  3. 在 Roamtty 中用服务器的 100.x.y.z 地址(tailscale ip -4)添加主机。
  • 先连上 Tailscale 再打开 Roamtty;手机同一时间只能开一个 VPN。
  • mosh 在隧道内直接可用,无需放行 UDP 端口。
  • 使用服务器自己的 OpenSSH,不要开启 Tailscale SSH(--ssh),否则主机指纹会变。
  • 在 Tailscale 后台对服务器关闭密钥过期(Disable key expiry),以免几个月后在外面突然连不上。
  • 延时偏高时在服务器上运行 tailscale ping <手机的 100.x 地址>,显示 via DERP 说明在走中继,可自建 DERP(见下)。
自建 Headscale(不依赖 Tailscale 账号)

Headscale 是开源的协调服务器,手机和电脑仍用 Tailscale 官方客户端。需要一台有公网 IP 的 VPS 和域名(下例 hs.example.com),放行 TCP 80、443。

# 安装(版本见 GitHub Releases,写作时为 0.29.5)
wget -O headscale.deb https://github.com/juanfont/headscale/releases/download/v0.29.5/headscale_0.29.5_linux_amd64.deb
sudo apt install ./headscale.deb

编辑 /etc/headscale/config.yaml:

server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
dns:
  magic_dns: true
  base_domain: ts.example.net   # 不能与 server_url 的域名相同

用 Caddy 提供 HTTPS(反向代理须支持 WebSocket,Caddy 默认支持),/etc/caddy/Caddyfile:

hs.example.com {
    reverse_proxy 127.0.0.1:8080
}
sudo systemctl enable --now headscale && sudo systemctl reload caddy
sudo headscale users create me
sudo headscale preauthkeys create --user 1 --reusable --expiration 24h

设备加入:

  • 服务器:sudo tailscale up --login-server https://hs.example.com --authkey <密钥>
  • Android:Tailscale 设置 → Accounts → ⋮ → Use an alternate server,填 https://hs.example.com;再 ⋮ → Use an auth key 粘贴密钥。
  • iPhone:Log in… → 选项菜单 → Use custom coordination server,填地址后把页面上的注册命令复制到 VPS 运行。

sudo headscale nodes list 能看到两台设备即完成。

自建 DERP 中继(直连失败、延迟高时)

两台设备无法直连时,流量经 DERP 中继转发(端到端加密,中继看不到内容)。官方中继在海外,在中国大陆延迟常达数百毫秒。用自建 Headscale 时,最简单的是开启内置 DERP,在 config.yaml 中:

derp:
  server:
    enabled: true
    region_id: 999
    region_code: "headscale"
    region_name: "Headscale Embedded DERP"
    verify_clients: true
    stun_listen_addr: "0.0.0.0:3478"
    private_key_path: /var/lib/headscale/derp_server_private.key
    automatically_add_embedded_derp_region: true
    ipv4: 203.0.113.10          # VPS 公网 IP
  urls:
    - https://controlplane.tailscale.com/derpmap/default   # 保留官方节点作后备
  paths: []

放行 UDP 3478 后重启 Headscale,在服务器上运行 tailscale netcheck 应能看到自建节点且延迟最低。

使用 Tailscale 官方服务、把中继放在另一台服务器,或服务器在中国大陆时,按博客文章《自建 DERP 中继:Tailscale 与 Headscale 教程》部署官方的 derper。

常见错误

提示处理
连接超时检查地址、端口、sshd 是否运行,以及手机上的 Tailscale 是否已连接
认证失败检查用户名、密码或私钥;用私钥时公钥需在服务器的 ~/.ssh/authorized_keys 中
主机指纹发生变化服务器重装、换了密钥或开启了 Tailscale SSH,也可能是中间人攻击。确认新指纹后“重新核验…”
未找到 tmux 或 psmux在主机菜单“安装插件”中安装
每台主机最多保留 8 个会话先关闭这台主机不再需要的会话
Agent 提示未登录或找不到命令用同一账号在普通终端中确认 claude / codex / grok 能运行且已登录

仍未解决?发邮件至 support@roamtty.com(请勿附上密码、私钥或真实服务器地址)。