stado submit
Invocation
stado submit [OPTIONS] --run-id <RUN_ID> <COMMAND>Purpose
Submit a job (or batch) to the queue
Required inputs and options
| Input or option | Contract |
|---|---|
<COMMAND> | Shell command the job runs |
--provider <PROVIDER> | Optional provider constraint (gcp/azure/aws/local); Stado chooses when omitted [default: ""] |
--batch <BATCH> | File with commands |
--spot | Dispatch on Spot/Preemptible GPUs (cheaper, can be preempted) |
--no-spot | Do not dispatch on Spot/Preemptible GPUs (default) |
--max-cost-per-hour <MAX_COST_PER_HOUR> | Hard cap on $/hour for the chosen accelerator. 0 = no cap [default: 0] |
--any-provider | If true (default), any consumer with capacity can claim |
--pin-provider | If --pin-provider, only the named --provider is allowed |
--priority <PRIORITY> | Higher = scheduled first within FIFO bucket [default: 0] |
--deadline-at <DEADLINE_AT> | Hard RFC 3339 completion deadline used by autonomous placement [default: ""] |
--repo <REPO> | Optional git URL to clone before running command (no auth) [default: ""] |
--repo-ref <REPO_REF> | Exact full lowercase commit to fetch; required with --repo [default: ""] |
--repo-workdir <REPO_WORKDIR> | Override cloned-repo dir; default = repo basename [default: ""] |
--repo-extras <REPO_EXTRAS> | pip extras to install on the clone; empty (the default) skips install [default: ""] |
--gpu-type <GPU_TYPE> | Pin the accelerator label (e.g. 'nvidia-l4', 'nvidia-a100-80gb'). Skips the --model regex inference. Resolves machine_type from GPU_SIZING unless --machine-type is also passed [default: ""] |
--vram-gb <VRAM_GB> | Caller-declared VRAM (GB). Picks the smallest SKU whose tier >= this value. Skips the --model regex inference [default: 0] |
--machine-type <MACHINE_TYPE> | Pin the GCE/Azure machine type verbatim (e.g. 'g2-standard-8'). Use for SKUs not in the wisent-compute catalog [default: ""] |
--pre-command <PRE_COMMAND> | Shell snippet placed before the command in the SAME bash shell. Use to export env vars (LD_LIBRARY_PATH, CUDA_VISIBLE_DEVICES, etc.) that the command will see [default: ""] |
--apt <APT> | Comma-separated apt package list. Installed via sudo apt-get on cloud-kind agents only — local-kind agents refuse the job for safety [default: ""] |
--output-uri <OUTPUT_URI> | Additional provider-neutral stado:// destination for job output. Additive — canonical status/<id>/output/ is always written too [default: ""] |
--verify <VERIFY> | Shell command that must exit 0 after the job succeeds; non-zero reverses COMPLETED->FAILED. Catches silent-success failure modes [default: ""] |
--exclusive | Claim the whole GPU. The worker starts this job only while idle and admits no other job until it finishes. Use for diffusion training and full finetunes whose peak VRAM cannot be safely shared |
--terminates-agent | The command ends by stopping the worker agent that runs it (an upgrade-then-restart maintenance job). The agent vanishing is then its success: the reapers record it completed instead of requeuing it |
--yieldable | Background job: the local worker may evict this job for a strictly-higher-priority queued job that does not otherwise fit. Requires --on-yield. The worker runs that hook (with WC_JOB_PID set), sends the job SIGTERM if it is still running, then requeues the job (resumes from wherever the hook saved state) |
--on-yield <ON_YIELD> | Save-and-sync command run when the agent yields this job. Responsible for telling the job to stop, persisting state + artifacts (server/GCS/HF), and letting it exit. Required with --yieldable. The agent sends the process group SIGTERM once the hook has finished and the job is still running [default: ""] |
--max-yields <MAX_YIELDS> | How often the worker may yield this job before it is protected. Required with --yieldable: Stado assumes no budget |
--boot-disk-gb <BOOT_DISK_GB> | Boot or container disk in GB for a machine rented to run this job. Without it no machine is rented for the job; a registered host may still run it |
--runtime-seconds-estimate <RUNTIME_SECONDS_ESTIMATE> | How many seconds the job runs, as the submitter knows it. Placement prices and orders the job by it until a completed run of the same model on that hardware is measured; without either, a priced placement is refused by name and the scheduler leaves the job unassigned |
--input-artifact <INPUT_ARTIFACTS> | Pinned artifact input as NAME=TYPE/NAMESPACE/NAME@VERSION_OR_ALIAS |
--secret-env <SECRET_ENV> | Scoped workload secret as ENV_NAME=SKARBIEC_ITEM#FIELD |
--profile <PROFILE> | Apply a named profile from the bundled profiles dir (or $WC_PROFILES_DIR). CLI flags override profile fields. Run `stado profiles` to list available profiles [default: ""] |
--pinned-host <PINNED_HOST> | Hard-pin this job to one consumer: a registry target name (resolved to kind-hostname) or a raw consumer_id. Only that consumer may claim the job; the makespan matcher never reassigns it [default: ""] |
--run-id <RUN_ID> | Stable caller-retained identity for exactly-once submission. Required: repeating the same run id and request returns the original jobs |
Output and state effect
It performs the operation described above and emits its operator result on standard output or standard error. Any state change is limited to the resources and records named by the purpose and options on this page.
Refusals
- Exact full lowercase commit to fetch; required with --repo [default: ""]
- Resolves machine_type from GPU_SIZING unless --machine-type is also passed [default: ""]
- Installed via sudo apt-get on cloud-kind agents only — local-kind agents refuse the job for safety [default: ""]
- Shell command that must exit 0 after the job succeeds; non-zero reverses COMPLETED->FAILED.
- Use for diffusion training and full finetunes whose peak VRAM cannot be safely shared
- Requires --on-yield.
- Required with --yieldable.
- Required with --yieldable: Stado assumes no budget
- Placement prices and orders the job by it until a completed run of the same model on that hardware is measured; without either, a priced placement is refused by name and the scheduler leaves the job unassigned
- Required: repeating the same run id and request returns the original jobs
- Before dispatch, Stado refuses a missing required token shown in the invocation, an unknown option, or a value outside a listed value set; argument-usage failures exit with code 2.