Your coding agents, in your pocket. Run Claude Code, Codex, Cursor or any ACP agent on your own computer, and start, steer and approve it from your phone. End-to-end encrypted, with a free agent built in so you can try it without logging in to anything.
1. Install the daemon on the computer where your agents run:
npm install -g agentdeckd # Node.js 22+, macOS / Linux x64 / Windows x64
brew install mantou132/tap/agentdeckd # or Homebrew2. Start it:
agentdeckd start3. Scan the QR code it prints with the AgentDeck app, then pick an agent. Choose Free to start chatting right away; no account or API key required.
- One app for every agent. Claude Code, Codex, Cursor, GitHub Copilot, Google Antigravity, OpenCode, Qwen Code, Kimi CLI and other ACP agents. Switch agents and session options from your phone.
- Start sessions from your phone. The daemon runs in the background and starts with your computer, so you don't need to leave a terminal open or launch agents through a wrapper.
- Your code stays on your machine. Everything is end-to-end encrypted: the relay only forwards ciphertext. You can also self-host the relay.
- Built for being away from the keyboard.
- Get a push notification when a task finishes.
- Approve permission requests from your phone.
- Talk to your agent with push-to-talk voice chat and hear a short spoken summary of each reply.
- Review real work, not just chat.
- Browse files, Git changes, diffs and history.
- Preview the HTML pages and charts your agent produces.
- Watch a live view of the iOS Simulator, Android emulator or browser tab your agent is driving.
- Built to keep running. Drafts survive restarts, and the daemon can keep your computer awake while agents work.
AgentDeck app ⇄ Relay (ciphertext only) ⇄ agentdeckd (your computer) ⇄ ACP agents
agentdeckd connects out to the relay, so you don't need to open ports or set up a VPN. Your phone and computer pair with a secret Pairing ID, which is carried in the QR code, and derive the encryption keys from it.
Keep the Pairing ID secret. Anyone who has it can use your agents. Don't include it in screenshots or issue reports. If it leaks, run agentdeckd reset to rotate it.
# Windows (Scoop)
scoop bucket add mantou https://github.com/mantou132/scoop-bucket
scoop install agentdeckd
# From source
cargo install --path crates/daemonTo upgrade an npm install, run agentdeckd stop, then npm install -g agentdeckd@latest, then agentdeckd start. Stop the daemon before you uninstall it. If you change your Node installation or npm's global directory, run agentdeckd restart from the new installation so autostart uses the new path.
| Command | Description |
|---|---|
agentdeckd start |
Register autostart, start in the background and show the pairing QR code |
agentdeckd stop |
Stop the daemon and remove autostart |
agentdeckd restart |
Restart the background service |
agentdeckd status |
Show service status, PID, relay URL, Pairing ID and QR code |
agentdeckd reset |
Rotate the Pairing ID and clear local connection state (agents and history are kept) |
agentdeckd / agentdeckd run |
Run in the foreground |
Options can go before or after the command and are saved for future starts:
agentdeckd restart --relay-url wss://your-relay.example/ws
agentdeckd reset --pairing-id <NEW_PAIRING_ID>When you use a custom relay, the QR code carries both the Pairing ID and the relay URL. If you type the Pairing ID in manually, the app uses the default relay (wss://agent-deck.xianqiao.wang/ws).
- Cannot connect: check
agentdeckd statusand make sure the app uses the same Pairing ID and relay. Then tryagentdeckd restart, and confirm that your network allows WebSocket connections to the relay. - Still stuck: run
agentdeckd reset, then tap Reset App in the app's Settings and scan the code again. - Connection preempted: close any other client that shares the same device identity.
- Connected, but an agent fails: check that the agent's CLI works locally, and look at the daemon logs.
| OS | Daemon data directory |
|---|---|
| macOS | ~/Library/Application Support/agentdeck/ |
| Linux | ${XDG_DATA_HOME:-~/.local/share}/agentdeck/ |
| Windows | %LOCALAPPDATA%\agentdeck\ |
Logs are written to logs/agentdeckd.YYYY-MM-DD.log, one file per day, and the last 7 days are kept. Set RUST_LOG=debug for more detail. Save any logs you need before you run reset.
Android completion notifications are sent through a forwarder (agent-deck.xianqiao.wang/push) to Firebase Cloud Messaging. The payload contains only the agent and session IDs, never prompts or replies. Legacy UUID Pairing IDs use plaintext transport; new installs always use encrypted adk1_ IDs. See PRIVACY_POLICY.md for details.
We're exploring a team edition with a self-hosted relay, SSO, an approved-agent allowlist, audit logs and device management. If your team is interested, email contact@xianqiao.wang and tell us which agents you use and what your security review requires.

