Reach your running coding agent from your phone.
Carry is a remote control for coding agents. Walk away from the desk and keep watching the transcript, answering permission prompts and steering the session from Android. Built around omp (oh-my-pi) as the primary harness.
Two ways to attach, one app
A live omp session
The phone joins a running omp session as a collab guest, using omp’s own guest protocol. You get the transcript, tool calls, permission prompts, a composer and abort — structured, not scraped from a terminal.
- Transport: omp’s end-to-end-encrypted relay (
wss://my.omp.shby default). - Host needs:
ompand nothing else. - The session must be shared first:
/collabin the TUI, orcollab.autoStart.
Any daemon-owned terminal
The carry daemon owns sessions (a managed PTY running omp, a shell, another agent) and the phone attaches. Disconnecting never ends the session.
- Transport: iroh peer-to-peer QUIC, built into the daemon. The daemon dials out; no inbound port is opened.
- Host needs: the
carrydaemon. - Also gives you machine-level discovery, projects, and starting or resuming omp sessions remotely.
What you can do from the phone
- Read a live transcript, with tool calls, subagent chips and queued-message counts.
- Answer permission prompts and questions; abort a turn.
- Send prompts. If the connection drops, they wait in an outbox and go out when it returns.
- See every shared omp session on a paired machine, scoped by project directory, and join with one tap.
- Start a new omp session (model and thinking pickers) or resume a saved one.
- Attach to a terminal session and type into it, with a key row and paste.
- Opt in to Alerts while away so a session that blocks or finishes can notify you.
What it does not do
- It is not a hosted service. There are no accounts and no Carry servers. The collab path uses omp’s relay; the terminal path uses iroh’s.
- It does not reach a session that is not shared. A merely running
ompdoes not appear inomp collab listuntil it has run/collaborcollab.autoStartis set. - It cannot switch model or thinking level mid-session over collab. The guest protocol has no such frame; pick at spawn, or steer with prompts.
- It is not on the Play Store. Today it is a locally built or signed Android APK. A Play Store or EAS-hosted build is not done.
- There is no subagent transcript view yet.
- A leaked daemon token is command execution as you. Treat the pairing token like an SSH key;
Carry is a personal project. The Android app is the client that has been exercised on a device; the stack is Expo / React Native, but this site makes no claim about iOS or web builds.