Spatio Desktop

Spatio Desktop is the human-facing surface of Spatio. Where SpatioMCP gives your agent hands and the SpatioAPI gives your code a substrate, Desktop is the workbench where you and your team actually live: every artifact your agent produces lands here for review, edit, approval, and send.

This page covers what Desktop is, how to install it, how it talks to the rest of the platform, and the pieces developers most often need to extend or integrate with.

Install

Terminal
# macOS
brew install --cask spatio

# Or download the latest build

Builds are signed and ship via Electron's auto-updater. Releases are tagged from the apps/desktop-renderer workspace; you can see the changelog in Settings → About → What's new.

Sign in

Desktop authenticates with the same Personal Access Token system as the CLI and the API. On first launch:

  1. Click Sign in with Spatio.
  2. Complete OAuth in your browser.
  3. Desktop persists a PAT scoped to your account.

Multi-workspace accounts can switch active workspace from the workspace switcher in the top-left.

What lives in Desktop

Desktop is a panes-based workbench. Each pane is an isolated surface — its own provider tree, its own keyboard focus, its own state — so opening five panes side-by-side does not compound re-renders or fight over shortcuts.

Out of the box you get panes for:

  • Notes — markdown notes with an org-wide search.
  • Sheets — collaborative spreadsheets with the Spatio formula engine.
  • Slides — slide decks with templates, exports, and a presentation mode.
  • Mail — full email client (folders, labels, drafts, send).
  • Tasks — tasks, projects, kanban + list views.
  • Calendar — events, scheduling, agenda view.
  • Files — workspace files backed by R2.
  • Chat — DMs and channels (Slack-style).
  • Contacts — CRM-style contact records.
  • Repo — native git host (browse, diff, PRs).
  • Terminal — multi-PTY terminal panes.

Each surface maps 1:1 with an MCP namespace and a REST resource. Anything an agent can do via SpatioMCP, you can do by hand in Desktop, and vice versa.

How Desktop talks to the platform

Desktop is a thin Electron renderer. There is no separate desktop backend — the renderer talks directly to:

  • SpatioAPI at https://api.spatio.app for all reads and writes.
  • A WebSocket at wss://api.spatio.app/ws for live updates.
  • A local agent sidecar that bridges to your Claude CLI for in-app AI features.

When an agent (running anywhere) calls a SpatioMCP tool, the SpatioAPI emits a /ws event and Desktop optimistically updates the relevant pane. There is no polling and no separate sync layer.

Keyboard model

Desktop is keyboard-first.

  • ⌘K — global command palette. Every "+ New X" action and every navigation lives here.
  • ⌘1–9 — jump to pane 1–9.
  • ⌘\ — split current pane.
  • ⌘W — close current pane.
  • ⌘P — quick-open files / notes / tasks.
  • Esc — close any open dialog or palette.

Pane-local shortcuts are documented inside each pane's ? menu.

Extending Desktop

Desktop is closed-source today, but everything an extension would want to do can be done from outside via:

  • SpatioMCP for agent-driven workflows.
  • SpatioAPI for arbitrary HTTP integrations.
  • Webhooks at the workspace level for inbound events.

If you have a use case that requires a true in-process plugin (custom pane type, custom renderer), get in touch.

See also