Spatio CLI

The Spatio CLI is a standalone command-line tool for talking to your workspace from a terminal. It sits alongside SpatioMCP (for agents) and the SpatioAPI (for raw HTTP) — same workspace, three doorways.

Reach for the CLI when you want to script Spatio operations from a shell, pipe artifacts in and out, or run one-off commands without writing HTTP by hand.

Install

Terminal
npm install -g @spatio/cli

Or with your package manager of choice:

Terminal
pnpm add -g @spatio/cli
brew install spatio/tap/spatio

Verify the install:

Terminal
spatio --version

Authenticate

Terminal
spatio login

Opens a browser window to complete OAuth with your Spatio account. The CLI persists a Personal Access Token to ~/.spatio/credentials.

To use an existing PAT non-interactively (CI, scripts):

Terminal
export SPATIO_API_TOKEN="pat_01HZ..."

Common commands

Terminal
# Notes
spatio notes list
spatio notes create --title "Weekly review" --content "- Shipped docs"
spatio notes get note_01HZ...

# Tasks
spatio tasks list --status open
spatio tasks complete task_01HZ...

# Sheets
spatio sheets export sheet_01HZ... > report.xlsx

# Mail
echo "hello" | spatio mail send --to [email protected] --subject "Hi"

# Pipe between primitives
spatio notes get note_01HZ... --format markdown | spatio mail send --to team@...

Every primitive exposed by SpatioMCP has a matching CLI namespace. The shape mirrors the MCP tool, so an agent flow can be lifted into a shell script (or back) with no translation layer.

Workspace selection

If your account belongs to more than one workspace, set the active one:

Terminal
spatio workspace use ws_01HZ...
spatio workspace list

Or pass it per-command:

Terminal
spatio notes list --workspace ws_01HZ...

Output formats

Terminal
spatio notes list --format json     # default for piping
spatio notes list --format table    # human-readable
spatio notes list --format markdown # for notes / mail bodies

Scripting

Any command that returns a list supports --json for machine output:

Terminal
spatio tasks list --status open --json | jq '.[] | .title'

Pipe-friendly defaults: when stdout is a TTY, output is human-readable; when piped, output is JSON.

See also