compute:acquire

Rent a machine now at the outside provider that owns the offer (Lambda, Modal, Vast.ai, Prime Intellect, Nebius or RunPod). This starts paid usage: it is billed by the second at the offer's hourly price plus any provider margin the server adds, to your Flywheel credits (to the campaign's sponsor for a `root` grant), until the lease is released or its grant is used up. It needs an active `compute_grant_id` bound to the approval session (compute-grants:request-approval first). Returns `compute` with `request_state` (`accepted` or `completed`), `lease_id`, `lease_control_token`, `lease_status`, provider, `offer_id`, region, hourly price, grant balances and `auto_shutdown_at`; it carries no SSH key, so poll compute:status until the lease is usable, then call compute:connection. A call with the same --lease_control_token and grant as a pending or active lease reuses that lease instead of provisioning another, as long as its provider, offer and any --region you give match the lease; if they differ the call fails and says what to change or release. --cmd_id is only a label, not a duplicate guard. Release with compute:release when done: the machine and its storage are destroyed. With --wait, wait for usable SSH connection material.

Reference for flywheel compute:acquire.

Command Group

Compute & Executions Commands

Summary

Rent a machine now at the outside provider that owns the offer (Lambda, Modal, Vast.ai, Prime Intellect, Nebius or RunPod). This starts paid usage: it is billed by the second at the offer's hourly price plus any provider margin the server adds, to your Flywheel credits (to the campaign's sponsor for a root grant), until the lease is released or its grant is used up. It needs an active compute_grant_id bound to the approval session (compute-grants:request-approval first). Returns compute with request_state (accepted or completed), lease_id, lease_control_token, lease_status, provider, offer_id, region, hourly price, grant balances and auto_shutdown_at; it carries no SSH key, so poll compute:status until the lease is usable, then call compute:connection. A call with the same --lease_control_token and grant as a pending or active lease reuses that lease instead of provisioning another, as long as its provider, offer and any --region you give match the lease; if they differ the call fails and says what to change or release. --cmd_id is only a label, not a duplicate guard. Release with compute:release when done: the machine and its storage are destroyed. With --wait, wait for usable SSH connection material.

Effect

changes data

Usage

flywheel compute:acquire <FLAGS>

Required flags

FlagValueDefaultChoicesDescription
--node_idstringNode UUID (not a slug) from node_id in hosted:node:list or graph:get. Missing or hidden: 404 where the command loads it.
--compute_grant_idstringGrant ID from compute-grants:list or an already_approved compute-grants:request-approval. Acquire requires it; status filters by it. Unknown, inactive, exhausted or bound elsewhere: 403 or 422 approval_required; request approval again.
--requested_skustringOffer to rent: offer_id of an allowed row from compute:options, such as lambda::gpu_1x_a10 (provider and offer joined by ::). Approval requests store it as given. Acquire adds the --provider prefix when you pass one; otherwise it sends the value as given.
--approval_session_idstringsession_id from compute-grants:request-approval or approval-sessions:list. A grant bound to another session: 403.

Optional flags

FlagValueDefaultChoicesDescription
--purposestringacquireWhy you need the machine; free text stored with the lease and its events. CLI default: acquire; MCP requires an explicit purpose.
--providerstringCompute provider ID, e.g. lambda (see provider in compute:options). Optional filters: omitted means all. Acquire prefixes an unqualified SKU with it; executions and approval requests just store it. CLI default: no prefix (send the SKU unchanged); MCP defaults to lambda. Already-qualified SKUs are unchanged.
--launch_kwargsjsonProvider-specific launch settings as a JSON object. The server checks no keys itself and hands them to the provider's adapter: Prime Intellect adds them to its pod request (for example vcpus) and refuses keys that would replace fields Flywheel sets; RunPod merges them into its launch input and Nebius reads network_interfaces; Lambda, Modal and Vast.ai ignore them. See contract section compute/troubleshooting_v1.
--lease_control_tokenstringFrom compute.lease_control_token in compute:acquire; scopes the leases you control (not an SSH credential). No matching lease: empty status, no_active_lease from release-all, 403 on connect or single release.
--workspace_pathstringPath recorded with the lease (omitted: empty). Nothing is uploaded or mounted from it.
--cmd_idstringYour correlation ID, stored with lease events; not an idempotency key, never checked. Omitted: release generates one, acquire none.
--regionstringRegion from the offer's regions in compute:options. Required when the offer's region_selection_mode is required_from_list; otherwise optional (omitted: the first listed region). Approval requests only store it.
--repostringLocal repository checked for a node that was never pushed; defaults to the working directory.
--formatFORMATjson, tsv, csv, tableOutput format for command results.
--envPROFILESelect a CLI profile; unconfigured default requires FLYWHEEL_BASE_URL.
--outPATHWrite output to a file path, or use - for stdout.
--openOpen browser-bound URLs when supported.
--no-retryDisable transient-error retries.
--retry-maxNMaximum transient-error retry attempts.
--waitBlock on async operations until a terminal state is reached.
--wait-timeoutSECONDS600Seconds to wait for --wait before timing out. Defaults to 600.
--allow-selfAllow mutating the currently active credential.
--timeoutSECONDSSet the per-request timeout budget in seconds.
--idempotency-keyKEYReuse an Idempotency-Key so ambiguous write failures can be retried with the same key.
--forceForce safety-gated operations where supported.
--yesConfirm forced compute:release-all --force. Other runtime commands do not read --yes.
--debugPrint structured request debugging with secrets masked.
--verbosePrint verbose progress for long-running operations.
-h, --helpShow this help.

Examples

Acquire.

flywheel compute:acquire --node_id n --compute_grant_id g --requested_sku lambda::gpu_1x_a10 --approval_session_id s1 --region us-east

Qualify an offer and reuse a lease control scope.

flywheel compute:acquire --node_id n --compute_grant_id g --requested_sku gpu_1x_a10 --approval_session_id s1 --provider lambda --lease_control_token tok

Output

Default format: json.

FieldType
computeobject
wait_result (optional)object