New Drive your desktop from anywhere

Give your agents somewhere to work.

CodeFlows is a desktop workspace for coding agents. Run Claude Code, Codex, Grok, Gemini and Kimi side by side, with the terminals, git, files and browser they need — in tabs you already know how to use.

Also on Windows and Linux

CodeFlowsorbit-web
Projects
Welcome to Claude Code
/help for help, /status for your current setup
cwd: ~/code/orbit-web
>
Try it — this terminal works ⏵⏵ accept edits on claude-opus-5 · 68% context left

A real window. Pick a folder, switch tabs, or type a prompt.

Run five agents at once. Or five sessions of one.

Every agent gets a real terminal — the same TUI you'd get in your shell, with its own model, permission mode and account. No wrapper and no reimplementation: what the CLI prints is what you see.

Claude CodeWorking
Welcome to Claude Code
 
> fix the total flicker
Read(CartSummary.tsx)
⎿ 1,802 lines
Update(useMemo)
+7 −2
Verifying…
opus-568%
CodexWorking
OpenAI Codex · v0.52
 
> retry the relay
thinking
exec npm test relay
✓ 24 passed
apply_patch relay.ts
+31 −4
gpt-5.2-codexxhigh
GrokIdle
grok-cli · session 4f2a
 
> price the plans
read pricing/v5.json
write PricingTable.tsx
✓ written
 
Done in 41s
grok-4-fast
GeminiWorking
Gemini CLI
 
> audit the a11y
ReadManyFiles
⎿ 38 components
! 4 missing labels
Edit Sidebar.tsx
gemini-3-pro1M ctx
KimiIdle
Kimi CLI · Moonshot
 
> summarise the diff
git diff --stat
⎿ 12 files, +284 −96
 
Three themes: tab
chrome, relay, pricing.
kimi-k2
  • Your own accounts

    Each session picks its account, model, effort and permission mode. Switch mid-session without losing the thread.

  • Sessions survive

    Close the window and come back. Sessions resume by id, with the scrollback and the context they had.

  • A live dot means live

    The green dot on a tab is the process, not a guess. You can see which agents are still thinking from across the room.


New — CodeFlows Remote

Your desktop, wherever you are.

Open CodeFlows Remote in any browser, sign in with your +Ai account, and every machine you're running it on is there waiting. Pick one and you have the same workspace — the same projects, tabs and running sessions. Nothing runs on the device in your hand: every keystroke travels over an encrypted relay to the desktop, which does the work and streams it back.

  • Sign in with +Ai
  • Encrypted relay
  • No ports to open
CodeFlows Controlled from Remote
Relay Reconnect
Git
zsh
Welcome to Claude Code
cwd: ~/code/orbit-web
> the relay drops after sleep — reconnect with backoff
 
Read(src/net/socket.ts)
⎿ Read 524 lines
Update(src/net/socket.ts)
⎿ Updated with 31 additions and 4 removals
Bash(npm run test -- relay)
✓ 24 passed in 0.91s
 
Reconnect now backs off 1s → 30s and re-auths on wake.
The socket re-authenticates before it replays anything.
? for shortcutsclaude-opus-5 · 74% context left
16:20
Studio Mac
Relay Reconnect
Welcome to Claude Code
cwd: ~/…/orbit-web
> the relay drops after
sleep — reconnect with
backoff
 
Read(relay.ts)
⎿ Read 524 lines
Update(relay.ts)
+31 −4
 
Reconnect now backs
off 1s → 30s and
re-auths on wake.
>
opus-574% left
  • Every desktop, one sign-in

    The laptop at home, the workstation at the office — each one running CodeFlows shows up in the list. No codes to copy, nothing to set up on the phone.

  • The work stays on your machine

    Your code, your keys and your agent sessions never leave the desktop. The phone is a window onto it.

  • Reply to an agent from anywhere

    A session stops for a permission prompt while you're out. Answer it from the bus and the run carries on.


Review the diff where the change happened.

Changes, history, branches and stash live in a tab beside the agent that wrote the code. Read the hunk, stage it, write the message, commit — without switching apps or losing your place.

CodeFlows
Tab Strip Fillets
Git
CartSummary.tsx
main ↑2 ↓0
Changes 7 History Stash
MCartSummary.tsxsrc/checkout
MQuantityStepper.tsxsrc/checkout
Mcheckout.csssrc/styles
ACartSummary.test.tsxsrc/checkout
Atotals.tssrc/checkout
MuseCart.tssrc/hooks
DCartTotalEffect.tsxsrc/checkout
Derive Cart Total
The total is computed during render instead of in an effect, so it never paints a stale frame.
Commit 7 Files Commit & Push
src/checkout/CartSummary.tsx +7 −2
@@ -18,11 +18,16 @@ export function CartSummary({ radius, side }: Props) {
18 const r = Math.max(0, radius)
19 const w = r + EDGE_BLEED
20
21- // Fillet used a fixed 12px arc regardless of the tab's radius.
22- const d = `M0 ${w} A 12 12 0 0 0 12 0 L ${w} 0 Z`
21+ // Inherit the tab's own radius — a fixed arc left a 1px step
22+ // where the curve met the panel edge on non-integer DPRs.
23+ const d = `M0 ${w} A ${r} ${r} 0 0 0 ${r} 0 L ${w} 0 Z`
24+
25+ // Painted 18px outside the viewport; the strip's edge fade
26+ // overlaps it by a pixel, so nothing ever shows a hard seam.
27+ const bleed = side === 'left' ? -EDGE_BLEED : EDGE_BLEED
28
29 return (
30 <svg width={w} height={w} data-edge-cap={side} aria-hidden>
31 <path d={d} fill="currentColor" />
32 </svg>
33 )
34 }

Two panes. Drag the seam.

Put any two tabs side by side — an agent and the diff it's producing, a terminal and the browser previewing it. Grab the divider and give the room to whichever one needs it.

CodeFlows
Split · Claude + CartSummary.tsx
Git
localhost:5173
Welcome to Claude Code
/help for help, /status for your current setup
> make the fillet inherit the tab radius
 
Update(CartSummary.tsx)
⎿ Updated with 7 additions and 2 removals
Bash(npm run test -- CartSummary)
✓ 11 passed in 1.4s
 
The arc now matches the tab at every DPR. The step you
were seeing on the 1.5× display is gone.
>
? for shortcutsclaude-opus-5 · 61% context left
checkout
CartSummary.tsx
QuantityStepper.tsx
totals.ts
promoCode.ts
useCart.ts
account
search
17export function CartSummary({ items }: Props) {
18 const { currency } = useCart()
19
20 // Derived during render, not in an effect — an effect
21 // paints one frame with the previous total first.
22 const total = useMemo(
23 () => items.reduce((n, i) => n + i.price * i.qty, 0), [items])
24
25 return (
26 <svg width={w} height={w} data-edge-cap={side} aria-hidden>
27 <path d={d} fill="currentColor" />
28 </svg>
29 )
30}

MCPs, skills and commands, installed in one click.

Browse the registry without leaving the app. Install to one project or everywhere, see what's already there, and hand over API keys once — CodeFlows keeps them and wires the server up for every agent that can use it.

CodeFlows
Tab Strip Fillets
Marketplace
Browse
MCPs
Skills
Commands
Library
Installed 18
Create

MCPs

Model Context Protocol servers your agents can call.

Search servers
Supabase MCPQuery tables, run migrations, read logsInstalled
Playwright MCPDrive a real browser, snapshot the DOMInstall
Figma MCPRead designs, push components backInstalled
AiTables MCPRead and write workspace databasesInstall
GitHub MCPIssues, pull requests, reviewsInstall
Context7 MCPUp-to-date docs for any libraryInstalled
Systematic Debugging SKILLHypothesis-first bug workflowInstall
/code-review CMDReview the branch before you pushInstalled

Everything else is just a tab.

A shell, a browser to check the preview, a scratchpad, an HTTP client, a webhook inspector — whatever the work needs, opened beside the agent doing it. Press ⌘T and pick one.

Agents

Claude CodeStart a new session
CodexStart an OpenAI Codex session
GrokStart an xAI Grok session
GeminiStart a Google Gemini session
KimiStart a Moonshot Kimi session

Tools

TerminalOpen a shell in this project
NoteQuick markdown scratchpad
BrowserOpen a browser tab — handy for previews
GitStatus, diffs, branches, commits
File ExplorerBrowse and edit project files
HTTP RequestPostman-style request builder
WebhookReceive and inspect incoming webhooks

Open a project. Start an agent.

Bring your own agent accounts. Nothing is proxied through us.

Sign in with +Ai to download the desktop app.