Parallel branches actually run in isolation. No port juggling, no .env copying, no shared-login bleed

Run a few coding sessions at once and the moving parts multiply: worktrees, agents, processes, ports, windows. Spaces makes each of those a thing you manage, not a thing you chase.
Claude Code, Codex, and opencode each report working, blocked, or done. Alerts shows which one needs you next; jump to its terminal with a shortcut.
Every feature, branch, or experiment gets its own git worktree on its own branch, with its own directory, env, ports, and processes. Parallel work never collides.
Name your services and each workspace gets its own port and a stable URL like web.my-branch.localhost:7391. Dev servers and workers run as tracked processes that restart on demand.
Spaces tracks every window a workspace opens and jumps you back with a keystroke. Cycle through one workspace, your alerts, or your agents, and keep your attention on one task at a time.
Pair a remote Mac or a cloud Linux box and drive them all from one Mac. Each device gets its own sidebar section, with its projects and sessions in reach.
Two full clients, not an app and an accessory. Each one pairs straight to the machines it drives: your iPhone talks directly to a Mac or a cloud Linux box, with nothing in the middle to leave running.
A workspace is one feature, branch, or experiment with its own directory, named services on stable URLs, processes, browser sessions, and coding-agent terminals. Starting it launches every configured process and tracks every window. Stopping it shuts everything down. Starting it again brings the configured processes back.
Point Spaces at a repo on your Mac or a remote machine. Define your setup script, named services, browser URLs, and the processes you run. Do this once.
Create a workspace for each feature, branch, or experiment. Each one gets its own directory, services, stable per-workspace URLs, env, and processes, isolated from the rest. Create as many as you need.
With one click, start every process for a workspace; its browser sessions open when you focus them. Spaces manages the windows and monitors coding agents. Jump to any window, or cycle through a workspace, your alerts, or your agents, with keyboard shortcuts.
Projects
Run Claude Code, Codex, and opencode across a dozen workspaces and it's easy to lose track of who's waiting. Each agent reports working, blocked, or done. Alerts gathers the ones that need you into a single list, so you see what's stuck or finished at a glance and jump to its terminal or workspace with a keystroke.
auth-refactorclaude-fable
billing-webhookscodex
search-reindexopencode
landing-copyclaude-sonnet
One list, every agent
Open Alerts, jump to whoever needs you.
Press ⌘⌥A in Spaces to open Alerts. Blocked agents clear the moment they move again, and finished agents stay until you dismiss them, so the list is always exactly what needs your attention. Select one to focus its terminal, or jump to its workspace to see everything around it.
Pair another Mac or a cloud Linux box over SSH. Each machine runs the Spaces service and appears as its own section in the sidebar: projects, workspaces, terminals, and agents, all reachable from the Mac in front of you.
Spaces Client (Mac)
Local Mac
Remote Mac
Cloud Linux
Sessions outlive your laptop
Like tmux, for everything a session runs.
Terminals and coding agents run on the Spaces service on that machine, not on your SSH connection. Kick off a build or an agent on a remote box, close your laptop, and it keeps running. Reattach later from your Mac or your phone, right where it left off.
Use the Spaces MCP to put a single agent in front of everything you have going: a fix in this repo, a feature on that branch, an experiment on the Linux box. Subagents can use any harness or model so you get the right tool for the job. Just prompt it to teach your workflow.
No more juggling between agent sessions!
You
prompts ↓ · results ↑
Orchestrator agent
MacBook
claudeopus
Redesign settings UI
opencode
Research auth libraries
Linux box
codexgpt-5.6-sol
Refactor sync backend
Cross-harness · cross-model · cross-device
The right agent for every piece of work.
Every child is a real terminal in the app. Alerts surface whoever needs you, and one shortcut jumps you to any agent's pane.
Read the orchestration guideTestFlight beta
Pair the Spaces iOS app with a QR code and it talks to that machine directly: your Mac, or a cloud Linux box. Browse live terminal sessions across your workspaces, watch an agent that's working or waiting, type into the same shell, and run or restart processes.
Nothing routes through the desktop app. Sessions live in the Spaces service on the machine that owns them, so your phone reaches them whether the Mac app is open, closed, or crashed, and reaches a Linux box even while your Mac is asleep.
The app is in an invite-only TestFlight beta. Ask for an invite.
Read the iOS docs

Three worktrees, one localhost: the ports collide, and since browsers scope cookies to hostname (not port), logging into one logs you into all three. Spaces routes each workspace through its own hostname, so every branch gets its own port and its own cookie jar.
Plain localhost
Every checkout of the same app wants port 3000. You end up hand-assigning ports per branch, editing .env files, and restarting servers just to run two at once.
Cookies aren't scoped by port, so localhost:3000 and localhost:3001 can share cookie-based sessions. Log in on one, and the other can pick up the same session.
Spaces with a Reverse Proxy
Declare a named service once and every workspace reaches it at a stable URL like web.my-branch.localhost:7391, routed by a bundled reverse proxy, no manual port assignment, ever.
Different hostnames mean different cookie jars and local storage. Stay logged into three branches at once, side by side, with no incognito tabs.
Context switching is a keystroke, not a window hunt. Focus any session (browser or terminal) in the active workspace, cycle through one workspace, your alerts, or your agents to stay in flow, or jump to any window of any workspace from the global command palette, all without lifting your hands off the keyboard. Spaces' own shortcuts are configurable.
⌘1–0focus⌘⌥]cycle⌘⌥-command palette
Every coding agent reports its state (working, waiting on you, or done) in one Alerts view. See at a glance which ones need input next, and jump to any of them with a keyboard shortcut.
Every workspace in a Git project is a git worktree on its own branch, sharing the project's one clone, so parallel feature work never collides. Every device also has a home workspace, `~`, for terminals that belong to no project.
Every feature, branch, or experiment becomes a workspace with its own terminals, tabs, editors, and agents. Switch between them instantly.
Declare named services and reach each one at a stable, predictable URL like http://web.my-branch.localhost:7391, served by a bundled reverse proxy. Run three instances of your app side by side, isolated, no port conflicts, no `.env` edits.
Pair a remote Mac or a cloud Linux box over SSH. Manage its projects, workspaces, terminals, and agents from the Mac in front of you, each device in its own sidebar section.
Terminals and agents run on the Spaces service on that machine, not your SSH connection. Kick off a build on a remote box, close your laptop, and it keeps running. Reattach later exactly where it left off.
Run a shell command on your Mac or a paired device manually or on a schedule, even while Spaces is closed. Watch a run live, replay it later, or have it spawn a coding agent that keeps working after the run finishes.
A global command palette pulls up any window instantly: choose a window and it snaps into focus right where you left it.
Step through one workspace's windows, your alerts, every agent, or every open session with one pair of shortcuts, and switch what you cycle through with another.
A coding agent can keep a short brief beside its terminal: what it is doing, questions for you, and its task list. Read it on your Mac or iPhone without scrolling back through the transcript.
The iOS app is a full client, not a remote for your Mac. It pairs directly with any device running Spaces (your Mac, or a cloud Linux box with no Mac involved), so you can pick up the same live session, watch a build, check a coding agent, or send a command, then step back to your desk without losing your place.
Stop a workspace and Spaces shuts down its processes and closes its terminals and browser tabs. Start it again and its configured processes come back; browser sessions reopen when you focus them.
Built with Swift and AppKit, not Electron, so the interface stays fast and out of your way.
Terminal sessions are powered by libghostty, the engine behind the Ghostty terminal: fast, GPU-accelerated rendering that keeps up with the heaviest output.
Common questions about setup, tools, and the app. Still stuck? Open an issue on GitHub.