Submitting Jobs¶
Use execute() to submit a job and wait for the result:
from armnet_client import execute
result = execute(
image="registry.example/my-runtime:tag",
embodiment="lerobot/so-101",
task="push_green_button",
args={"calibrate": False},
timeout_seconds=1200,
)
Arguments¶
All arguments are keyword-only.
| Argument | Default | Purpose |
|---|---|---|
image |
(required) | Image ref, usually returned by Image.build(...).push(). |
embodiment |
(required) | Robot embodiment used for cell routing. |
task |
None |
Task used for cell routing. Omit to let any cell of that embodiment run the job. |
args |
None |
JSON-serializable values exposed as ctx.args. |
secrets |
None |
Mapping of env var name to armnet secret name. |
detach |
False |
When False, disconnecting the client requests job cancellation. |
stream_logs |
True |
Stream container stdout/stderr to your terminal. |
use_rerun |
False |
Replay the job's ctx.log_rerun_data packets into a local Rerun viewer. |
timeout_seconds |
120 |
Max container runtime. Raise this for evals — the default is only enough for a smoke test. |
allow_queue |
True |
Queue the job when no cell is free instead of failing immediately. |
Cell Routing¶
Jobs are routed to robot cells by (embodiment, task). See
Environments and Tasks for the task list and what
each environment guarantees about scoring, resets, and availability.
If no matching cell is online the job queues rather than failing, so a manual-environment job can sit for days before an operator picks it up. Check availability first when that matters:
from armnet_client import OrchestratorClient
print(OrchestratorClient().get_cell_status(
embodiment="lerobot/so-101",
task="push_green_button",
))
Manual-environment tasks always queue, even when their cell is available. An
operator must first stage the physical scene and then press Dispatch in the
FMS. Use detach=True for these submissions. Passing allow_queue=False
rejects a manual task rather than bypassing the setup requirement. Teleoperation
and recording set skip_operator_dispatch so they start immediately instead.
For LeRobot policy evaluation, prefer the higher-level
armnet-lerobot-eval command. It wraps Image.build, Image.push, and
execute with a LeRobot-like CLI.