Features特性 Help & support帮助与客服 Desktop桌面版 How it works工作原理 Security安全 Download下载 View on GitHub →

Remote control for Claude Code and Codex — open source. 开源远程控制 Claude Code 与 Codex。

Steer either coding agent running on your own computer from your phone, tablet, or another desktop. Approve tools, stream output, and resume sessions over end-to-end encryption. 用手机、平板或另一台电脑,操控运行在你自己电脑上的任一编码代理。端到端加密地审批工具、查看输出并恢复会话。

MIT·open source·self-hostable·zero-knowledge relay·no CC Pocket account

Fix relay reconnect default
Lidapeng-MacBook · ~/proj/app/cc-pocket
The reconnect loop dies after the 3rd retry — the scope owning the timer is cancelled when the socket closes.
Bash gradle :relay:test 9s
kotlincopy
fun reconnect() {
  scope.launch {
    delay(250)
    open("relay")
    // reconnect guarded
  }
}
Guard added — reconnect now survives scope cancellation.
+
Message Claude…
Claude needs permission
Run command · Bash
rm -rf ./build && ./gradlew clean

You stepped away. Claude is blocked on a permission prompt. 你离开了工位,Claude 正卡在一个授权弹窗上。
Approve it from your pocket in two taps. 口袋里两下点掉它。

Claude needs permission
Edit file
src/relay/WsClient.kt

Features核心特性

Four jobs, done from your pocket.四件事,口袋里搞定。

01

Approve from anywhere随处批准

Tool-permission requests reach your phone the moment the agent raises one. Allow or deny in seconds — and if you don't, it times out to a safe deny.agent 一请求授权,手机马上收到。允许还是拒绝,几秒钟的事;一时没顾上,超时也会自动拒绝,不会放行。

auto-deny on timeout
Chat
~/proj/app/cc-pocket · ⑂ main
Claude needs permission
Run command · Bash
rm -rf ./build && ./gradlew clean
0:18 ⑂ main
02

Take over, don't fork接管,而不是分叉

Resume the exact session you left running — Claude or Codex — or start fresh in any repo. “Continue here” takes a terminal session over in place: no wrapper to launch, no separate mode, no duplicate branch.电脑上跑着的会话,拿起手机接着聊——Claude 和 Codex 都行;想开新的,哪个仓库都可以。「Continue here」原地接管终端会话:不换启动方式,不开专门模式,也不会分出一条重复的分支。

💬 12 · ⑂ main · 2h ago
Sessions
Lidapeng-MacBook · ⑂ main
+
New session
~/proj/app/cc-pocket
Refactor auth module
add a unit test for the stream parser
💬 12 · ⑂ main · 2h ago
Nightly test sweep codex
run the flaky suite 20× and bisect
💬 6 · ⑂ fix/parser · 5h ago
Add relay websocket client
scaffold the Ktor WS client with reconnect
💬 23 · ⑂ feat/relay · yesterday
Resume session
Lidapeng-MacBook · ~/proj/app/cc-pocket
Live on terminal
Fix relay reconnectterminal
Running on Lidapeng-MacBook · 💬 12 · ⑂ main
Continue on this phone
resumes in place · ⑂ no fork
03

See what changed看清每一处改动

Line-level diffs with per-language highlighting, right on your phone. Text is selectable, you can preview or export the patch, and tapping a path opens the file.行级 diff 直接在手机上看,按语言高亮。文字能选中,补丁能预览、能导出,点一下路径就打开文件。

+42 −7
Files changed 2 files · +73 −16
~/proj/app/cc-pocket · ⑂ main
A
useReconnect.kt
src/net
+42
M
WsClient.kt
src/net/relay
+31 −9
kotlin·WsClient.kt@@ −12,4 +12,6 @@
12fun reconnect() {
13 scope.launch { open() }
13+ appScope.launch {
14+ delay(backoff); open("relay")
15+ } // survives cancel
16}
04

It finds you — and loses nothing它会找到你——且不丢一个字

A push notification lands the moment a turn finishes. If the connection blips mid-stream, the missed output is backfilled on reconnect — the transcript is always complete.回合一结束,推送就到。中途断了网也不要紧——重连那一刻,漏掉的输出自动补齐,记录始终完整。

reconnected · backfilled
CC Pocket
Claude finished · Fix relay reconnect
now
Fix relay reconnect default
Lidapeng-MacBook · ~/proj/app/cc-pocket
The reconnect loop dies after the 3rd retry — the scope owning the timer is cancelled when the socket closes.
reconnected — output backfilled
I hoisted the backoff timer to an app-level scope, so it survives the socket closing. Re-running the relay suite now.
Bashgradle :relay:test

Desktop edition桌面版

One app. Every computer.一个应用,掌控每台电脑。

A native app for macOS, Linux and Windows — drive one computer from another, wrapped in the same end-to-end encryption as your phone. The phone triages; the desktop commands.macOS、Linux、Windows 三端原生应用——用一台电脑操控另一台,加密和手机端同一套。手机管分诊,桌面管指挥。

Fix relay reconnect
Lidapeng-MacBook · ~/proj/app/cc-pocket
Fix relay reconnect default
The reconnect loop dies after the 3rd retry — the scope owning the timer is cancelled when the socket closes. I'll hoist the backoff timer to the parent scope.
Bash gradle :daemon:test 12s
kotlincopy
fun reconnect(): Job {
  val backoff = 250
  return scope.launch {
    log("relay: reopening")
    delay(backoff)
  }
}  // survives cancellation
Guard added — reconnect now survives scope cancellation.
Message Claude…
esc stop
3 computers 1 needs you
Lidapeng-MacBook 2 running
mac-studio 1 approval
devbox-linux offline
⌘K everywhere随处可用
Jump to any project or session.跳转到任意项目或会话。
Approvals follow you授权跟着你走
Tray popover when the window's behind.窗口在后台时,托盘弹窗提醒。
Pinned sessions固定会话
⌘1–9 to jump straight in.一键直达。

Get the desktop app: macOS · Apple Silicon · macOS · Intel · Windows (.msi) — full setup in Get started. 下载桌面端:macOS · Apple 芯片 · macOS · Intel · Windows(.msi)——完整安装步骤见开始使用

More capabilities更多能力

And a lot more in your pocket.口袋里,还有很多。

The four jobs are the headline — here's the rest of what ships in the app, on phone and desktop alike.四件事是主线,下面是 App 里其余的能力——手机与桌面同样齐全。

Usage insights用量洞察

Tokens, estimated cost, and a calm hour-by-hour trend — accounting that soothes, not alarms.token 用量、预估花费、一天的节奏排成安静的小柱——像记账,不像报警。

Control & permissions掌控与授权

Approve or deny every tool call from your phone, with a timeout that fails safe to deny.每次工具调用都由你在手机上放行或拦下;超时没批的,默认拒绝。

Agents & workflows多代理与编排

Fan work out across many agents and phases, and watch the whole run stay legible.活儿分给一群 agent、拆成几个阶段去跑,全程看得清清楚楚。

Ways to talk to it多种输入

Type, dictate, or drop in a screenshot — the composer takes text, voice, images, files and video.打字、口述,或者直接丢张截图——文字、语音、图片、文件、视频都收。

Watch it think, live实时看它思考

Real-time streaming output, code blocks, and tool events — exactly as the terminal renders them.实时流式输出、代码块、工具事件——和终端渲染的一模一样。

Fleet overview多机总览

Every paired computer in one list — who's online, who's running, who needs an approval.所有已配对电脑一张列表——谁在线、谁在跑、谁在等你批准。

Share a folder共享一个文件夹

Lend a guest one directory with a live agent — scoped, expiring, revocable, honest about limits.借出一个目录,外加一个能干活的 agent——范围锁死、到期自动收回、随时可撤,能碰什么写得明明白白。

Sessions & groups会话与分组

Resume any session in place, or organize them into groups per project and per machine.原地接起任何会话,或按项目、按机器把它们分组。

Private by design为隐私而设计

End-to-end encrypted, zero-knowledge relay, no account — plaintext never leaves your endpoints.端到端加密、零知识中继、免账号——明文永远不离开你的两个端点。

How it works工作原理

A zero-knowledge bridge, phone to computer.从手机到电脑的零知识桥接。

phone · desktop
Compose MultiplatformCompose 跨平台
wss · ciphertext →E2E encrypted
relay
zero-knowledge broker零知识中继
wss · ciphertext →opaque frames
daemon
your computer你的电脑
stdio →local
claude / codex
CLI on your machine本机 CLI

The relay only forwards opaque encrypted frames — it pairs your devices and moves ciphertext, nothing more. On the same network the app connects to the daemon directly for lower latency. Plaintext never leaves your phone and your computer. 中继只做两件事:帮设备配对、转发加密帧——内容它一个字也看不到。同一局域网里 App 会直连 daemon,延迟更低。明文自始至终只在你的手机和电脑上。

Security安全

The relay can't read a thing.中继什么也读不到。

Zero-knowledge relay零知识中继

Forwards ciphertext only; holds no message content and no private keys.只转发密文;不保存任何消息内容,也不持有私钥。

End-to-end encrypted端到端加密

P-256 ECDH + HKDF + AES-256-GCM, an X3DH/Noise-style handshake; plaintext stays on your two trusted endpoints.P-256 ECDH + HKDF + AES-256-GCM,X3DH/Noise 式握手;明文只留在你的两个可信端点。

No accounts, no login无账号、免登录

Pair by scanning a QR or typing a 6-digit code; the daemon's key travels out-of-band so even a malicious relay can't MITM. On device, an optional Face ID app lock guards the app itself.扫个码、或者输 6 位配对码就连上;daemon 的密钥不经中继之手,中继就算变坏也插不进来。手机端还能再加一道 Face ID 应用锁。

Open & self-hostable开源可自托管

Clean-room Kotlin, MIT, zero content logging; run your own relay.Kotlin 从零写起,MIT 开源,不留任何内容日志;不放心就自建中继。

Trust without trusting us.信任,但不必信任我们。
Read the full threat model →阅读完整威胁模型 →

Get started开始使用

Get the app, then connect.装上 App,连接电脑。

On a phone? Tap to install. On a computer? Scan the QR with your phone's camera. 用手机?点一下直接安装。用电脑?打开手机相机扫码即可。

iOS · App StoreiOS · App Store
iPhone & iPadiPhone 与 iPad

Scan to download扫码下载

Download on the App Store前往 App Store 下载

New versions land first on the TestFlight beta. 新版本抢先上 TestFlight Beta

Android · APKAndroid · APK
Install package on GitHubGitHub 安装包

Scan to download扫码下载

Download APK on GitHub前往 GitHub 下载 APK

Prefer the desktop app? Get it for macOS (.dmg, signed) — Apple Silicon · Intel — or Windows (.msi). Drive one computer from another. 想用桌面端?macOS(.dmg,已签名)下载 Apple 芯片 · Intel,或 Windows(.msi) 版——用一台电脑操控另一台。

Then connect your computer — three commands然后连接电脑——三条命令

1

Install the daemon on your computer在电脑上装好 daemon

$curl -fsSL https://raw.githubusercontent.com/heypandax/cc-pocket/main/scripts/install.sh | bash

Apple Silicon & Intel — signed & notarized, checksum-verified, installs under ~/.local and registers the launchd service. Prefer Homebrew? brew install --cask heypandax/tap/cc-pocketApple 芯片、Intel 都能用——已签名公证、下载自动校验,装进 ~/.local,launchd 服务顺手注册好。想用 Homebrew?brew install --cask heypandax/tap/cc-pocket

$cc-pocket-daemon update

The daemon updates itself (it also checks daily and notifies your phone). Homebrew installs: brew upgrade --cask heypandax/tap/cc-pocketdaemon 会自己升级(每天自查新版,有了就推送到手机)。Homebrew 装的用 brew upgrade --cask heypandax/tap/cc-pocket

$curl -fsSL https://raw.githubusercontent.com/heypandax/cc-pocket/main/scripts/install.sh | bash

x86_64 / arm64. Installs under ~/.local + a systemd --user service.x86_64 / arm64。装进 ~/.local,注册 systemd --user 服务。

$cc-pocket-daemon update

The daemon updates itself (it also checks daily and notifies your phone). Re-running the install one-liner works too.daemon 会自己升级(每天自查新版,有了就推送到手机)。重跑一遍安装命令也一样。

>irm https://raw.githubusercontent.com/heypandax/cc-pocket/main/scripts/install.ps1 | iex

x86_64. Needs the Claude Code CLI. One command: installs, registers the background service, and opens pairing right away. Prefer Scoop? scoop bucket add heypandax https://github.com/heypandax/scoop-bucket; scoop install cc-pocket-daemonx86_64。要先装好 Claude Code CLI。一条命令搞定:装好、注册后台服务、直接进入配对。想用 Scoopscoop bucket add heypandax https://github.com/heypandax/scoop-bucket; scoop install cc-pocket-daemon

>cc-pocket-daemon update

The daemon updates itself (it also checks daily and notifies your phone). Re-running the install one-liner works too; Scoop installs: scoop update cc-pocket-daemondaemon 会自己升级(每天自查新版,有了就推送到手机)。重跑一遍安装命令也一样;Scoop 装的用 scoop update cc-pocket-daemon

2

Pair your phone配对你的手机

$cc-pocket-daemon pair

Prints a QR + a 6-digit code in your terminal.终端里会打出一个二维码和 6 位配对码。

3

Open the app, scan the QR打开 App,扫码

…or type the 6-digit code. You're connected end-to-end.……或者把那 6 位码敲进去。就这样,连上了——端到端加密。

Requires an installed, logged-in claude CLI.前提:电脑上装好并登录了 claude CLI。

Guides & answers指南与解答

Choose the remote workflow that fits.选一套适合你的远程工作流。

Plain-language guides for Claude Code, OpenAI Codex, security, and self-hosting—with official sources and dated facts.覆盖 Claude Code、OpenAI Codex、安全与自托管;引用官方来源,并标注核验日期。

Free and open source. MIT licensed. Clean-room Kotlin. Android · iOS · desktop, one Compose Multiplatform codebase. 自由开源,MIT 许可,Kotlin 从零实现。Android · iOS · 桌面,同一套 Compose Multiplatform 代码。

Star on GitHub在 GitHub 加星