What PlanToCode is
A desktop app that runs OpenAI Codex on your projects with every command, file, and diff one click away, plus iPhone and Android companions that drive the same session through a relay. This handbook explains how it is built.
Checked against the source on 17 September 2026
On this page
What is different
PlanToCode is a Mac and Windows app that runs OpenAI Codex on your ChatGPT subscription against a local project folder. This handbook explains the parts you cannot see from the screen: which process owns what, how a message becomes a Codex turn and gets confirmed, how the timeline is assembled from history pages and a live overlay, what the relay does and refuses to do, and how the bundled tools reach your Chrome, Gemini, and your phones.
- ReceiptqueueId · operationId
Returned as soon as the message is saved in the desktop outbox, and only to the phone that asked. The phone waits up to 20 s for it and keeps its own copy until it arrives.
- Codex echouserMessage.clientId
The drain task sends the operationId as clientUserMessageId. When the live item/completed notification carries it back, the desktop records the message as sent and removes the outbox entry.
- No desktop connected-32011 · -32010
The relay answers the phone itself: -32011 while the desktop is reconnecting, -32010 once it is offline. Nothing is queued, and the phone keeps its copy.
Three rules shape everything below
- The desktop is the authority. It owns the project files, the Codex app-server child process, the durable outbox, and the RPC router that phones talk to.
- The relay is dumb on purpose. It routes envelopes between authenticated devices and holds no project contents, no durable queue, and no replay log.
- Every timeline row is a typed object with a stable identity, so the same conversation renders identically on the desktop and on a phone without text matching or timestamps deciding what exists.