← All posts

Managing 4+ Codex / Claude Code sessions without losing track

Tab one is Claude, halfway through an auth refactor. Tab two is Codex, writing tests for something you merged yesterday. Tab three was a quick bug fix an hour ago, and you're not sure it ever finished. Tab four you opened to ask a question, and you can't remember which one.

Somewhere around the fourth session you stop managing agents and start managing tabs. The agents are fine. Your memory has become the bottleneck, and every minute you spend working out which one needs you is a minute none of them are moving.

The fix isn't a better terminal layout. It's moving the bookkeeping out of your head and into something that keeps the list for you.

One piece of work, one workspace. In Frontier every session belongs to a workspace: a named container for one piece of work, with its own git worktree on its own branch. That gets you two things at once. Four sessions against the same repository never edit the same files, because each has its own checkout. And every session has a name that says what it's for, not "zsh — 4". Name workspaces after the outcome you want (`fix-login-redirect`, `billing-tests`) and the list starts to read like a to-do list.

Keep your terminals if you like them. You don't have to move into the app to get this. Claude Code and Codex CLI both support Frontier's session hooks, so a `claude` or `codex` session started inside a workspace's worktree syncs into that workspace's thread. It shows in progress while it runs, and when it stops, the workspace lights up as unread. Setup is one pass through Quick Setup in Settings → Connectors, plus one `/hooks` approval inside Codex the first time. You can also run sessions from the app itself, with each workspace on whichever CLI suits it.

Let unread be the queue. Once every session reports into a workspace, the workspaces list is the answer to "who needs me?" A workspace with something new is marked unread. Each row shows its Agent's state at a glance, and threads you have open update on their own when a message arrives from somewhere else. The Status Report panel gathers new messages from every workspace into one list, so you can work down it instead of cycling through windows. When you've caught up, one "mark all as read" clears the slate. The loop becomes simple: pick the top unread item, answer it, move on. Sessions that don't need you stay out of your way.

Make the list easy to scan. Pin the handful you're actively steering, and give related pins the same icon and color so a family of workspaces reads as one group. Nest smaller pieces under a parent as phases of a bigger effort, and they show indented beneath it. If you keep client work and personal projects apart, each context can have its own color. And when you just need to find something, double-tap Shift for global search across workspaces, repositories and file contents.

See what's actually running. The running-agents panel streams the newest run's reply and tool calls live, so you can watch a background session without opening its thread. Any run in progress can be stopped from the ✕ on its status pill. The System Status readout in Settings tells you whether the background loops themselves are running, which settles "is it working or is it stuck?" in one look.

Review four streams of work without four headaches. Every thread shows its changes inline as a diff, right where the conversation happened. Each workspace's History tab shows everything that changed on its branch since it started, across every repository attached to it. You review one workspace at a time, one diff at a time, and merge them one after another, instead of reading four agents' edits tangled together in a single folder.

When four becomes ten. At some point the sessions stop being four independent things and start being a backlog. That's when it's worth letting an Agent do the sequencing: a roadmap workspace with a Conductor that carries each item through build and review and opens the next one when the last is merged. How to work on 10 things at once (or more) walks through that setup. For ideas that don't depend on each other at all, run them side by side, each in its own workspace. And if some of those sessions are on Codex because Claude ran out of allowance mid-week, here's how to split the work deliberately.

What changes isn't how many sessions you can run. It's how many you can keep in your head, which, once the list is keeping them for you, is none.

Q: How do I keep track of multiple Claude Code or Codex sessions at once? A: Give each piece of work its own Frontier workspace. Each gets its own worktree and branch, sessions sync into that workspace's thread, and the workspaces list and Status Report panel show which ones have something new for you.

Q: Can I keep using Claude Code and Codex in the terminal and still see them in Frontier? A: Yes. After Quick Setup installs the session hooks, a `claude` or `codex` session started inside a workspace's worktree syncs into that workspace's thread, live while it runs and marked unread when it stops. Codex needs its hooks approved once with `/hooks`.

Q: Won't several agents on the same repo overwrite each other's changes? A: Not across workspaces. Each workspace checks out its own git worktree on its own branch, so sessions in different workspaces never edit the same files until you merge them.

Q: How do I stop one runaway session without killing the others? A: Use the ✕ on that run's status pill. It stops that run only, and every other workspace keeps going.

Want to see a multi-session setup already wired up? Browse the example setups, each one installable in a click, or download Frontier and move your four terminals into four workspaces this afternoon.