在手机上掌控 Claude Code 和 Codex CLI。一条命令安装、扫码连接——局域网或公网隧道都能用。
Control Claude Code and Codex CLI from your phone. One command install, QR scan connect — works over LAN or via secure tunnel from anywhere on the internet.
curl -fsSL https://aimote.net/install.sh | bash
▄▄▄▄▄▄▄▄ ▄▄ ▄▄▄▄▄▄▄▄ █ ▄▄▄ █ ▄██▄ █ ▄▄▄ █ █ ███ █ ▄▀▀▄ █ ███ █ █▄▄▄▄▄█ █▄█▄ █▄▄▄▄▄█ ▄▄ ▄▄▄▄▄ ▀▄▄ ▄▄ ▄▄▄▄ ▄▀▄▀▀▄▀▀█▀▄▀▄▀▄▀▀▄▀ ▀▀ ▀ ▀▀▄▀▄▄▀▀ ▀▀▀▄▀ ▄▄▄▄▄▄▄ ▀▄▄▄▀ ▄ ▄▀▄ █ ▄▄▄ █ ▄▄▄▀ ▄▄▄▀▄▄ █ ███ █ █▄ ▀▄███▄▀▄ █▄▄▄▄▄█ ▄▄▀▄▀▀ ▄▄▀
为希望随时随地调用 AI 的开发者而设计——无论在哪台设备上。 Designed for developers who want their AI available wherever they are, on any device.
启动一次服务就立刻拿到稳定的 *.aimote.net 公网地址。不用改 DNS、不用证书、不用端口转发。由 Cloudflare 提供支撑。
Start the server once and get a stable *.aimote.net URL instantly. No DNS, no certificates, no port forwarding. Powered by Cloudflare.
打开 App,点二维码图标,对准摄像头——三秒之内连上。不用打字、不用复制粘贴。 Open the mobile app, tap the QR icon, point your camera. Done. No typing, no copy-paste — you're connected in under three seconds.
看着 Claude 思考、写代码,实时同步。工具调用、文件改动、终端输出——每一次动作都秒级推到你的手机。 Watch Claude think and code in real time. Tool calls, file edits, terminal output — everything streams to your phone the instant it happens.
每一次对话都会归档。随时查历史、接着上次继续、跨设备无缝衔接。 Every conversation is archived. Browse history, resume where you left off, pick up a session from any device at any time.
每次连接都要 8 位 PIN。你的 AI 工作区只属于你——不会意外公开暴露。 Every connection requires an 8-character PIN. Your AI workspace is yours alone — no accidental public exposure.
macOS、Linux、Windows 都支持,Claude Code 和 Codex CLI 都能接入。手机端覆盖 iOS 和 Android。 macOS, Linux, and Windows. Claude Code and Codex CLI both supported. The mobile app runs on iOS and Android.
从零到连接,两分钟搞定。 From zero to connected in under two minutes.
在 Mac/Linux 上跑 curl -fsSL https://aimote.net/install.sh | bash,Windows 用对应的 PowerShell 脚本。首次启动会进入一次性安装向导。
Run curl -fsSL https://aimote.net/install.sh | bash on your Mac or Linux machine. Windows users run the PowerShell script. The first launch starts a one-time setup wizard.
手机打开 AiMote,在连接页点二维码按钮,对准终端或浏览器里显示的那张码。 Open the AiMote app on your phone, tap the QR icon on the connect screen, and point your camera at the code shown in your terminal or browser.
Claude Code 和 Codex CLI 的会话立刻出现在手机上。新建对话、发消息、看实时输出——一切都在手机端完成。 Your Claude Code and Codex CLI sessions appear instantly. Start a new conversation, send a message, watch the output stream — all from your phone.
挑一种适合你的场景。随时可以改 ~/.aimote/config.json 切换。
Pick the mode that fits your setup. You can switch any time by editing ~/.aimote/config.json.
免费稳定的 aimote.net 子域名,每台机器唯一。全球任意地方都能连——不用配路由、不用 DDNS、不用折腾。 A free, stable subdomain under aimote.net. Unique to your machine. Works from anywhere — no router config, no DDNS, no headaches.
用你自己的 Cloudflare 账号和域名。完全掌控子域名、路由规则和访问策略。 Bring your own Cloudflare account and root domain. Full control over your subdomain, routing, and access policies.
不走任何隧道。绑到 0.0.0.0 走局域网,或者自己配反向代理。适合家庭实验室和 VPN 用户。
No tunnel at all. Bind to 0.0.0.0 for LAN access, or use your own reverse proxy. Perfect for homelab setups and VPN users.
以下是 iPhone 上真实使用 云指 的界面 —— 连接、会话、聊天、终端、设置,都是日常干活的样子。 Real screenshots from an iPhone — connect flow, session list, Claude/Codex chats with tool cards, a live PTY terminal, and settings. Not mockups.
AiMote Cloud 是默认方式——零配置,由我们的 provisioning Worker 自动处理。其他标签页是给想用自己域名或自建隧道的进阶用户。 AiMote Cloud is the default — zero config, handled by our provisioning Worker. The other tabs are for when you want your own domain or your own tunnel.
一条命令搞定——下载预编译的服务端 + cloudflared,创建启动脚本。不用 Cloudflare 账号,不用自己管 API token。 One command — downloads a pre-built server bundle + cloudflared, sets up a launcher. No Cloudflare account needed, no API token handling on your end.
服务端把你机器的 hash POST 给 provision.aimote.net。那里的 Worker 为你创建一个 Cloudflare 隧道 + DNS 记录,返回一个只能跑这一个隧道的 token。
The server POSTs your machine's hash to provision.aimote.net. The Worker there creates a Cloudflare Tunnel + DNS record and returns a tunnel token scoped to only that one tunnel.
服务端启动后会打印一个二维码,内容是 aimote://connect?host={hash}.aimote.net&pin=…。手机 App 里点 扫码连接,就连上了。
Once the server starts, it prints a QR containing aimote://connect?host={hash}.aimote.net&pin=…. Open the phone app, tap Scan QR, done.
install.sh 已经把 cloudflared 放到了 ~/.aimote/bin/,直接用它跑一个临时隧道:
The install.sh script already placed cloudflared at ~/.aimote/bin/ — use it directly:
在输出里找 https://random-words.trycloudflare.com 这行,就是你的临时公网地址。保持该终端开着。
Look for a line like https://random-words.trycloudflare.com in the output. Keep this terminal open.
编辑 ~/.aimote/config.json,把模式改成 manual,粘贴刚拿到的域名:
Edit ~/.aimote/config.json — switch mode to manual and paste the domain:
重启服务。QR 页面现在编码 wss://random-words.trycloudflare.com——在任何地方扫码都能连上。
Restart the server. The QR page now encodes wss://random-words.trycloudflare.com — scan it from anywhere.
cloudflared 都会变。适合演示/测试,不适合长期使用。
Quick Tunnel URLs change every time cloudflared restarts. Great for demos and testing — not for long-term setups.
去 Cloudflare Dashboard → My Profile → API Tokens → Create Token,用自定义 token 配以下权限: Go to Cloudflare Dashboard → My Profile → API Tokens → Create Token. Use a custom token with these permissions:
Scope 限定到你要用的账号 + Zone(根域名)。 Scope it to the account and zone (root domain) you want to use.
如果已经有 config,先删掉再让向导重跑: If you already have a config, remove it first to trigger the wizard:
向导问你的时候,选 2) Cloudflare Tunnel。粘贴 API Token,输入你的根域名(比如 example.com)。向导会自动:
When asked, choose 2) Cloudflare Tunnel. Paste your API Token and enter your root domain (e.g. example.com). The wizard will:
aimote-xxxx.example.com 建 DNS 记录Create a tunnel and DNS record for aimote-xxxx.example.com
以后只要 aimote 一条命令,同时把 WebSocket 服务和 cloudflared 隧道都拉起来。子域名是稳定的——基于机器 hostname 的 hash。
From now on, aimote launches the WebSocket server and the cloudflared tunnel together. Your subdomain stays stable — tied to your machine's hostname hash.
hostname() 计算而来)。想改的话手动编辑 config.json 里的 cloudflare.subdomain 字段。
Subdomain is immutable (derived from hostname()). If you want to change it, edit cloudflare.subdomain in config.json manually.
让服务端只监听 127.0.0.1,不对外暴露——公网流量由你的反代处理:
Set the server to listen only on 127.0.0.1 so it's not exposed directly — the proxy handles the public traffic:
Caddy——自动 TLS,最简配置: Caddy — auto TLS, shortest config:
nginx——自己带证书(Let's Encrypt 等): nginx — bring your own cert (Let's Encrypt, etc.):
Upgrade 和 Connection: upgrade 这两个头是 WebSocket 握手必须的。少了客户端会卡在认证阶段。proxy_read_timeout 调到一小时以上,长会话才不会被切断。
The Upgrade and Connection: upgrade headers are required for WebSockets. Without them the client hangs at auth. Raise proxy_read_timeout to an hour so long-running agent sessions don't get cut.
手机 App 根据你在连接表单里输入的内容选用不同的 URL 协议: The mobile app picks a URL scheme based on what you type into the connect form:
wss:// 走 443 端口。端口字段被忽略。
Looks like a domain (contains letters + a dot) → always wss:// on port 443. Port field is ignored.
ws://ip:port 明文 TCP。
Looks like an IP → ws://ip:port, plain TCP.
wss:// 或 ws:// 开头 → 原样使用。
Starts with wss:// or ws:// → used as-is.
https:// 443 端口并带有效 TLS 证书。自签名证书会被拒绝。
any domain you configure must be reachable over https:// on port 443 with valid TLS. Self-signed certs will be rejected.
服务装完后会自动后台运行。不用每次手动启动,但下面这些子命令在排查问题、换域名、看二维码时很顺手。 The server runs in the background after install. You won't need to start it manually, but these subcommands come in handy for showing the QR again, rolling a fresh subdomain, or checking why something's off.
aimote-server qr
重新打印二维码并在浏览器里打开扫码页。手机重装 App 或者换手机时最常用。 Reprint the QR in the terminal and reopen the scan page in your browser. Most-used when reinstalling the app or switching phones.
aimote-server status
显示服务的 PID、版本、域名、PIN、运行时长。第一步排查命令。 Show the running PID, version, domain, PIN, and uptime. The first command to run when something seems off.
aimote-server rotate
强制换一个新的随机子域名(PIN 不变)。怀疑老域名被记下了或者就是想换一个新地址时用。 Roll a fresh random subdomain (PIN stays the same). Use when you suspect the old domain leaked, or just want a new address.
aimote-server update
立即检查 aimote.net 上有没有新版本,有就下载、校验、替换并重启。平时服务每 6 小时自动跑一次,这条命令是手动触发。 Check aimote.net for a newer release, then download, verify sha256, swap, and restart. The server already does this every 6 h automatically — this is manual.
加 --check 只查不装。
Append --check to look without applying.
aimote-server restart
通过 launchd(macOS)/ systemd(Linux)重启服务。改了 ~/.aimote/config.json 后生效用。
Restart via launchd (macOS) or systemd (Linux). Use after editing ~/.aimote/config.json.
配套:stop、start。
Companions: stop, start.
aimote-server logs
实时跟踪 ~/.aimote/server.log。手机连不上、隧道不通的时候第一时间看这里。
Live tail -f of ~/.aimote/server.log. First place to look when the phone can't connect or the tunnel's down.
aimote-server reset --yes
删掉配置文件,重启后会重新跑一遍 setup 向导。改连接模式(local ↔ aimote ↔ cloudflare)的最干净办法。 Wipe the config and rerun the setup wizard on next boot. Cleanest way to switch modes (local ↔ aimote ↔ cloudflare).
aimote-server refresh
重新检查隧道健康并重启 cloudflared,重新生成可用二维码。隧道因为代理 / 网络问题断开时,先跑这条;如果还不行再 rotate。
Re-check tunnel health and restart cloudflared so a fresh QR is published. Run this when the tunnel is broken (proxy interference, transient network); use rotate only if it persists.
~/.aimote/aimote-server install-shell
如果安装完发现 aimote-server 不在 PATH(提示 command not found),跑一次这条会自动建立软链或往 shell rc 加 PATH。然后开新终端就可以直接用 aimote-server 了。
If aimote-server isn't on PATH after install (command not found), run this once. It tries writable bin dirs first, then patches your shell rc with a marked block so a new terminal can find the command.
aimote-server help
列出所有子命令。aimote-server version 打印当前版本和 commit。
List every subcommand. Run aimote-server version to print the current version + commit.
打开服务安装向你显示的 QR 网页(http://127.0.0.1:<随机端口>),如果隧道异常,页面会自动显示具体错因和修复办法(最常见:Clash / Surge 等代理在做 fake-IP 拦截 Cloudflare),并提供"刷新"按钮一键重启隧道;终端里也可直接 aimote-server refresh 等效。
只有当隧道是"已连接"的健康状态时,才会显示二维码 —— 不会再让你扫一个根本通不了的地址。
Open the QR page the installer pointed you at (http://127.0.0.1:<random>). When the tunnel is sick the page now shows the actual error + a fix (most often: Clash / Surge fake-IP DNS intercepting Cloudflare) instead of a deceptive QR, and offers a one-click Refresh that restarts cloudflared. aimote-server refresh in a terminal does the same thing.
服务端每 6 小时会自动 ping 一次 https://aimote.net/version.json。发现新版本会下载 tarball、校验 sha256、原子替换 ~/.aimote/server/,然后让 launchd / systemd 重启。失败会自动回滚到旧版本。
手机 App 在重启那一瞬间会收到 server_update_applied 推送,自动重连。
要彻底关掉自动更新:在 ~/.aimote/config.json 里加 "autoUpdate": false,或者设环境变量 AIMOTE_NO_AUTO_UPDATE=1。
Every 6 hours the server pings https://aimote.net/version.json. On a new release it downloads the tarball, verifies the sha256, atomically swaps ~/.aimote/server/, and asks launchd / systemd to restart. Failures auto-rollback to the previous version.
The mobile app receives a server_update_applied push at the moment of restart and reconnects automatically.
To turn auto-update off entirely, add "autoUpdate": false to ~/.aimote/config.json or export AIMOTE_NO_AUTO_UPDATE=1.
在电脑上装服务,在手机上下载 APP。 Install the server on your machine, download the app on your phone.
支持 macOS、Linux、Windows。需要 Node.js 20+。 Runs on macOS, Linux, and Windows. Requires Node.js 20+.
curl -fsSL https://aimote.net/install.sh | bashirm https://aimote.net/install.ps1 | iex
或手动克隆编译:
Or clone and build manually:
git clone … && cd server && npm install && npm start
iOS 与 Android 都有,免费下载。 Available for iOS and Android. Free to download.
服务端机器需要:
Requirements on your machine:
• 装了 Claude Code CLI 或 Codex CLI
• AiMote 服务端需要 Node.js 20+
• macOS / Linux / Windows
• Claude Code CLI or Codex CLI installed
• Node.js 20+ for the AiMote server
• macOS, Linux, or Windows