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.
Quick and intuitive. Perfect for getting started, prototyping, and monitoring workflows through a visual interface.
Powerful and script-able. Essential for uploading local files, automating submissions, and integrating with CI/CD pipelines.
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
Navigate to the OSMO web interface in your browser
Click “Submit Workflow” or the + button
Paste your workflow YAML definition or upload a workflow file
Configure any parameters or select a compute pool
Click Submit
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.
Uploading Local Directories#
Large datasets or directories can be uploaded as dataset inputs:
tasks:
- name: preprocess
image: python:3.10
inputs:
- dataset:
name: my-bucket/training-data
localpath: ./data # Upload entire local directory
$ ls data/
train/ validation/ test/
$ osmo workflow submit preprocess.yaml
# The CLI uploads the entire data/ directory to the dataset
Caution
Local file uploads happen during submission. For continuously updating files, use the rsync feature instead.
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
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.