Manage parallel coding sessions

from anywhere, on any machine

Manage agents, worktrees, ports, processes, windows, and remote machines.

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

Client
macOS
iOS
Daemon
macOS
Linux
Price
Mac: Free
iOS: $29.99/year
The Spaces app showing workspaces, terminals, editors, and live agent status side by side

Your workflow, minus the friction

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.

  • Agents

    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.

  • Worktrees

    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.

  • Ports & processes

    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.

  • Windows & focus

    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.

  • Remote machines

    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.

    See how it works
  • Mac & iPhone

    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.

    See both clients

One workspace per task. Open, switch, and close as a unit.

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.

  1. 01

    Project

    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.

  2. 02

    Workspace

    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.

  3. 03

    Runtime

    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

spaces
main
  • ⌘1web
  • ⌘2npm:dev
  • ⌘3codex
schema-cleanup
website-updates

Know which agent needs you, and jump straight to it

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.

Alerts
  • ⌘1

    auth-refactorclaude-fable

  • ⌘2

    billing-webhookscodex

  • ⌘3

    search-reindexopencode

  • ⌘4

    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.

Works withClaude CodeCodexopencode

Connect to all machines from one Mac

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

One sidebar · every machine

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.

Coordinate all work via one orchestrator agent

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

One orchestrator runs the fleet of agents across all machines

Cross-harness · cross-model · cross-device

The right agent for every piece of work.

  • Mix harnesses. Claude Code, Codex, and opencode — any of them can lead, any can be a child.
  • Mix models. Each agent runs whatever model its harness supports, so you pick the right brain for each job.
  • Mix machines. Children run wherever you have them — a cloud Linux box does the heavy lifting while you drive from your Mac.

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 guide

Coming soon

Remote control from your iPhone

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
The Spaces iOS app listing live sessions per workspace — browser tabs, terminals, and a running agent — with restart, stop, and new-terminal controls
A live coding-agent terminal session open in the Spaces iOS app, with a terminal key row for typing into the same shell

One localhost, one cookie jar, endless conflicts. Solved.

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

  • Port conflicts

    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.

  • Shared cookie sessions

    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

  • One hostname per workspace

    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.

  • Isolated sessions by design

    Different hostnames mean different cookie jars and local storage. Stay logged into three branches at once, side by side, with no incognito tabs.

Built for the keyboard

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

Features

  1. 01

    Track agents across workspaces

    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.

  2. 02

    Manage Git worktrees or separate clones

    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.

  3. 03

    Organize work into logical workspaces

    Every feature, branch, or experiment becomes a workspace with its own terminals, tabs, editors, and agents. Switch between them instantly.

  4. 04

    Stable per-workspace URLs

    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.

  5. 05

    Run on remote machines

    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.

  6. 06

    Sessions that outlive your laptop

    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.

  7. 07

    Automations

    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.

  8. 08

    Jump to any workspace

    A global command palette pulls up any window instantly — choose a window and it snaps into focus right where you left it.

  9. 09

    Cycle windows within a workspace

    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.

  10. 10

    Workspace notes

    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.

  11. 11

    Take any session to your iPhone

    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.

  12. 12

    Launch and teardown on demand

    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.

  13. 13

    Native macOS app, not Electron

    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.

  14. 14

    Terminals built on libghostty

    Terminal sessions are powered by libghostty, the engine behind the Ghostty terminal — fast, GPU-accelerated rendering that keeps up with the heaviest output.

FAQ

Common questions about setup, tools, and the app. Still stuck? Email us.

How much does it cost?
Spaces is free on Mac and Linux. The iOS companion app is $29.99/year, with a 7-day free trial.
What are the system requirements?
  • macOS 14 Sonoma or later
  • Google Chrome, used for browser sessions
Can I use it with CLI coding agents like Claude Code, Codex, or opencode?
Yes. Open a terminal inside any workspace with ⌘⌥T and start your agent as normal. The terminal window is automatically attached to the workspace so you can jump back to it with keyboard shortcuts at any time. To let the agent set workspace notes and signal its status, add the Spaces agent instructions to your project's AGENTS.md. See the cookbook guides for step-by-step setup.
Can I use it with a Mac Mini or cloud VM?
Yes. Pair another Mac or a Ubuntu box — including a cloud VM — over SSH with pinned TLS. Each machine runs its own daemon and shows up as its own section in the sidebar, so you manage its projects, workspaces, terminals, and agents from the Mac in front of you. Because sessions run on the daemon, a remote build or agent keeps running after you disconnect or close your laptop — reattach later from your Mac or your phone. See the CLI docs for pairing.
I only work on one project at a time. Will Spaces help me?
You will still benefit from the the ability to manage agents, processes, and windows, and to control them from your Mac or iPhone.
Is there a mobile app?
Coming soon! The Spaces iOS app is a full client in its own right, not a remote for the desktop app. Your Mac's Devices settings shows a pairing QR code for any machine it's connected to — itself, or a Linux box — and scanning one pairs your phone with that machine directly. From then on the phone talks to it on its own: browse its live terminal sessions, watch a coding agent's output, or start new sessions, with no Mac in the path. See the iOS app docs.
Do you collect any data?
No. Spaces runs entirely on your devices and does not send your data to Spaces or any third party. Pairing connects only to your own devices — your iPhone or another machine you control.
Where do I send bug reports?

Run it on your Mac

Native macOS, signed DMG, in-app updates via Sparkle. Free and open source.