Skip to main content

Operators

An operator defines how a task is launched (locally, via srun, inside a container, etc.).

If a task does not set operator: ..., sflow chooses a backend-specific default:

  • local backend → bash
  • slurm backend → srun

Define an operator and reference it from tasks

Example with a containerized srun operator:

version: "0.1"

backends:
- name: slurm_cluster
type: slurm
default: true
account: ${{ variables.SLURM_ACCOUNT }}
partition: ${{ variables.SLURM_PARTITION }}
time: ${{ variables.SLURM_TIME }}
nodes: ${{ variables.SLURM_NODES }}

operators:
- name: slurm_container_py
type: srun
container_image: python:3.13-slim
container_name: slurm_container_py
container_writable: true
container_mount_home: false

workflow:
name: http_echo_slurm_container
tasks:
- name: echo_server
operator: slurm_container_py
script:
- python -c 'print("server")'

Task-level operator overrides (deeper)

You can also use the object form to override operator settings for a single task:

operator:
name: slurm_container_py
# operator-specific overrides go here (for srun: ntasks, nodes, extra_args, ...)