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
| Flag | Value | Default | Choices | Description |
|---|---|---|---|---|
--node_id | string | Node 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_id | string | Grant 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_sku | string | Offer 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_id | string | session_id from compute-grants:request-approval or approval-sessions:list. A grant bound to another session: 403. |
Optional flags
| Flag | Value | Default | Choices | Description |
|---|---|---|---|---|
--purpose | string | acquire | Why you need the machine; free text stored with the lease and its events. CLI default: acquire; MCP requires an explicit purpose. | |
--provider | string | Compute 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_kwargs | json | Provider-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_token | string | From 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_path | string | Path recorded with the lease (omitted: empty). Nothing is uploaded or mounted from it. | ||
--cmd_id | string | Your correlation ID, stored with lease events; not an idempotency key, never checked. Omitted: release generates one, acquire none. | ||
--region | string | Region 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. | ||
--repo | string | Local repository checked for a node that was never pushed; defaults to the working directory. | ||
--format | FORMAT | json, tsv, csv, table | Output format for command results. | |
--env | PROFILE | Select a CLI profile; unconfigured default requires FLYWHEEL_BASE_URL. | ||
--out | PATH | Write output to a file path, or use - for stdout. | ||
--open | Open browser-bound URLs when supported. | |||
--no-retry | Disable transient-error retries. | |||
--retry-max | N | Maximum transient-error retry attempts. | ||
--wait | Block on async operations until a terminal state is reached. | |||
--wait-timeout | SECONDS | 600 | Seconds to wait for --wait before timing out. Defaults to 600. | |
--allow-self | Allow mutating the currently active credential. | |||
--timeout | SECONDS | Set the per-request timeout budget in seconds. | ||
--idempotency-key | KEY | Reuse an Idempotency-Key so ambiguous write failures can be retried with the same key. | ||
--force | Force safety-gated operations where supported. | |||
--yes | Confirm forced compute:release-all --force. Other runtime commands do not read --yes. | |||
--debug | Print structured request debugging with secrets masked. | |||
--verbose | Print verbose progress for long-running operations. | |||
-h, --help | Show 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-eastQualify 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 tokOutput
Default format: json.
| Field | Type |
|---|---|
compute | object |
wait_result (optional) | object |
hooks:update
Update one hook; only the flags you pass change (at least one is required). A supplied --workflow_yaml replaces the old workflow entirely, nothing is merged. Enabling or disabling is a separate command: `hooks:set-enabled`. Needs write access to the owner node.
compute:budgets
List budget grants visible for a node context.