Skip to Content
CabinetFleetsFleets overview

Fleets

A fleet is a logical tenant in CMDOP — it owns machines, members, API keys, billing, and a default permission policy. The cabinet is the canonical place to administer fleets; you operate against them from desktop and CLI.

Primary surface is desktop and CLI. Inviting members and editing roles happen here. Driving the machines those members share happens in ../../desktop/machines-tab or ../../cli/connect.

What a fleet contains

Each fleet bundles:

  • Machines registered via cmdop connect against a fleet API key or OAuth token.
  • Members with a role (Owner / Admin / Member / Viewer).
  • API keys that are fleet-scoped, long-lived, and ideal for CI.
  • Billing profile — plan, seats, payment methods, usage and quotas.
  • Activity log of admin events.
  • Default permission policy for new machines.

Personal vs team fleets

Every account has a personal fleet; team fleets add seat-based billing and shared machine ownership. You can belong to several fleets at once and switch between them per call (with the --workspace=X flag — the flag keeps its legacy name) or by setting an active default.

Switching fleets

There are two ways to change fleet context:

  • Cabinet switcher — top-left dropdown; affects only the cabinet UI.
  • Per-call override — the --workspace=<slug> flag on any cmdop connect command.

The active fleet stored in ssh_workspaces.json follows your OAuth login; re-run cmdop login to refresh the list. Tokens are split per fleet plus mode (token_prod.json / token_dev.json) so switching does not invalidate the others. See Concepts: fleets for the resolver order.

Creating a fleet

Owners create fleets from the cabinet. Slugs must be globally unique; the chosen plan determines billing immediately. The first member is automatically the fleet Owner.

Cross-fleet machine migration

A machine belongs to exactly one fleet at a time. Move it by changing its fleet in the cabinet; the move is recorded as an event in the activity log. This keeps the migration auditable and the fleet dashboard honest.

Operating against machines is fleet-scoped. Check the fleet selector before running commands from any surface — the desktop and CLI obey the same scoping rules.

Where this data lives

The fleet surface reflects the same fleet state used by the desktop and CLI, and updates in real time as members, machines, and roles change.

Last updated on