CLI Reference

Complete reference for Superset command-line interface, including commands and flags.

The CLI is currently in Beta. Commands and flags are still evolving. Make sure you're on the latest version of the CLI if you run into issues.

Synopsis

superset <command> [subcommand] [options]

Run superset --help for the top-level command list, or superset <command> --help for any group.

Global options

These flags are accepted by every command:

FlagEnvDescription
--jsonPrint the data payload as formatted JSON.
--quietOne ID per line for arrays; the ID for single objects; JSON fallback otherwise.
--api-key <key>SUPERSET_API_KEYUse an API key instead of stored OAuth login.
--help, -hShow help for the current command.
--version, -vPrint the version number and exit.

Commands

auth

Authentication and session inspection.

superset auth login

Authenticate via browser OAuth and store a session token at ~/.superset/config.json.

Single-org accounts are selected automatically. With multiple orgs and a TTY, the CLI prompts; with multiple orgs and no TTY, you must pass --organization or the command exits 1 listing the available slugs.

superset auth login
superset auth login --organization acme

To sign in with an API key (useful for CI or any environment where the OAuth browser flow isn't an option), pass --api-key. The CLI validates the key, stores it at ~/.superset/config.json, and clears any prior OAuth session.

superset auth login --api-key sk_live_…
superset auth login --api-key sk_live_… --organization acme

Returns

The newly authenticated user and active organization.

◇  Authorized!
│  Satya Patel (you@example.com)
│  Organization: Acme
└  Logged in successfully.

--json

{
  userId: string;
  organizationId: string;
  organizationName: string;
}

Options

FlagDescription
--organization <idOrSlug>Selects the active organization without prompting. Required for non-TTY logins when you belong to multiple orgs.
--api-key <key>Store a Superset API key (`sk_live_…`) at `~/.superset/config.json` instead of running the OAuth flow.

superset auth logout

Clear stored credentials: both an OAuth session and a stored API key. Does not call the API and does not clear the active organization (your preferred org persists across re-logins).

superset auth logout

Returns

A confirmation message.

Logged out.

--json

{ message: "Logged out." }

superset auth whoami

Show the current user, active organization, and auth source.

superset auth whoami

Returns

The current user and organization context.

Signed in as Satya Patel (you@example.com)
Organization: Acme
Auth: Session (expires in 32 min)

--json

{
  userId: string;
  email: string;
  name: string;
  organizationId: string;
  organizationName: string;
  authSource: "override" | "config" | "oauth";
}

start

Start the local host server: the daemon the CLI and desktop app both talk to when targeting this machine.

superset start

If a manifest exists and the PID is alive, returns the existing instance's { pid, endpoint }. Otherwise spawns the host server binary, polls /trpc/health.check for up to 10 seconds, and writes the manifest. Binds to 127.0.0.1 only.

superset start --daemon

Returns

The running host server.

--json

// Freshly started
{
  pid: number;
  port: number;
  organizationId: string;
}

// Already running
{
  pid: number;
  endpoint: string;
}

Options

FlagDescription
--daemonRun detached.
--port <n>Specific port. Default: a free loopback port.
--org <id>Organization to register under. Default: the active organization.

stop

Stop the local host server.

superset stop

Sends SIGTERM, waits up to 10 seconds, sends SIGKILL if still alive, then removes the manifest. If sending SIGTERM itself throws, the command errors and the manifest is left in place.

superset stop

Returns

The stopped host server, if one was running.

--json

// No manifest
{ running: false }

// Manifest existed
{ pid: number; organizationId: string }

status

Inspect the local host server.

superset status

healthy reflects a live health.check request (2-second timeout).

superset status

Returns

The host server state. Three shapes depending on what's running.

--json

// No manifest
{ running: false; organizationId: string; hostId: string }

// Manifest exists but PID is dead
{
  running: false;
  stale: true;
  pid: number;
  organizationId: string;
  hostId: string;
}

// Running
{
  running: true;
  healthy: boolean;
  pid: number;
  port: number;
  endpoint: string;
  organizationId: string;
  hostId: string;
  hostName: string;
  uptimeSec: number;
}

Options

FlagDescription
--org <id>Organization to inspect. Default: the active organization.

update

Update the Superset CLI and host server binary.

superset update

Downloads the matching superset-<platform>.tar.gz from GitHub Releases and atomically replaces the install root. Only available in built binaries; running from bun run dev errors out.

superset update                     # upgrade to the latest release
superset update --check             # show current → target without installing
superset update --version 0.1.2     # install a specific version (up or down)

Returns

The current and target version, plus whether anything changed.

Updated 0.1.4 → 0.1.5 (/Users/you/.local/share/superset)

--json

// --check
{
  current: string;
  target: string;
  upToDate: boolean;
  pinned: boolean;
}

// install
{
  current: string;
  target: string;
  updated: boolean;
  installRoot?: string;
}

Options

FlagDescription
--checkOnly check for updates; don't install.
--forceRe-install even if already on that version.
--version <version>Install a specific version (e.g. `0.1.2`) instead of the rolling latest. Accepts upgrade or downgrade.

organization (alias: org)

Manage which organization the CLI targets.

superset organization list

List organizations available to the current auth context. Marks the active one.

Human mode: table with NAME, SLUG, ACTIVE.

--quiet: organization IDs.

superset organization switch <idOrSlug>

Set the active organization in ~/.superset/config.json.

superset organization switch acme
superset org switch org_…

Arguments

NameDescription
<idOrSlug>requiredOrganization ID or slug.

superset organization members list

List members in the active organization.

superset organization members list
superset org members list -s satya

Options

FlagDescription
--search <query>, -sSearch by name or email.
--limit <n>Default 50.

Human mode: table with NAME, EMAIL, ROLE, ID.

--quiet: member IDs.


projects

A project is a repository checked out on a host. Projects are host-owned — each host serves the projects set up on that machine; there is no org-wide listing. Workspaces branch off a host's checkout.

superset projects list

List projects on a host. Defaults to this machine; pass --host <id> for another host.

Options

FlagDescription
--host <id>List projects on a specific host machineId.
--localList projects on this machine (the default).

Human mode: table with NAME, REPO, PATH, ID.

--quiet: project IDs.

superset projects create

Create a fresh project on a host. Two modes:

  • Clone: pass --clone <url> and --parent-dir. The host clones the repo into <parent-dir>/<derived-name>/.
  • Import: pass --import <path> to register a repo that already exists on disk.

Either way, a new cloud project record is created and the host's main workspace is ensured.

create always creates a new cloud project, even if your org already has one for the same Git URL. Use projects setup when adopting an existing project on a fresh machine.

superset projects create --name "my-app" --local --clone https://github.com/org/my-app.git --parent-dir ~/code
superset projects create --name "my-app" --local --import ~/code/my-app

Options

FlagDescription
--name <name>requiredDisplay name for the project.
--host <id>Target host machineId. Mutually exclusive with `--local`; one is required.
--localTarget this machine. Mutually exclusive with `--host`; one is required.
--clone <url>Clone from a Git URL. Mutually exclusive with `--import`.
--parent-dir <path>Parent directory the cloned repo lands in. Required with `--clone`.
--import <path>Existing repo path on the target host. Mutually exclusive with `--clone`.

superset projects setup <id>

Adopt an existing project onto a host without creating a duplicate cloud record. Counterpart to create for the "new machine, repo already in the org" case.

Find the project ID via projects list.

Idempotent: re-running against a project that's already set up at the same path is a no-op that returns the existing mainWorkspaceId.

# Pick an ID from `superset projects list`, then clone it onto this machine
superset projects setup 47c31b04-… --local --parent-dir ~/code

# Or register an existing local checkout
superset projects setup 47c31b04-… --local --import ~/code/my-app

Arguments

NameDescription
<id>requiredProject UUID to adopt.

Options

FlagDescription
--host <id>Target host machineId. Mutually exclusive with `--local`; one is required.
--localTarget this machine. Mutually exclusive with `--host`; one is required.
--project <id>Project UUID to adopt. Alias for the positional argument.
--parent-dir <path>Parent directory to clone the project's repo into (clone mode).
--import <path>Existing repo path on the target host (import mode).
--path <path>Alias for `--import`.
--allow-relocatePermit re-importing at a different path if the project is already set up here. `--import`/`--path` only.

hosts

Discover hosts registered to the active organization. To control the host server running on this machine, use start, stop, and status.

superset hosts list

List hosts registered to the active organization. Host registration happens via superset start on each machine. There is no separate registration command.

superset hosts list

Options

FlagDescription
--org <id>Organization to list. Default: the active organization.

Human mode: table with NAME, ONLINE, ID.

--quiet: host IDs.

superset hosts set-wake <host> <command...>

Set (or clear) the command used to wake a host.

superset hosts set-wake my-sandbox vercel sandbox resume my-box
superset hosts set-wake my-sandbox --clear

Arguments

NameDescription
<host>requiredHost name or id.
[command...]Command to run locally to wake the host, e.g. `vercel sandbox resume my-box`.

Options

FlagDescription
--clearRemove the wake command.
--org <id>Organization (id, slug, or name). Default: the active organization.

superset hosts wake <host>

Wake a host by running its configured wake command locally, streaming its output.

superset hosts wake my-sandbox

Arguments

NameDescription
<host>requiredHost name or id.

Options

FlagDescription
--yesSkip the confirmation prompt.
--org <id>Organization (id, slug, or name). Default: the active organization.

workspaces (alias: ws)

Workspaces are branch-scoped working copies on a host.

Routing: when --host resolves to the local machine, the CLI calls the host server directly over loopback HTTP: no cloud roundtrip, works offline. Otherwise it routes through the cloud API and the relay.

If the resolved host is the local machine but the host server isn't responding, the CLI errors out and points you at superset start rather than silently falling through to the cloud.

superset workspaces list

List workspaces on a host. Defaults to this machine; pass --host <id> for another host. Workspaces are host-owned — there is no org-wide listing (the desktop app is the cross-host view). projectName falls back to the raw project id when the host doesn't know the project's name.

Options

FlagDescription
--host <id>List workspaces on a specific host machineId.
--localList workspaces on this machine (the default).
--project <nameOrId>Filter by project name (case-insensitive) or id.
--search <text>Substring match against workspace name or branch. Alias: -s.

Human mode: table with NAME, BRANCH, PROJECT, ID.

--quiet: workspace IDs.

superset workspaces create

Create a workspace on the target host. Specify exactly one of --branch or --pr. If you pass --agent, you must also pass --prompt. --command runs a one-off shell command in the worktree and is independent of --agent/--prompt. Pass either or both. --effort requires --agent; see the agent effort levels below.

superset workspaces create \
  --project prj_… \
  --name "fix-login-bug" \
  --branch fix/login-bug \
  --local

superset workspaces create \
  --project prj_… \
  --name "review-pr-123" \
  --pr 123 \
  --local

Options

FlagDescription
--project <projectId>requiredProject ID.
--name <name>requiredWorkspace name.
--branch <branch>Workspace branch. Required unless `--pr` is set.
--pr <number>Pull request number. Checks out the verified PR head.
--base-branch <branch>Branch to fork from when `--branch` does not exist. Defaults to the project default branch.
--host <id>Target host machineId. Mutually exclusive with `--local`; one is required.
--localTarget this machine. Mutually exclusive with `--host`; one is required.
--agent <preset|uuid|superset>Agent to spawn after creation.
--prompt <text>Initial prompt. Required when `--agent` is set.
--effort <level>Reasoning effort for the spawned agent. Omit to use the agent default.
--command <cmd>Shell command to run in the new workspace after creation.
--attachment <path>Local file to upload for the spawned agent. Repeatable.

superset workspaces delete <id...>

Delete one or more workspaces on the target host (default: this machine).

superset workspaces delete ws_a ws_b ws_c

Arguments

NameDescription
<id...>requiredWorkspace IDs to delete.

Options

FlagDescription
--host <id>Host the workspaces live on.
--localTarget this machine (the default).

superset workspaces get [id]

Show details for a single workspace on its host. --field is handy in scripts: superset workspaces get --field worktreePath.

superset workspaces get ws_…
superset workspaces get --field branch   # inside a workspace

Arguments

NameDescription
[id]Workspace ID. Defaults to `$SUPERSET_WORKSPACE_ID` when run inside a workspace.

Options

FlagDescription
--host <id>Host the workspace lives on (default: this machine).
--field <name>Print a single field's raw value (e.g. name, branch, worktreePath). Alias: -f.

superset workspaces update <id>

Update a workspace on its host (default: this machine).

superset workspaces update ws_… --name "better-name"
superset workspaces update ws_… --task-id tsk_…
superset workspaces update ws_… --clear-task

Arguments

NameDescription
<id>requiredWorkspace UUID.

Options

FlagDescription
--host <id>Host the workspace lives on (default: this machine).
--name <name>New workspace name.
--task-id <id>Link the workspace to a task by id.
--clear-taskUnlink the workspace from its current task. Mutually exclusive with --task-id.

superset workspaces open <id>

Open a workspace in the Superset desktop app.

superset workspaces open ws_…
superset workspaces open ws_… --print

Arguments

NameDescription
<id>requiredWorkspace ID.

Options

FlagDescription
--host <id>Host the workspace lives on (default: this machine).
--printPrint the deep link instead of opening the desktop app.

Opening a specific session

workspaces open targets a workspace, not a session. Terminal sessions started with agents create are automatically adopted into panes while their workspace is open. Opening the workspace later also creates panes for running terminal sessions that aren't already attached, without stealing focus from the active tab. workspaces open can't focus a specific session, so use a session deep link when focus matters. The same deep link creates or focuses the pane for a Superset chat session. Choose the query param from the session kind returned by agents create:

kindExample agentsQuery param
chatsuperset?chatSessionId=<sessionId>
terminalclaude, codex?terminalId=<sessionId>
# Run the agent with --json, then pull kind + sessionId out of the payload:
session=$(superset agents create --workspace ws_… --agent claude --prompt "…" --json)
kind=$(echo "$session" | jq -r '.kind')           # "chat" or "terminal"
sessionId=$(echo "$session" | jq -r '.sessionId')

# Open the session using the query param that matches its kind:
# chat session (kind: "chat")
open "superset://v2-workspace/<workspaceId>?chatSessionId=$sessionId"

# terminal session (kind: "terminal")
open "superset://v2-workspace/<workspaceId>?terminalId=$sessionId"

Append &focusRequestId=<unique> to force a re-focus when opening the same link more than once. The session must belong to the workspace in the URL. On Linux/Windows substitute your platform's URL opener (xdg-open, start) for open.


agents

Agents are terminal-agent rows configured on a host (the same rows shown in Settings → Agents on that machine). Each row stores a command, args, prompt-transport mode, and environment used to launch the agent in a fresh terminal session inside a workspace.

superset agents list

List agents configured on a host. First call on a fresh host seeds the bundled defaults.

superset agents list --local
superset agents list --host host_…

Options

FlagDescription
--host <id>Target host machineId.
--localTarget this machine. Mutually exclusive with --host; exactly one is required.

Human mode: table with LABEL, PRESET, COMMAND, ID.

--quiet: agent instance IDs.

superset agents create

Create an agent session in an existing workspace on its host (default: this machine): starts the named preset (or HostAgentConfig instance) in a fresh terminal session there.

superset agents create --workspace ws_… --agent claude --effort high --prompt "Audit the login flow"
superset agents create --workspace ws_… --agent codex --prompt "Review this diff" --attachment ./trace.log

Agent effort levels

Effort is an explicit override for one launch. If you omit --effort, Superset passes no effort flag and the agent uses its own configured default. The host rejects unsupported values before launching the agent.

AgentSupported levels
Claudelow, medium, high, xhigh, max
Ampnone, minimal, low, medium, high, xhigh, max
Codexlow, medium, high, xhigh
Mastracodeoff, low, medium, high, xhigh
Pioff, minimal, low, medium, high, xhigh
Copilotlow, medium, high, xhigh

Other agents, including Superset chat, currently use their own default and reject an explicit effort override.

Options

FlagDescription
--workspace <id>requiredWorkspace UUID to create the agent session in.
--host <id>Host the workspace lives on (default: this machine).
--agent <preset|uuid|superset>requiredAgent preset id (e.g. `claude`, `codex`), HostAgentConfig instance UUID, or `superset`.
--prompt <text>requiredPrompt sent to the agent.
--effort <level>Reasoning effort for this launch. Omit to use the agent default.
--attachment-id <uuid>Pre-uploaded attachment UUID; pass repeatedly for multiple attachments.
--attachment <path>Local file path to upload as an attachment. Repeatable.

terminals (alias: term)

Terminals are PTY sessions on a host, scoped to a workspace. Create one to run a one-off command in a worktree or to open an interactive shell.

superset terminals create

Create a terminal session in an existing workspace on its host (default: this machine): opens a fresh PTY in the worktree, optionally running a command.

superset terminals create --workspace ws_… --command "bun install && bun test"
superset terminals create --workspace ws_…

Options

FlagDescription
--workspace <id>requiredWorkspace UUID to create the terminal in.
--host <id>Host the workspace lives on (default: this machine).
--command <cmd>Shell command to run in the terminal. Omit to open an interactive shell.
--cwd <path>Working directory for the terminal. Defaults to the worktree.

tasks (alias: t)

Tasks are units of work in your organization's task tracker.

superset tasks list

List tasks in the active organization.

superset tasks list --assignee-me
superset t list -s "auth" --json

Options

FlagDescription
--status <id>Filter by status ID.
--priority <urgent|high|medium|low|none>Filter by priority.
--assignee <userId>Filter by assignee user ID.
--assignee-me, -mTasks assigned to the current user.
--creator-meTasks created by the current user.
--search <query>, -sSubstring search on title or description.
--project <id>Filter by Linear project id.
--project-name <name>Filter by Linear project name (prefix, case-insensitive).
--cycle <id>Filter by Linear cycle id.
--due-from <date>Tasks due on or after this date (YYYY-MM-DD).
--due-to <date>Tasks due on or before this date (YYYY-MM-DD).
--sort-by <field>createdAt | updatedAt | dueDate | priority. Default: createdAt.
--sort-order <dir>asc | desc.
--limit <n>Default 50.
--offset <n>Default 0.

Human mode: table with SLUG, TITLE, PRIORITY, ASSIGNEE, PROJECT.

--quiet: task IDs.

superset tasks get <idOrSlug>

Get a task by ID or slug.

superset tasks get tsk_…
superset tasks get fix-login-bug

Arguments

NameDescription
<idOrSlug>requiredTask ID or slug.

superset tasks create

Create a task.

superset tasks create --title "Audit auth flow" --priority high

Options

FlagDescription
--title <title>requiredTask title.
--description <text>Task description.
--priority <urgent|high|medium|low|none>Priority.
--assignee <userId>Assignee user ID.
--status-id <id>Initial status ID.
--estimate <n>Story-point estimate.
--due-date <iso8601>Due date.
--labels <a,b,c>Comma-separated labels.

superset tasks update <idOrSlug>

Update a task. Same fields as create, all optional.

superset tasks update fix-login-bug --priority urgent

Arguments

NameDescription
<idOrSlug>requiredTask ID or slug.

Options

FlagDescription
--title <title>New title.
--description <text>New description.
--priority <urgent|high|medium|low|none>New priority.
--assignee <userId>New assignee.
--status-id <id>New status ID.
--pr-url <url>Linked pull request URL.
--estimate <n>Story-point estimate.
--due-date <iso8601>Due date.
--labels <a,b,c>Replace labels with a comma-separated list.

superset tasks delete <idOrSlug...>

Delete one or more tasks.

superset tasks delete tsk_a tsk_b

Arguments

NameDescription
<idOrSlug...>requiredTask IDs or slugs to delete.

superset tasks statuses list

List task statuses in the active organization. Use the returned IDs with tasks list --status, tasks create --status-id, or tasks update --status-id.

superset tasks statuses list

Human mode: table with NAME, TYPE, POS, ID.

--quiet: status IDs.


automations (alias: auto)

Scheduled agent runs. Schedules use RFC 5545 RRULE bodies, e.g. FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9;BYMINUTE=0.

superset automations list

List automations in the active organization.

Options

FlagDescription
--name <text>Case-insensitive substring filter on the automation name. Alias: -n.

Human mode: table with ID, NAME, AGENT, SCHEDULE, ENABLED, NEXT RUN.

--quiet: automation IDs.

superset automations get <id>

Get an automation's metadata. The prompt body is omitted. Use automations prompt get to read it. Use automations logs for run history.

Arguments

NameDescription
<id>requiredAutomation ID.

superset automations create

Create an automation. Provide --prompt or --prompt-file; if both are present, the inline --prompt value is used. At least one of --project or --workspace must be provided, and it must exist on the target host — the CLI verifies this before creating the automation.

superset automations create \
  --name "Weekday triage" \
  --project prj_… \
  --workspace ws_… \
  --rrule "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9;BYMINUTE=0" \
  --prompt-file ./prompts/triage.md

Options

FlagDescription
--name <name>requiredAutomation name.
--prompt <text>Inline prompt.
--prompt-file <path>Read prompt from file, verbatim.
--rrule <rrule>requiredRFC 5545 RRULE schedule.
--timezone <iana>Default: host TZ, then UTC.
--dtstart <iso8601>Default: now.
--workspace <workspaceId>Reuse an existing workspace.
--project <projectId>Project ID for new-workspace-per-run mode.
--host <hostId>Host the automation dispatches to (default: this machine).
--agent <agent>Host agent presetId, instance UUID, or 'superset' for built-in chat. Default: claude.

superset automations update <id>

Update an automation's metadata (name, schedule, agent, host). All flags optional. Omitting a flag preserves the existing value: undefined means "no change", not "clear". Use automations prompt get or automations prompt set to read or replace the prompt body.

Arguments

NameDescription
<id>requiredAutomation ID.

Options

FlagDescription
--name <name>New name.
--rrule <rrule>New schedule.
--timezone <iana>New timezone.
--dtstart <iso8601>New start time.
--host <hostId>New target host.
--project <projectId>New v2 project ID.
--workspace <workspaceId>New v2 workspace ID.
--agent <agent>New host agent presetId, instance UUID, or 'superset'.
--mcp-scope <a,b,c>Comma-separated MCP scope strings.
--enabled / --no-enabledCalls automation.setEnabled first.

superset automations prompt get <id>

Print an automation's prompt body to stdout. The output is the raw prompt with no trailing newline added, so prompt get and prompt set round-trip byte-exactly.

# Read to a file
superset automations prompt get aut_… > prompt.md

# Verify a push landed
superset automations prompt get aut_… | diff - ./prompt.md

Arguments

NameDescription
<id>requiredAutomation ID.

superset automations prompt set <id>

Replace an automation's prompt body. The new prompt fully overwrites the old one.

# Write from file
superset automations prompt set aut_… --from-file ./prompt.md

# Write from stdin
cat ./prompt.md | superset automations prompt set aut_… --from-file -

Arguments

NameDescription
<id>requiredAutomation ID.

Options

FlagDescription
--from-file <path>requiredRead the new prompt from a file. Use `-` for stdin.

superset automations delete <id>

Delete an automation.

superset automations delete aut_…

Arguments

NameDescription
<id>requiredAutomation ID.

superset automations pause <id>

Pause an automation (sets enabled: false).

superset automations pause aut_…

Arguments

NameDescription
<id>requiredAutomation ID.

superset automations resume <id>

Resume an automation (sets enabled: true). The API recomputes nextRunAt on resume.

superset automations resume aut_…

Arguments

NameDescription
<id>requiredAutomation ID.

superset automations run <id>

Dispatch an automation immediately. Does not wait for completion.

superset automations run aut_…

Arguments

NameDescription
<id>requiredAutomation ID.

superset automations logs <id>

List recent runs for an automation.

superset automations logs aut_…

Arguments

NameDescription
<id>requiredAutomation ID.

Options

FlagDescription
--limit <n>Default 20, max 100.

Human mode: table with RUN ID, STATUS, SCHEDULED, DISPATCHED, HOST.

--quiet: run IDs.


Output modes

JSON mode (--json): raw payloads. Lists print arrays, get/create/update print objects, delete prints summary objects. No { "data": ... } wrapper. Empty results print null.

Quiet mode (--quiet): IDs only. Arrays of objects with an id field print one ID per line; single objects print their id; everything else falls back to JSON.

When CLAUDE_CODE, CLAUDECODE, CLAUDE_CODE_ENTRYPOINT, CODEX_CLI, GEMINI_CLI, SUPERSET_AGENT, or CI is set to a non-empty value, output defaults to JSON unless --quiet is provided.

On this page