open-source daemon

Code from the couch.
Or anywhere else.

CouchCode is a vendor-agnostic mobile remote control for your AI coding agents. Approve diffs from the bus. Vibe-code by voice on a walk. Never miss a permission prompt while the kettle boils.

One app for your coding agents — 12 tested integrations including OpenCode, Codex CLI, Claude Agent, Kimi, Goose, and more, over the open Agent Client Protocol (ACP).

12
integrations tested
LAN
zero-cloud pairing
Relay
access from anywhere
9:41
opencode · ~/code/api
live
Find why login fails after 1 hour
Reading src/auth/session.ts...
fs.read src/auth/session.ts
Found the bug — expiresAt is set in seconds but the JWT lib expects ms. I'll patch the helper and add a regression test.
fs.write src/auth/session.ts
session.ts +1 −1
− expiresAt: now + ttl
+ expiresAt: now + ttl * 1000
Permission
Run pnpm test auth?
Reply or speak…
↗ Push notification
opencode wants to run pnpm test
2 files changed +18 −4
+ const ms = ttl * 1000;
+ assert(ms > 0);
− const ms = ttl;
Speaks ACP to →
OpenCodeCodex CLIClaude AgentKimiGooseQwen CodeKiloDeepAgentspifast-agentMistral VibeVT Code+ more integrations coming
How it works

Your laptop keeps coding. Your phone keeps the wheel.

A tiny daemon on your machine speaks the Agent Client Protocol (ACP) to whichever agent you launched. The phone speaks to the daemon — directly over your LAN, or through the relay when you're away.

Phone
couchcode app
· voice → text
· permission UX
· diff cards
WebSocket / LAN
device credential
Daemon
couchcode daemon
· ACP client
· session mux
· fs proxy
ACP / stdio
@zed-industries
Agent
your ACP agent
· opencode
· codex
· kimi
01
Install the daemon
One installer script on your dev machine. The daemon is open source under Apache 2.0, so you can audit it before you run it.
See setup →
02
Pair with a QR
Daemon prints a QR. Scan it once on your wifi — no signup, no cloud account. Your phone gets a device credential you can revoke anytime.
ws://192.168.1.42:7531
03
Drive the agent
Pick from 12 tested integrations — OpenCode, Codex CLI, Claude Agent, Kimi, Goose, and more. Send prompts. Approve diffs. Walk the dog.
› deploy the staging branch
Setup

Install the daemon, then grab the app.

CouchCode needs a tiny daemon on your dev machine and the mobile app in your pocket. Install the daemon first, then pair the app with the QR code.

01

Install the daemon

Platform
Architecture
Method
curl -fsSL https://cdn.couchcode.io/builds/desktop/couchcode/install.sh | sh
02

Get the mobile app

Scan the QR code printed by the daemon. Use LAN-only pairing at home, or the relay when you're away.

Voice
Talk to your repo while you walk
Tap, speak, edit. Your words become text right on your phone, and nothing auto-sends — you read what you said before it ships.
0:04
“refactor the billing module to use the new StripeAdapter and write tests for the edge cases”
on-device
Permission UX
Never miss a permission request
When your agent requests permission to run a command or write a file, CouchCode sends a push so you can open the request, inspect the details, and respond from the app.
CouchCodenow
opencode wants to run a shell command
rm -rf node_modules && pnpm i
haptic on arrival · visible on the lock screen
LAN or relay
Pair without an account
Scan one QR on your wifi — no signup, no cloud login. Your phone gets a device credential bound to it: pair once, revoke anytime. Away from home? Reach your daemon through the relay — optional, never required to pair.
No account QR-paired device credential Revoke anytime Relay optional
$ couchcode daemon
listening on 192.168.1.42
scan to pair ↗
Permission modes
Control the agent's permission mode
Choose the permission mode exposed by your agent and change it per session. Common modes include Plan, Ask, and Auto; available modes and their exact behavior depend on the selected agent.
Permission modes are provided and enforced by the selected agent over ACP.
Multi-agent
Switch agents per session
Run opencode on one session, Codex the next — pick the agent per session, all from one app.
opencode ● active
Codex
Kimi
Encryption
Optional end-to-end encryption
For the privacy-conscious: flip on E2EE and your phone and daemon pin each other's keys at pairing, so the relay forwards ciphertext only — it can't read your code, commands, or credentials. Sealing every message costs a little bandwidth, so it's off by default.
phone relay daemon
X25519 ChaCha20-Poly1305
relay sees ciphertext only
Privacy
Lock it behind your face
Add an optional Face ID, Touch ID, or fingerprint gate — with a PIN fallback. Your approvals stay yours, even if your phone doesn't. On-device only; we never see it.
Unlock CouchCode
Face ID · or use PIN
optional · device-only
Relay
Access from anywhere
Our hosted relay is included for normal personal use under fair use. Use LAN-only if you only ever code on your home wifi.
Phone
on cellular
Your daemon
at home
via relay.couchcode.io
Cost
Live token meter per turn
Watch your context window fill and the spend rise live. Cut a turn that's spiraling before it runs away.
opencode · turn 12 live
ctx 16k / 262k $0.085
Agents

12 agents.
One mobile remote.

Zero vendor lock-in. ACP for the agents that speak it, a real terminal for everything else. CouchCode is just an open client — switch agents per session, swap them next month. We never sit between you and your model.

Codex CLI
OpenAI's coding assistant
● ready
$ codex-acp
OpenCode
The open-source coding agent
● ready
$ opencode acp
Kimi CLI
Moonshot AI's coding agent
● ready
$ kimi acp
Claude Agent
Anthropic's Claude, via ACP
● ready
$ claude-agent-acp
goose
Block's open-source agent
● ready
$ goose acp
Qwen Code
Alibaba's Qwen coder
● ready
$ qwen --acp
Kilo
Bring-your-own provider
● ready
$ kilo acp
DeepAgents
LangChain's coding agent
● ready
$ deepagents-acp
pi
Minimal, fast agent by Earendil
● ready
$ pi-acp
fast-agent
MCP/ACP-first framework
● ready
$ uvx fast-agent-acp
Mistral Vibe
Mistral's open-source assistant
● ready
$ vibe-acp
VT Code
Native OpenRouter + 20 providers
● ready
$ vtcode acp

Don't see your agent? Open a GitHub issue and we'll wire it up.

Power user

When ACP isn't enough,

fall back to the metal.

Not every tool speaks ACP yet. And sometimes you just want a real terminal — to git push a hotfix from a café, tail logs, or kick off your favorite agent the old-fashioned way.

CouchCode opens a full terminal straight on your dev box — real xterm, true-color and ANSI. Lose signal and your session and scrollback are waiting when you reconnect. Drop in, run anything.

9:41
you@dev-box
connected
you@dev-box:~/projects/couchcode$ cd ~/projects/couchcode
you@dev-box:~/projects/couchcode$ ls -la
total 84
drwxr-xr-x8you apps src/
drwxr-xr-x12you packages src/
drwxr-xr-x5you daemon rust/
drwxr-xr-x4you relay go/
drwxr-xr-x3you .github ci/
-rw-r--r--1you README.md 8.2K
-rw-r--r--1you package.json 1.1K
-rw-r--r--1you pnpm-lock.yaml 420K
you@dev-box:~/projects/couchcode$ _
esctabctrl
Pricing

Free core. The good buttons included.

You pay your model provider directly — we never mark up your usage. Everything in this public release is part of the free core and stays that way; future advanced features may be paid. No seats, no crippled tier.

public release
CouchCode Core
solo dev · indie
$0/ for individual developers
  • Free iOS app
    On the App Store
  • Free Android app
    On Google Play
  • Daemon
    Open source · Apache 2.0
  • ACP agent support
    OpenCode, Codex CLI, Claude & more
  • Remote terminal
    Power-user fallback
  • Public relay
    Included under fair use
Get started
Daemon is open source under Apache 2.0. The hosted relay is included for normal personal use under fair use — heavy or abusive traffic may be throttled. Prefer to skip it? Pair LAN-only and your phone talks straight to your daemon, with no CouchCode infrastructure in the path.
FAQ

Reasonable questions.

The daemon is open source under Apache 2.0 — read every line before you run it. It only listens on the LAN port you configure, requires a paired device credential, and has no auto-update. We will never ship a closed-source daemon.

Today CouchCode ships a tested catalog you install right from the app — OpenCode, Codex CLI, Claude Agent, Kimi, Goose, Qwen Code, and more. If yours speaks ACP but isn't there yet, open a GitHub issue and we'll add it to the catalog.

Agent Client Protocol (ACP) is an open protocol developed by Zed and JetBrains that defines how coding agents communicate with client interfaces such as editors, IDEs, and CouchCode. It provides a shared integration layer, so each client doesn't need a separate custom integration for every agent. In spirit, it plays a role similar to the Language Server Protocol, but for AI coding-agent workflows. CouchCode uses ACP to receive structured messages, tool activity, permission requests, session capabilities, and other features that a particular agent chooses to expose. Learn more on the official ACP website.

CouchCode communicates with coding agents through the Agent Client Protocol (ACP). ACP defines what information and capabilities an agent exposes to its client. CouchCode can list, reconnect to, or resume only the sessions that the particular agent makes available through that protocol. A session started separately in a local terminal may belong entirely to the agent's own CLI or runtime, and ACP does not automatically discover arbitrary local processes. If the agent doesn't expose session listing, discovery, or resume support, CouchCode can't reliably retrieve it from the outside. This is an agent and protocol architecture limitation, not an account, relay, or synchronization issue. Existing processes may still be accessible through the remote terminal, but they don't automatically become structured CouchCode agent sessions. Learn more about ACP.

On your dev machine, in whatever config your agent already uses — OpenCode, Codex CLI, Claude Agent, and the rest each have their own. The daemon hands work off to the agent locally; the agent talks to the model. CouchCode never sees your keys. There's no server to send them to, no database to leak them from, and frankly I don't want the responsibility.

CouchCode doesn't sell, resell, proxy, or mark up model access. Your coding agent connects using your own account, subscription, API key, credits, or other provider credentials. Usage limits, included credits, metering, and additional charges are determined by the agent and model provider, and they may treat interactive CLI use, APIs, SDKs, automation, and third-party clients differently. Before using an agent through CouchCode, review the provider's current pricing, billing, usage-limit, and terms pages. CouchCode doesn't control those charges or guarantee how a provider will classify remote or programmatic usage.

Relay traffic always rides over TLS. If you want more, turn on E2EE when you pair: your phone and daemon exchange keys via the QR code and pin them (X25519 + ChaCha20-Poly1305), so even our relay only ever forwards ciphertext — it can't read your code, commands, or credentials. A key mismatch is refused outright, so there's no silent man-in-the-middle. It's aimed at the privacy-conscious, adds a little bandwidth overhead from sealing every message, and is opt-in per pairing (off by default).

Yes — turn on a Face ID, Touch ID, or fingerprint lock (with a PIN fallback) and CouchCode asks for it every time you open the app, so a found or stolen phone can't approve anything. It's optional and entirely on-device — your biometrics and PIN never leave the phone and we never see them.

Voice uses your phone's built-in, on-device speech recognition, so it's best-effort — accuracy varies by device, accent, and how noisy it is around you. Whatever it hears is shown as editable text first; nothing auto-sends, so you always read it back (and fix it) before it goes to the agent.

I'm one person, not a startup. The expensive part of any agent is the model — and you pay your provider for that directly, with no markup from me. The daemon runs on your laptop and the apps cost almost nothing to ship.

So the CouchCode core is free: everything in this public release is part of that free core and stays that way. Down the road I may offer advanced features separately, but the core you get today doesn't get clawed back. The hosted relay is included for normal personal use under fair use — heavy or abusive traffic may get throttled — and LAN mode skips it entirely, working without any CouchCode infrastructure.

Zero vendor lock-in isn't a slogan: the protocol is open, the daemon is open source, and if I disappear tomorrow your phone and your laptop still talk to each other. That's the deal.

Your coding agents,
off the desk.

Free, both stores. No account. Bring your agent.

Apache-2.0 daemon · shipped itself · 🇪🇪 Tallinn