A native Mac Code workbench with menu-bar gauges. Windows and Linux desktops that ship their own daemon, so they host sessions locally instead of borrowing someone else's machine. A headless continuum-agent on any box you enroll. A CLI for the terminal, and a VS Code / Cursor extension where you already write. Five front ends, one wire protocol, one account.
São Paulostreaming
63%
Continuum for Mac is a native SwiftUI app: Quiet Black workbench, menu-bar gauges, the full Code surface, and the local daemon that hosts sessions. It's the surface the rest of the product pairs to by default.
The window is three tabs - Code, Usage, Settings - and Code is a three-pane workbench: a sidebar of projects and sessions, the chat thread, and a review pane carrying plan, diff, sources, artifacts, PR, and an in-app browser. Below about 1,100pt the review pane steps aside so the sidebar and thread stay full size rather than all three panes getting squeezed.
Apple Silicon is preferred for the host path. The daemon listens on loopback and on your tailnet, never on a public interface, and every request carries a bearer token. The menu bar keeps rate limits one glance away without opening a window. See Code for the workbench loop and installing Claude Code on Mac for the CLI it drives.
sidebar · thread · review⌘1 Code
63%
58%
Windows and Linux ship as Electron desktops that render the same Continuum dashboard as the web client, plus a system tray for limits and session status. There is no second Windows/Linux UI codebase, so a fix to web is a fix to both desktops on the next build. That is the whole reason parity holds.
They are not thin remotes. Each app bundles the Go daemon as a sidecar, supervises it, and starts it on loopback at launch, so you land in a working "This device" workspace with your own repos on your own disk. Pairing to other machines is an add-on, not the front door. A Windows laptop is a first-class place to run an agent, not a viewer for one running elsewhere.
Sign in with the same account and the same session list appears, including sessions hosted on your Mac or any enrolled device. If you have been driving agents through WSL, the comparison worth reading is Claude Code on WSL and Claude Code on Windows; on Linux the equivalent is Codex CLI on Linux.
The Go continuum-agent is the host that speaks the same wire as the Mac daemon: sessions, workspaces, models, diffs, PRs, health. Enroll a Hetzner box, an old laptop, or a cloud VM and it stays in the fleet when your day machine sleeps. It renders nothing. It spawns and drives the provider CLIs, projects their transcripts onto the wire, and answers clients.
One-line setup from Settings → Devices. systemd or LaunchAgent where it belongs. The install narrates itself step by step over SSH, and a matching wipe script removes every artifact it created. Your hardware, your keys, and an uninstall that actually uninstalls. Details on Devices.
Because the Mac daemon and the Go agent publish the same fields, a session behaves identically from either side. Change a model mid-run, approve a plan, stage a hunk, open a PR: same request, same response shape, whichever host answered.
continuum new · sessions · send · diff · pr · attach. Named connection profiles, shell completions, and a --relay flag that rides the same encrypted channel the web app uses.
Cmd+Esc opens Code in the secondary sidebar. Cmd+Shift+Esc starts a session in the open folder. Cmd+Alt+K drops the selection into the composer as @path#L12-40.
The continuum CLI is the fourth client on the same wire as Mac, iOS, and web, written in Go and shipped as one static binary for Windows, macOS, and Linux on amd64 and arm64. It creates sessions, streams transcripts, shows diffs, and drives PRs from a terminal that already has your SSH muscle memory. Connection profiles persist host, port, provider, account, model, mode, and effort - and never a token. Secrets stay in the daemon's token file or an environment variable.
Pass --relay and every request rides the encrypted relay channel instead of direct HTTP, so a laptop on hotel wifi drives a box it can't route to. It's the natural upgrade from a raw Claude Code terminal session, and it plays fine next to OpenCode if that's already in your stack.
The VS Code / Cursor extension is a Code transcript and composer in the secondary sidebar, not a nested app shell. It registers the folder you have open as a workspace, passes your current git branch as the base branch when a session wants a worktree, and keeps its bearer token in the extension's secret storage so the webview never sees it. If you have been living in Claude Code in VS Code, it's the same place with a session list attached. Packages live on the download page.
The Mac app is a keyboard app first. Every surface you reach for during a session has a chord, and none of them require a menu.
⌘1 to ⌘3 switch between Code, Usage, and Settings. ⌘⇧F focuses sidebar search. Inside Code, the digits jump to the Nth open session, so a five-session day is five keystrokes wide.
⌘N opens a new session. ⌘↩ sends the composer. ⌘; branches a sub-chat off the session you're in, nested under its parent in the sidebar. ⌃M toggles dictation straight into the composer.
⌘W toggles the review pane when the window is wide enough to hold it. ⌘⌥N pops the open session into its own window, and a pin button keeps that window floating above whatever you switch to.
Mac ships as a notarized DMG. Windows ships a signed installer. Linux ships AppImage and deb. The CLI ships versioned archives for Windows, macOS, and Linux on amd64 and arm64, installed user-local with no sudo into ~/.local/bin or a directory you name.
continuum update --version X --check reads that release's manifest; without --check it verifies the archive's SHA-256 and atomically replaces a writable user-local binary. A read-only or system-installed executable is never touched.
The part most vendors leave out: the CLI archives are not platform code-signed yet, and the manifest says so. The checksum catches a corrupted download, not an attacker who can rewrite the archive and its checksum together. So automatic CLI updates stay off, and every update is an explicit version you asked for. When a release-signing trust root exists, the signature check is already wired and waiting behind a flag.
Short answers here, long answers in the docs.
Something has to host compute - often a Mac daemon, sometimes continuum-agent on Linux/Windows hardware. Controllers can be Mac, Electron desktop, web, or phone. You don’t need the Mac UI open if an enrolled host is live.
They run the same dashboard UI as the web client inside Electron, with tray integration, and each app supervises a bundled continuum-agent on loopback so it hosts its own "This device" workspace out of the box. The Mac remains the richest native host surface - menu-bar gauges, the spawn grid, pop-out session windows - but a Windows or Linux desktop is a real host, not a viewport.
Yes. Sign in once; devices join the account mesh. Pairing and revoke live under the same identity. See the pairing and devices pages for the mesh details.
No. It's another door into the same sessions. Heavy plan/diff/PR work still feels best in the full Code workbench; the extension keeps you close to the file tree. It also refuses to activate in an untrusted workspace, which is the correct default for something that can run commands.
Yes. --relay carries every request over the same encrypted relay the web dashboard and iPhone use, with the pairing file as the credential instead of a bearer token. One limit worth knowing: a relayed request has to fit a single frame, so a very large prompt body should go over the direct path.
They are the same code. The Electron shell wraps the continuum-dashboard build, so a web release is a desktop release. Native Mac and iOS are separate Swift codebases, which is why cross-client parity is enforced as a rule rather than assumed: any wire field, projection, or status has to ship on every producer and every consumer in the same change.
Start with Mac, then enroll the rest of the fleet. Coming from an AI-first editor? Continuum vs Cursor lays out what changes and what doesn't.