New Ret for iPhone, now in beta

Run lots of agents.
Lose track of none.

Ret is the desktop workbench for Codex and Claude Code. Start threads across every project, fork them, spread them out on a canvas, and clear whatever's waiting on you from one inbox.

Windows & macOS · Updates itself · Other platforms
Works with Codex Claude Code on your own sign-in. Your config, MCP servers, hooks and skills come along.
Four views

Four ways to see the same work.

Switch from the title bar or with Alt 1–4. Every thread is the same live thread in each, so you can triage in one view and dig in in another.

Focus Alt 1

Browser-style tabs, one thread at full size. A tab can hold two threads side by side, and forking opens the fork next to the original.

Canvas Alt 2

An infinite canvas of thread windows. Fork links, a minimap, and beacons on the edge pointing at anything off screen that needs you.

Code Alt 3

The project's files, Monaco editor tabs, and a thread beside them. Files the agent touched are marked, and open files reload as it edits.

Inbox Alt 4

Everything that wants you, across every project: needs you, ready to review, failed, working. j k to move, e to clear.

Code and Inbox can also live on the canvas as windows of their own, next to your threads.

Approvals & questions

Approvals come to you.

When an agent wants to run a command, edit a file or get more access, it asks in the thread, and the Inbox and a notification tell you if you're looking elsewhere. Questions dock on top of the composer.

  • Allow once, for the session, or always for that command. Or decline, or stop the turn.
  • Answer with one key. Click, press the option's number, or ↑ ↓ and Enter. Several questions go one at a time, with Back.
  • Skip to let the agent carry on without an answer.
  • Secret answers get their own hidden field and never touch your drafts.
Go ahead, it works
Rate-limit the login endpoint api Codex
Edited src/server/session.ts+12−3
Sessions now expire after 30 days of inactivity, and the refresh test covers it.
Add rate limiting to /login and keep the tests green.
Read src/server/auth.ts
Edited src/server/rateLimit.ts+48−2
The limiter is in: 5 attempts a minute per IP and email. Running the auth tests to make sure nothing broke.
Run this command?
npm test -- auth
Ask for follow-up changes
PlanAuto
Forks

Fork any turn.
Try both ideas at once.

Fork the whole conversation, fork from any earlier turn, or select a passage and fork with it quoted. Put a fork in its own git worktree and parallel experiments never touch each other's files.

  • Ctrl Shift F forks the thread you're in.
  • Fork from here on any turn, or right-click a selection and Fork with selection.
  • Forks nest as folders in the sidebar, holding the original and its forks. A fork of a fork nests again.
  • Fork links connect threads on the canvas. Click one to frame both; right-click to compare them side by side.
Rate-limit the login endpoint api Codex
Add rate limiting to /login and keep the tests green.
Edited src/server/rateLimit.ts+48
Two ways to store the counters: in memory, or Redis so every instance shares the same limits. I went with memory for now.
Fork from here Copy
Ran npm test -- auth
All 42 auth tests pass. The limiter returns 429 with a Retry-After header once you're over.
api
Rate-limit the login endpoint
Rate-limit the login endpoint
Try a Redis storeworktree
Postgres instead?
Add passkeys
Tidy the error types
Agents

Two agents.
One way of working.

Codex and Claude Code get the same transcript, approvals, questions, Plan mode, forks, inbox and usage meters. A new thread's model menu lists both, so picking a model picks the agent.

Codexcodex app-server
The official engine, unchanged
Ret drives codex app-server, the same JSON-RPC engine the Codex IDE extension uses. Models, tools, sandboxing, MCP servers and your ~/.codex/config.toml behave exactly as they do in the CLI.
Your ChatGPT sign-in
Ret uses Codex's own login, so if the CLI is signed in, so is Ret. Plan limits show in the sidebar.
Updates itself, safely
Ret checks npm for new releases, verifies each against the registry's sha512, smoke-tests it, and swaps it in only when no thread is running. The previous version stays for rollback.
Or share the desktop app's engine
Attach to the background Codex daemon the Codex desktop app uses, and threads you run there stream live into Ret too.
Claude CodeAgent SDK · your claude
Your install, run unmodified
Ret finds the claude you installed (native installer, Homebrew, npm or bun) and runs it through Anthropic's Agent SDK. Your settings, CLAUDE.md files, hooks, skills and MCP servers apply as in the terminal.
Sign-in stays with Claude Code
Sign in happens in Claude Code itself. Ret never reads or stores your credentials. The 5-hour and 7-day limits sit next to Codex's.
Kept up to date
When a new version is out and no Claude thread is running, Ret runs Claude Code's own claude update.
Same threads as the CLI
Every Claude Code session on your machine shows up in its project, and threads Ret starts are ordinary sessions: claude --resume picks them up.
Both get
  • Transcript
  • Approvals
  • Questions
  • Plan mode
  • Forks & worktrees
  • Inbox
  • Usage meters
  • Threads from other apps
The details

Built for keeping ten things moving.

Enter
Steer
CtrlEnter
Queue
Esc
Stop

Steer, queue or stop a running turn

Enter steers the turn in flight. Ctrl Enter queues your message for after it, in a tray where you can push it in now, pull it back to edit, or drop it. Esc stops.

Plan
  1. Add a limiter middleware
  2. Back it with Redis
  3. Cover it with tests
Implement this plan

Plan mode

Shift Tab and the agent thinks it through first, asks what it needs, then proposes a plan you can implement with one click.

Bump the SDKCodex CLI
Fix the flaky e2eVS Code
Profile cold startclaude, done

Sees work running elsewhere

Threads from the agents' CLIs, VS Code extensions and desktop apps show up too, update live, and notify you when they finish.

Point at the rail

A turn rail for long threads

Hover the edge of a transcript for a rail of its turns. Ticks spread out around the pointer so they stay easy to hit. Try it above.

A sidebar that reads your intent

Unpinned, it reads your pointer's motion: a quick throw toward the edge opens it before you arrive, while aiming at a button near the edge doesn't.

Codex · 7-day38%
Claude Code · 5-hour71%
Claude Code · 7-day24%

Usage at a glance

Plan limits for both agents slide up from the sidebar. One that's nearly used up shows even when you don't look.

Glance
Compact
Regular
Wide

Windows that fit their size

Every thread adapts to its own size, not the screen's: a tiny window shows status, the last message and any approval buttons; a wide one can add a details panel with the plan, changed files, tokens and lineage.

Batched per frame

Streaming events land once per animation frame in a copy-on-write store, and each transcript item re-renders only itself.

Off-screen is free

Turns you can't see skip layout, so a long thread costs what's on screen.

A canvas that glides

Pan, zoom and drag write straight to the DOM. None of them trigger a React render.

Idle threads let go

Threads nobody is looking at unsubscribe from the engine after three minutes.

Keyboard

Your hands can stay put.

Command palette: threads, projects, commandsCtrlK
New thread in this projectCtrlN
Focus, Canvas, Code, InboxAlt1…4
Fork this threadCtrlShiftF
Pin or unpin the sidebarCtrlB
Toggle Plan modeShiftTab
Steer a running turn, or queue for after itEnterCtrlEnter
Stop the running turnEsc
Inbox: move, mark donejke
Canvas: fit all, zoomCtrl0Ctrl±
The tour

A minute with Ret.

FAQ

Questions, answered.

Do I need an account for Ret?

No. Ret uses each agent's own sign-in. For Codex that's Codex's login (if the CLI is signed in, Ret is too), or you can sign in with ChatGPT from Ret. For Claude Code, sign-in happens in Claude Code itself, and Ret never reads or stores those credentials.

Do I have to install Codex first?

No. Ret downloads its own copy of Codex, verifies it, and keeps it current. On first launch it starts right away on any Codex you already have, then switches over once its own copy is ready. You can point it at a system install or a custom path in Settings instead.

And Claude Code?

Install Claude Code the usual way (native installer, Homebrew, npm or bun). Ret finds it and runs it unmodified; it never downloads or bundles Claude Code. If you'd rather use just one agent, turn the other off in Settings → Agents.

Will my existing setup carry over?

Yes. Your ~/.codex/config.toml, models, sandboxing and MCP servers apply to Codex exactly as in the CLI. Your Claude Code settings, CLAUDE.md files, hooks, skills and MCP servers apply as they do in the terminal.

Can I keep using the CLIs and editors?

Yes. Threads from the agents' CLIs, VS Code extensions and desktop apps show up in Ret's sidebar, with live transcripts while they run. Replying from Ret waits until another app's turn ends, so two processes never write to one thread. Claude threads Ret starts resume with claude --resume.

Which platforms does it run on?

Windows (x64) and macOS (Apple Silicon and Intel; signed and notarized). On Linux you can build it from source; see the README on GitHub.

Can I use it from my phone?

Yes, in beta: Ret for iPhone is on TestFlight. Pair it with Ret on your computer (Settings → Remote access → Pair a device) to follow its threads, answer approvals and questions, and start new threads, with a notification when a turn finishes or an agent needs you. The agents keep running on the computer; the phone runs none.

How do updates work?

Ret checks for a new version every few hours, downloads it in the background, and asks before restarting into it. Choose Later and it installs the next time you quit.

Is Ret made by OpenAI or Anthropic?

No. Ret is an independent project. Codex and Claude Code are products of OpenAI and Anthropic; Ret runs the official versions you sign in to.

Get Ret.

Bring your Codex and Claude Code sign-ins. Ret keeps itself and Codex up to date from here on.

Latest release · All releases · Build from source
The macOS builds are signed and notarized. Windows may show a SmartScreen prompt for a new app; choose More info → Run anyway.