New Drive your desktop from your phone

Give your agents somewhere to work.

CodeFlows is a desktop workspace for coding agents. Run Claude, 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

CodeFlows
Projects
addai-codeflows
app
electron
mobile
addai-flows
addai-tables
bohsa-crm
Sessions
Tab Strip Fillets
Relay Reconnect
Tab Strip Fillets
Relay Reconnect
Pricing Table
Git
localhost:5173
TabBar.tsx
Welcome to Claude Code
/help for help, /status for your current setup
cwd: ~/Documents/GitHub/+Ai/addai-codeflows
> the active tab's corner should flow into the panel below it — no seam
 
Reading the tab strip…
Read(app/src/components/TabBar.tsx)
⎿ Read 1,802 lines
Read(app/src/components/tabStrip/TabFillets.tsx)
⎿ Read 96 lines
Update(app/src/components/tabStrip/TabFillets.tsx)
⎿ Updated with 7 additions and 2 removals
Bash(npm run test -- TabFillets)
✓ 11 passed in 1.42s
 
The fillet now inherits the tab's own corner radius, so the
curve lands on the panel edge instead of a pixel above it.
Verified at 1×, 1.5× and 2× device pixel ratios.
>
? for shortcuts ⏵⏵ accept edits on claude-opus-5 · 68% context left

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.

ClaudeWorking
Welcome to Claude Code
 
> add the fillet
Read(TabBar.tsx)
⎿ 1,802 lines
Update(Fillets)
+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 — Mobile Companion

Your desktop, in your pocket.

Open CodeFlows in your phone's 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 phone: 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 mobile
Relay Reconnect
Git
zsh
Welcome to Claude Code
cwd: ~/Documents/GitHub/+Ai/addai-codeflows
> the relay drops after sleep — reconnect with backoff
 
Read(electron/main/relay.ts)
⎿ Read 524 lines
Update(electron/main/relay.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: ~/…/addai-codeflows
> 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
TabFillets.tsx
main ↑2 ↓0
Changes 7 History Stash
MTabFillets.tsxapp/src/components/tabStrip
MTabBar.tsxapp/src/components
Mindex.cssapp/src
ATabFillets.test.tsxapp/src/components/tabStrip
AscrollMath.tsapp/src/components/tabStrip
Mrelay.tselectron/main
DTabCorner.tsxapp/src/components
Trim tab chrome
The fillet inherits the tab's corner radius so the curve lands on the panel edge.
Commit 7 Files Commit & Push
app/src/components/tabStrip/TabFillets.tsx +7 −2
@@ -18,11 +18,16 @@ export function TabFillets({ 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 + TabFillets.tsx
Git
localhost:5173
Welcome to Claude Code
/help for help, /status for your current setup
> make the fillet inherit the tab radius
 
Update(TabFillets.tsx)
⎿ Updated with 7 additions and 2 removals
Bash(npm run test -- TabFillets)
✓ 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
tabStrip
TabFillets.tsx
TabScroller.tsx
scrollMath.ts
tabKeyNav.ts
useTabDrag.ts
settings
marketplace
17export function TabFillets({ radius, side }: Props) {
18 const r = Math.max(0, radius)
19 const w = r + EDGE_BLEED
20
21 // Inherit the tab's own radius — a fixed arc left a 1px
22 // step where the curve met the panel edge.
23 const d = `M0 ${w} A ${r} ${r} 0 0 0 ${r} 0 L ${w} 0 Z`
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

ClaudeStart a new Claude Code 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.