status
crabbox status prints the current state of a lease: its slug, provider, target OS, host, network, readiness, idle time, and expiry. By default it is a read-only snapshot. Add --wait to block until the box becomes ready (or reaches a terminal state).
crabbox status --id swift-crab
crabbox status --id swift-crab --json
crabbox status --id swift-crab --wait --wait-timeout 10m
crabbox status --id swift-crab --network tailscale
crabbox status --provider ssh --target macos --static-host mac-studio.local
#Identifying the lease
--id accepts the canonical cbx_... lease ID or an active slug. For provider=ssh (static hosts), --id is optional: status resolves the configured static target or the local claim for the current repo.
Several delegated and direct providers resolve their own native identifiers in addition to the Crabbox lease ID and local slug:
blacksmith-testboxβ accepts atbx_...ID or local slug; derives a normalized status view fromblacksmith testbox list --all.blaxelβ accepts a Crabbox lease ID (blx_<sandbox-id>) or local slug, verifies the local claim against Blaxel ownership labels, and reports the sandbox state, endpoint, pond, and readiness.namespace-devboxβ accepts a lease ID, local slug, or existing Devbox name; prepares SSH through the Namespace CLI.namespace-instanceβ accepts a lease ID, local slug, or Compute instance ID; prepares SSH throughnsc proxy.exe-devβ accepts a lease ID, local slug, or exe.dev VM name; resolves the VM throughssh exe.dev ls.semaphoreβ resolves local claims and Semaphore job state through the Semaphore API.spritesβ resolves local claims, Sprites labels, and SSH readiness throughsprite proxy.daytonaβ resolves Crabbox labels and sandbox state through the Daytona API.coderβ accepts a Crabbox lease ID, local slug, Coder workspace name, orowner/workspace; plain status reads Coder inventory without starting stopped workspaces.isloβ accepts anisb_...ID, a Crabbox-created sandbox name, or a local slug.e2bβ accepts a lease ID, local slug, or a Crabbox-owned E2B sandbox ID in raw ore2b_<sandboxID>form.vercel-sandboxβ accepts a Crabbox-created local slug orvsbx_...lease ID and verifies the Vercel Sandbox ownership metadata before reporting state.cloudflare-dynamic-workersβ accepts a local Dynamic Workers claim, lifecycle run ID, or slug, then asks the loader for run metadata. Stable and explicit Worker cache IDs are not lifecycle IDs. The status target isworker-runtime, not a Linux host.
#Waiting for readiness
Plain status never modifies the lease. With --wait, status polls every five seconds until the box is ready or reaches a terminal state (expired, failed, released, stopped, stopped_with_code, terminated), and exits non-zero (code 5) if it times out (--wait-timeout, default 5m) or the lease becomes terminal before it is ready. For direct SSH-lease providers, each poll while waiting also touches the lease to keep it from idling out only when an exact local claim matches the configured provider scope and live resource identity. Claimless or mismatched resources remain strictly read-only while status waits.
#Flags
--id <lease-id-or-slug>
--provider hetzner|aws|azure|azure-dynamic-sessions|gcp|proxmox|ssh|exe-dev|blacksmith-testbox|blaxel|namespace-devbox|semaphore|sprites|tenki|coder|daytona|islo|e2b|vercel-sandbox
--target linux|macos|windows
--windows-mode normal|wsl2
--static-host <host>
--static-user <user>
--static-port <port>
--static-work-root <path>
--network auto|tailscale|public
--wait
--wait-timeout <duration> (default 5m)
--json
Some providers add their own resolution flags, including --exe-dev-control-host, --sprites-api-url, --sprites-work-root, --azure-dynamic-sessions-endpoint, --azure-dynamic-sessions-api-version, --e2b-api-url, and --e2b-domain.
#Output
Human-readable output is a single line covering the lease ID, slug, provider, target, Windows mode, state, instance type, host, pond, network, readiness, idle time, idle timeout, and expiry. When the lease carries Tailscale metadata, status also prints the tailnet host and state. The selected network mode is always shown in both human and JSON output.
For coordinator-backed Linux leases that have received a recent heartbeat, status also prints the latest best-effort telemetry snapshot: load, memory, disk, uptime, and capture age.
--json emits the full status view. In addition to every field above, it includes SSH connection details, lease labels, and telemetryHistory when the coordinator has retained recent samples (bounded to the latest 60 per lease) for portal trend charts. Under --wait, JSON is printed once the lease is ready or terminal rather than on every poll.