Workflow Submission#

OSMO offers two flexible ways to submit workflows: through the Web UI for quick, visual submissions, or via the CLI for advanced features and automation. Choose the method that best fits your needs.

🌐 Web Browser

Quick and intuitive. Perfect for getting started, prototyping, and monitoring workflows through a visual interface.

Submit via Web UI
💻 Command Line

Powerful and script-able. Essential for uploading local files, automating submissions, and integrating with CI/CD pipelines.

Submit via CLI

Submit via Web UI#

The Web UI provides the fastest way to submit and monitor workflows with an intuitive interface.

When to use:

  • ✅ Your workflow doesn’t require local files from your machine

  • ✅ You prefer point-and-click interactions

  1. Navigate to the OSMO web interface in your browser

  2. Click “Submit Workflow” or the + button

  3. Paste your workflow YAML definition or upload a workflow file

  4. Configure any parameters or select a compute pool

  5. Click Submit

Submitting a workflow via Web UI

See also

Try the Hello World tutorial for a guided walk-through of submitting your first workflow via the Web UI.


Submit via CLI#

The CLI unlocks advanced submission capabilities, especially for workflows that use local files or require automation.

When to use:

  • ✅ You need to upload local files or directories to your workflow

  • ✅ You want to automate workflow submissions in scripts or CI/CD pipelines

  • ✅ You need to continuously sync local changes to running tasks

  • ✅ You prefer working from the terminal

Note

For CLI installation and setup, see Install Client.

Basic Submission#

Submit a workflow from a YAML file:

$ osmo workflow submit my_workflow.yaml

Workflow submit successful.
Workflow ID        - my-workflow-1
Workflow Overview  - https://osmo.example.com/workflows/my-workflow-1

CLI-Exclusive Features#

Important

The following capabilities are only available via CLI and cannot be done through the Web UI.

Uploading Local Files#

Files can be injected directly into tasks using the files field with localpath:

tasks:
- name: train
  image: pytorch/pytorch
  command: ["python"]
  args: ["/workspace/train.py"]
  files:
  - localpath: scripts/train.py       # Local file from your machine
    path: /workspace/train.py         # Destination in the container
$ osmo workflow submit training.yaml
# The CLI automatically uploads scripts/train.py during submission

See also

See File Injection for more file injection options.

Continuous File Sync with Rsync#

Upload files continuously to a running task as they change on your local machine:

$ osmo workflow submit training.yaml --rsync ./code:/workspace

Workflow submit successful.
Workflow ID        - training-1
Workflow Overview  - https://osmo.example.com/workflows/training-1

Rsync daemon started in detached process: PID 12345
To view daemon logs: tail -f ~/.local/state/osmo/rsync/rsync_daemon_training-1_train.log

This is perfect for:

  • Active development - Edit code locally and have it instantly available in your running task

  • Iterative debugging - Update scripts without resubmitting the workflow

  • Live data feeds - Stream data files to long-running jobs

See also

See Rsync for detailed rsync usage and options.

Advanced CLI Options#

Parameterize Workflows#

Override workflow values at submission time:

$ osmo workflow submit train.yaml \
    --set learning_rate=0.001 \
    --set batch_size=32 \
    --set-string model_name="bert-base" \
    --set-env WANDB_PROJECT=my-experiment

Set Workflow Labels#

Add or override immutable workflow labels with repeatable --label key=value flags. A command-line value wins over the same key in the workflow YAML.

$ osmo workflow submit training.yaml \
    --label team=robotics \
    --label experiment=run42

The same flag works for app submission and resubmission by workflow ID (osmo workflow submit <workflow-id>). Restart does not accept label overrides because it reuses the stored specification; resubmit the workflow when a stored label must change.

Validate labels and any administrator policy without creating a workflow:

$ osmo workflow validate training.yaml --label team=robotics

If a label policy is in warn mode, the submission succeeds but prints a WARNING: line explaining what to change before the policy is enforced, for example:

WARNING: Workflow is missing label 'team'; add it now to avoid rejected
submissions once it is required.

In enforce mode the submission is rejected and the error identifies the missing key or disallowed value.

Find workflows with an exact label, a glob selector, an alternative selector, or a missing key:

$ osmo workflow list --label team=robotics --label experiment=run42
$ osmo workflow list --label 'project=robotics_*'
$ osmo workflow list --label 'project=(sim_*|hil_*)'
$ osmo workflow list --label 'team=robotics_(a|b)'
$ osmo workflow list --no-label team

Label selectors are case-sensitive. In a glob selector, * matches zero or more characters; every other character, including _, is literal. A parenthesized | group can appear within a selector and matches any one of its alternatives. Alternatives can contain * wildcards. Groups are flat (not nested), each group must contain at least two non-empty alternatives, and the alternatives in a selector may multiply out to at most 32 combinations. Quote pattern selectors so the shell does not interpret them.

Repeated --label filters are combined with AND, so every supplied selector must match. Alternatives within one selector are combined with OR. Pattern syntax applies only to workflow list filters; submission and validation labels must still contain exact Kubernetes label values.

Dry Run Validation#

Validate your workflow without actually submitting it:

$ osmo workflow submit training.yaml --dry-run
# Prints the rendered workflow specification without submitting

Target Specific Pools#

Submit to a specific compute pool:

$ osmo workflow submit training.yaml --pool gpu-pool-a100

Set Priority#

Control scheduling priority:

$ osmo workflow submit training.yaml --priority HIGH
# Options: HIGH, NORMAL, LOW

See also

For complete CLI reference, see submit.