Global Workspace: one view for all your agents
When you run agents across multiple repos, you lose track of who's doing what. Global Workspace pulls the terminals that matter into a single split-pane view — without moving them.
The problem
TUICommander already had the Activity Dashboard — a bird's-eye view of every terminal session across every repo. It shows agent names, statuses and last activity timestamps. It's great for monitoring. But monitoring isn't working.
When an agent in repo A needs input, you click its row in the dashboard, and the whole UI switches to repo A — the sidebar, the git panel, the pane layout. You answer the question, and now you need to check on the agent in repo B. Click. Everything switches again. Three repos, five agents, and you're spending more time navigating between repos than actually interacting with the agents.
The root issue: TUICommander's UI is repo-scoped. One repo at a time. That's the right default — you want your git panel, diff stats and branch list to reflect what you're working on. But when you're orchestrating agents across repos, the repo boundary becomes a wall.
Promote, don't move
The key insight behind Global Workspace is that terminals don't need to move. They stay exactly where they are — same repo, same branch, same PTY session. You just promote them into a cross-repo view.
A small globe icon appears on each terminal's pane tab. Click it, and the terminal is promoted to the Global Workspace. Click it again, unpromoted. The terminal doesn't move, restart, or lose state. It's still alive in its repo. The Global Workspace is a projection — a curated view of the terminals you care about right now.
This matters because the alternative — actually detaching a terminal from its repo and re-attaching elsewhere — would break the repo-scoped model that everything else depends on. Branch switching, layout save/restore, the git panel, terminal-to-repo mapping: all of that assumes terminals belong to a repo. Promotion sidesteps all of it.
A layout that already existed
TUICommander already saves and restores pane layouts every time you switch branches. The layout tree is serialised, stashed in a Map keyed by repo+branch, and restored when you switch back. This mechanism has been running reliably for months with split panes, tab groups and nested splits.
Global Workspace reuses the exact same mechanism. When you activate the Global Workspace, the current repo layout is saved. The global layout is restored into the pane system. When you deactivate, the reverse happens. No new layout engine, no new serialisation format, no new state machine. The same code that handles branch switching handles workspace switching.
This is the part we're most satisfied with. The entire workspace-switch logic — save current, restore target, swap back on deactivate — is the same code path that already handles thousands of branch switches a day. The Global Workspace just adds one more entry to the layout Map.
Close means unpromote, not kill
This is a deliberate design choice that deserves its own section. In a normal repo view, closing a pane can kill the terminal (if it's the last tab in the group). In the Global Workspace, closing a pane only unpromotes the terminal. The PTY keeps running. The agent keeps working. You just removed it from the global view.
Why? Because accidentally killing an agent that's been working on a complex refactor for 20 minutes is catastrophic. In a cross-repo aggregation view, the close gesture needs to be safe by default. You can still kill the terminal explicitly — right-click, close terminal — but the default action is gentle.
Repo identity in every tab
When you're looking at four terminals from three different repos, you need to know which is which. In Global Workspace, each pane tab shows a coloured dot and the repo name before the terminal name. The colour matches the repo's group colour from the sidebar — the same visual language you already use to tell repos apart.
Small detail, but it eliminates the "wait, which repo is this agent working on?" moment that would otherwise happen constantly in a cross-repo view.
How it fits together
The sidebar shows a globe entry at the bottom of the repo list — visible only when you have promoted terminals. It shows a badge with the count. Click it to switch to the Global Workspace. Click a repo in the sidebar (or use Cmd+Shift+G) to switch back. Your repo layout is restored exactly as you left it.
Branch switching works too. If you switch branches while in the Global Workspace, it auto-deactivates the workspace, switches the branch, and you're back in repo mode. The global layout is preserved — activate the workspace again and your arrangement is waiting.
When the last promoted terminal is closed, the workspace auto-deactivates. No empty view lingering around.
What this enables
The workflow we wanted: launch agents across repos, promote the ones you want to keep an eye on, activate the Global Workspace, and work. All your important agents in one split-pane view with full interaction. No sidebar switching, no layout thrashing, no losing track of what's running where. When you need to do repo-specific work — check a diff, browse files, review a PR — click the repo in the sidebar and you're back in repo mode with everything exactly where you left it.
It's a small feature in terms of new code. The global workspace store, a sidebar entry, a promote toggle, and a handful of integration points. But it changes how you work with parallel agents across repos — from constant context switching to a single curated view.