jobd_submit
Submit shell commands as jobs to a distributed broker. Queue and route tasks across GPU-capable workers with support for synchronous waiting, job arrays, and parameter sweeps.
Instructions
Submit a job to the jobd broker. Default async; pass wait=true to block up to wait_timeout_s (server clamps to 270).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command run by the worker shell. | |
| project | Yes | Priority lookup key; falls back to _default. | |
| cwd | Yes | Absolute path; broker validates against worker mount_roots. | |
| needs | No | Tool tags (R, python3, cuda). | |
| gpu | No | Pin to GPU-capable worker. | |
| host | No | Host alias pin (laptop, desktop-vm). | |
| wait | No | Sync mode: block until terminal or timeout. For an array submit (count/sweep), waits on every member under one shared deadline and returns an aggregate {array_id, count, job_ids, states, all_completed, members:[{job_id, state, exit_code}]}. | |
| wait_timeout_s | No | Seconds; permissive — server clamps to 270. | |
| dry_run | No | Preview mode: run full validation + routing decision (profile, project defaults, cwd, depends_on, preflight, gpu_contention) and return the would-be plan WITHOUT queueing. Response has state='dry-run', would_route_to (list[host]), would_use_worker (host or null), validation (resolved fields + warnings). Per dry-run convention 2026-05-18. | |
| extra | No | Escape hatch: idempotent (bool), depends_on (int[]), depends_on_any_exit (bool), priority (int delta), max_wall_s (int), idle_timeout_s (int), checkpoint_grace_s (int 1..300), vram_gb (float — explicit GPU VRAM the job needs at dispatch; falls back to cuda-Ngb tier-tag max, then to 2 GB floor for --gpu jobs), count (int 1..1000 — submit a job array of N members, with `{i}` in the command replaced by the 0-based index; response is {array_id, count, job_ids, warnings} instead of a single job), sweep (list of {key, values[]} — parameter-sweep axes; broker fans out the cartesian product, substituting `{key}` per member plus `{i}`; mutually exclusive with count; product capped at 1000), profile (str), env (dict), preemptible (bool). |