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 an isolated git worktree — or a separate clone — 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 within a workspace, hide the rest, 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 — every device in its own sidebar section, 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. Launching it starts every process and tracks every window. Stopping it shuts everything down. Reopening restores the state.
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 and open the browser URLs for a workspace. Spaces manages the windows and monitors coding agents. Jump to any window — or cycle through the current workspace — 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 from anywhere to open Alerts. Blocked agents clear the moment they move again; finished agents stay until you review 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 with pinned TLS. Each machine runs its own spacesd 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 daemon, not on your SSH connection. Kick off a build or an agent on a remote box, close your laptop, and it keeps running — then 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 guideComing soon
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 daemon 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.
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 Caddy 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 Caddy 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 just that workspace's windows 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. Every shortcut is 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.
Spin up isolated workspaces for every branch using Git worktrees — so parallel feature work never collides. Not a worktrees person? Spaces works with separate clones just as well.
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 with pinned TLS. 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 daemon, 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 any 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.
When you are working in a workspace, cycle through windows of only that workspace with keyboard shortcuts so your focus isn't interrupted by other workspaces.
Coding agents can write context (what's pending, what broke, where they left off) into a per-workspace notes field, surfaced inline in the workspace detail pane.
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.
Close a workspace and Spaces shuts down its processes and closes its windows. Come back tomorrow, open it, and everything restarts exactly as it was.
Built with Swift and AppKit. The interface stays fast and stays out of your way — no web runtime, no sluggish UI, no fan spinning up just to show you a window list.
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? Email us.