A list of GPUs
gpu_type takes one GPU or a list. Runcrate tries them in the order you give, and runs the job on the first one with capacity. An entry can carry its own GPU count after a colon.
"A100-80GB:2"means two A100 80GB GPUs. Entries without a count usegpu_count(default 1).- Each GPU is tried on several machine options before the next one, cheapest first.
gpu_candidateson the job is the list you asked for.gpu_typeandgpu_countbecome what it actually ran on, so the cost and the logs match the machine.
Waiting for capacity
When none of the GPUs has capacity, the job staysqueued with queue_reason: "no_capacity" and is tried again after 1, 2 and 4 minutes, then every 5 minutes. next_attempt_at says when. It waits up to capacity_wait_minutes (0 to 1440, default 30), then fails with an error that says what it tried:
capacity_wait_minutes: 0 to fail at once instead, as a job did before waiting existed. A machine option that just failed to launch rests for 10 minutes, so a wait never hammers one that is out of stock.
A waiting job costs nothing.
cancel_job (or POST /jobs/{id}/cancel) stops waiting at once. The workspace gets a job.queued webhook event when a job starts waiting.
Ask your agent
run_job with gpu: ["H100", "A100-80GB:2"] and capacity_wait_minutes: 60, then follows the logs once the job is running. get_job shows queue_reason and next_attempt_at while it waits.