Pairlet was formerly called CC Pocket (cc-pocket). This is the same project, with its history and existing download links preserved.
$ npx -y skills add heypandax/pairlet --agent claude-code
Pairlet was formerly called CC Pocket (cc-pocket). This is the same project, with its history and existing download links preserved.
English | 简体中文
Your coding agents stay on your computer. You stay in control from anywhere.
Pairlet is an open-source, local-first control plane for command-line coding agents. The agent keeps running on your own machine, against your own checkout; from a phone, a tablet or another computer you watch it work, answer the permission prompts that block it, continue the same session, and read what it changed. Traffic is end-to-end encrypted and passes through a zero-knowledge relay that only ever forwards ciphertext — no Pairlet account, no content logging. Clean-room Kotlin, MIT.
v1.9.4 drives six agent backends — Claude Code, OpenAI Codex, OpenCode, Kimi Code (Preview), ZCode and DeepSeek. They are not equivalent: see the capability matrix before you pick one.
🌐 Website · 🛠️ Engineering Wiki · 📖 User manual · 💬 Support, no sign-in · 📦 Latest release
Real product UI with scripted demo data — regenerate with bash marketing/site/generate-assets.sh. Provenance: site/assets/product/manifest.json.
Development builds now include Firebase/GA4 product outcomes and Sentry diagnostics, with controls for sharing usage and diagnostic data. See the observability guide for configuration, privacy boundaries, verified results and remaining release requirements.
1 · Get the app — App Store (iPhone · iPad) · TestFlight beta · Android APK. Prefer a computer? See the Desktop app.
2 · Install the daemon on the machine that runs your agent CLI — any supported one, not Claude specifically:
curl -fsSL https://raw.githubusercontent.com/heypandax/pairlet/main/scripts/install.sh | bash # macOS · Linux
irm https://raw.githubusercontent.com/heypandax/pairlet/main/scripts/install.ps1 | iex # Windows
3 · Pair — run pairlet pair, then scan the QR it prints (or type the 6-digit code) in the app. You are connected end-to-end.
pairlet is the short command; cc-pocket-daemon still supports the same subcommands. If an older installation has no pairlet command yet, keep using cc-pocket-daemon until you update through its original installer or package manager.
Package managers, mirrors, updates and per-platform notes: Install details.
| Job | What you get | |
|---|---|---|
| 01 | Watch | Streaming output, tool events with timing, sub-agent cards and background-task state, across devices. Filter projects, sessions and usage by agent. |
| 02 | Approve | A permission request reaches your phone the moment the agent raises one. Allow or deny in seconds; no answer times out to a safe deny. |
| 03 | Continue | Take a running session over in place instead of forking it, start a new task straight from the phone or the desktop app, and get missed output backfilled after a reconnect. |
| 04 | Inspect | Changed files with line-level diffs, file preview, context and usage. Images in your own prompts stay visible in replay. |
Capability differs by backend — the matrix below is the source of truth.
Public capability claims for v1.9.4, audited against commit e9ee816f on main. Machine-readable copy: site/public-capabilities.json.
| Agent | Core session | Approval & mode | Changes & diff | Usage |
|---|---|---|---|---|
| Claude Code | ✓ Yes | ✓ Yes | ✓ Yes | ✓ Yes |
| OpenAI Codex | ✓ Yes | ✓ Yes | ✓ Yes | ✓ Yes |
| OpenCode | ✓ Yes | ✕ No — always Full access | ✕ No | ✓ Yes |
Kimi Code Preview | ✓ Yes | ✓ Yes | ✕ No | ✓ Yes · new in v1.8.0 |
| ZCode | ✓ Yes | ✓ Yes | ✕ No | ✓ Yes · new in v1.8.0 |
DeepSeek Harness narrow v1 | ✓ Yes | ✓ Yes | ✕ No | ✕ No |
opencode run has no approval protocol, so those sessions run at Full access and the app says so up front instead of offering modes it cannot enforce.flowchart LR
app["📱🖥️ Pairlet app<br/>(phone · tablet · desktop)"] -- "wss · ciphertext" --> relay["relay<br/>(zero-knowledge broker)"]
relay -- "wss · ciphertext" --> daemon["local daemon<br/>(your computer)"]
daemon -- "stdio" --> agent["agent CLI<br/>(claude · codex · opencode · kimi · zcode · DeepSeek)"]
The daemon runs on your computer, drives the agent CLI as a subprocess and dials out to the relay — no inbound ports to open. The relay pairs your devices and routes opaque encrypted frames; it holds no message content and no private keys. The app and the daemon run an end-to-end session (P-256 ECDH + HKDF + AES-256-GCM, an X3DH/Noise-style handshake), so plaintext never leaves the two trusted endpoints. The desktop app on the same computer connects to the daemon directly by default; for a phone on the same network to connect directly (lower latency), run pairlet config --direct-connect lan and restart the daemon. The relay stays as the from-anywhere fallback. Pairings expire and can be revoked.
Honest limits: the agent still executes with your own operating-system permissions — end-to-end encryption is not a sandbox. OpenCode sessions have no enforceable interactive approval. The custom Noise-style channel has not had an independent third-party audit. First-time pairing currently relies on the relay not being compromised; afterwards, compare device fingerprints (pairlet devices and the app's About screen). Threat model: docs/SECURITY.md. Report vulnerabilities privately via GitHub security advisories.
| Surface | Official packages |
|---|---|
| Phone / tablet app | iOS · iPadOS (App Store, TestFlight) · Android APK |
| Desktop app | macOS Apple Silicon · Intel (signed .dmg) · Windows x86_64 .msi. Linux x86_64 .deb · .rpm · arm64 .deb · .rpm (unsigned; an .AppImage is attached to the release when it builds). |
| Local daemon | macOS Apple Silicon · macOS Intel · Linux x86_64 · Linux arm64 · Windows x86_64 |
| HarmonyOS | Signed HAP, Preview — limited capability |
| Relay | Hosted zero-knowledge relay by default; self-hosting supported |
The desktop app and the local daemon are different packages: the app is a client, the daemon is what actually runs the agent.
curl -fsSL https://raw.githubusercontent.com/heypandax/pairlet/main/scripts/install.sh | bash
pairlet pair
Verifies the download against the release's SHA256SUMS, installs under ~/.local (one directory per version), and registers the launchd service so it runs on login and reconnects itself. Homebrew: brew install --cask heypandax/tap/cc-pocket (use the full name; an unrelated cask is also called cc-pocket).
curl -fsSL https://raw.githubusercontent.com/heypandax/pairlet/main/scripts/install.sh | bash
pairlet pair
Pulls a self-contained tarball (bundled JRE, no system Java), installs under ~/.local and registers a systemd --user service. Voice transcription uses ffmpeg instead of macOS's afconvert. There is no official Linux desktop app package — build it from source.
irm https://raw.githubusercontent.com/heypandax/pairlet/main/scripts/install.ps1 | iex
One command: installs, registers a logon Scheduled Task, and drops straight into pairing. Scoop: scoop bucket add heypandax https://github.com/heypandax/scoop-bucket then scoop install cc-pocket-daemon.
GitHub downloads crawl there, so the installer and release artifacts are mirrored on the relay: curl -fsSL https://pocket.ark-nexus.cc/dl/install.sh | bash (Windows: irm https://pocket.ark-nexus.cc/dl/install.ps1 | iex). Same script, checksum-verified, with automatic fallback to GitHub. The daemon's self-update uses the mirror too.
pairlet version reports what is running, how it was installed, and the single command that updates this install — offline, and whether or not the daemon is up. The app shows the same under Settings ▸ Versions.
pairlet is a Claude Code plugin with 2 hand-picked skills, indexed on Flowy in the Operations category. Install it with the command on its page. It includes cc-pocket-support-review, cc-pocket-support. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it