CLI reference

Installation

  • Global CLI (uv):

    uv tool install flow-compute
  • Global CLI (pipx):

    pipx install flow-compute

Overview

Flow CLI & SDK - Submit and manage GPU tasks. Flow helps you provision GPU instances/clusters, run workloads from YAML or command, and monitor/manage tasks end-to-end.

Usage: flow [OPTIONS] COMMAND [ARGS]...

Global Options:

  • -V, --version - Show version and exit

  • -h, --help - Show this message and exit

  • --all - Display full command list in help output

  • --mode [infra|research] - Switch mode


Getting Started

flow setup

Configure credentials and provider settings

Usage: flow setup [OPTIONS]

Options:

  • --provider TEXT - Provider to use

  • --api-key TEXT - API key for authentication

  • --project TEXT - Project name

  • --api-url TEXT - API endpoint URL

  • --dry-run - Show configuration without saving

  • --output FILE - Write dry-run YAML to file (with --dry-run)

  • -v, --verbose - Show detailed setup information

  • --reset - Reset configuration to start fresh

  • --show - Print current resolved configuration and exit

  • --yes - Non-interactive; answer yes to prompts (CI)

  • -h, --help - Show this message and exit


flow docs

Show links to the Flow/Mithril documentation

Usage: flow docs [OPTIONS]

Options:

  • --verbose - Show additional popular documentation links

  • --no-open - Don't automatically open browser

  • -h, --help - Show this message and exit


Compute

flow instance

Manage compute instances

Usage: flow instance [OPTIONS] COMMAND [ARGS]...

Options:

  • -h, --help - Show this message and exit

flow instance create

Create a new compute instance

Usage: flow instance create [OPTIONS] [CONFIG_FILE] [EXTRA_ARGS]...

Options:

  • -i, --instance-type TEXT - GPU instance type (e.g., a100, 8xa100, h100)

  • -r, --region TEXT - Preferred region (e.g., us-west1-b)

  • -k, --ssh-keys TEXT - Authorized SSH keys (repeatable)

  • --image TEXT - Docker image to use (default: nvidia/cuda:12.1.0-runtime-ubuntu22.04)

  • -n, --name TEXT - Task name (default: auto-generated)

  • --no-unique - Don't append unique suffix to task name

  • -p, --priority [low|med|high] - Task priority (low/med/high)

  • --force-new - Force unique task name by appending a suffix

  • --wait / --no-wait - Wait for task to start running

  • -d, --dry-run - Validate configuration without submitting

  • -w, --watch - Watch task progress interactively

  • --json - Output JSON for automation

  • --env KEY=VALUE - Environment variables KEY=VALUE (repeatable)

  • --pricing - Show pricing details in the config table

  • --slurm - Treat input as a SLURM script

  • --mount TEXT - Mount storage (format: source or target=source)

  • --port PORT - Expose a port (repeatable). High ports only (>=1024)

  • --upload-strategy [auto|embedded|scp|none] - Code upload strategy: auto (default), embedded, scp, or none

  • --upload-timeout INTEGER - Upload timeout in seconds (default: 600)

  • --on-upload-failure [continue|fail] - Policy when code upload fails: continue (default) or fail

  • --upload-code / --no-upload-code - Upload current working directory to the task

  • -m, --max-price-per-hour FLOAT - Maximum hourly price in USD

  • -N, --num-instances INTEGER - Number of instances

  • --distributed [auto|manual] - Distributed rendezvous mode

  • -v, --verbose - Show detailed configuration guide

  • -h, --help - Show this message and exit

flow instance delete

Delete compute instances - pattern matching uses wildcards by default

Usage: flow instance delete [OPTIONS] [TASK_IDENTIFIER]

Options:

  • -y, --yes - Skip confirmation prompt

  • --all - Cancel all running tasks

  • -n, --name-pattern TEXT - Cancel tasks matching wildcard pattern (e.g., 'dev-', '-gpu-8x*', 'train-v?'). Use --regex for regex

  • --regex - Treat pattern as regex instead of wildcard

  • -v, --verbose - Show detailed examples and patterns

  • --interactive / --no-interactive - Force interactive selector on/off regardless of terminal autodetect

  • -h, --help - Show this message and exit

flow instance info

Show detailed information about a specific instance

Usage: flow instance info [OPTIONS] [TASK_IDENTIFIER]

Options:

  • --all - Show all tasks (default: active tasks only)

  • -s, --state [pending|open|starting|running|paused|preempting|completed|failed|cancelled] - Filter by task status

  • --limit INTEGER - Maximum number of tasks to show

  • --force-refresh - Bypass local caches and fetch fresh task data from provider

  • --json - Output JSON for automation

  • --since TEXT - Only tasks created since time (e.g., '2h', '2025-08-07T10:00:00Z')

  • --until TEXT - Only tasks created until time (same formats as --since)

  • -v, --verbose - Show detailed status information and filtering examples

  • -w, --watch - Live update the status display

  • --compact - Compact allocation view

  • --refresh-rate FLOAT - Refresh rate in seconds for watch mode (default: 3)

  • --no-origin-group - Disable Flow/Other grouping in main view

  • -h, --help - Show this message and exit

flow instance list

List and monitor GPU compute tasks - filter by status, name, or time

Usage: flow instance list [OPTIONS] [TASK_IDENTIFIER]

Options:

  • --all - Show all tasks (default: active tasks only)

  • -s, --state [pending|open|starting|running|paused|preempting|completed|failed|cancelled] - Filter by task status

  • --limit INTEGER - Maximum number of tasks to show

  • --force-refresh - Bypass local caches and fetch fresh task data from provider

  • --json - Output JSON for automation

  • --since TEXT - Only tasks created since time (e.g., '2h', '2025-08-07T10:00:00Z')

  • --until TEXT - Only tasks created until time (same formats as --since)

  • -v, --verbose - Show detailed status information and filtering examples

  • -w, --watch - Live update the status display

  • --compact - Compact allocation view

  • --refresh-rate FLOAT - Refresh rate in seconds for watch mode (default: 3)

  • --no-origin-group - Disable Flow/Other grouping in main view

  • -h, --help - Show this message and exit


flow volume

Manage persistent storage volumes

Usage: flow volume [OPTIONS] COMMAND [ARGS]...

Options:

  • -h, --help - Show this message and exit

flow volume list

List all volumes

Usage: flow volume list [OPTIONS]

Options:

  • -d, --details - Show which tasks use each volume

  • --json - Output JSON for automation

  • --region TEXT - Filter volumes by region (default: all)

  • -h, --help - Show this message and exit

flow volume create

Create a new volume

Usage: flow volume create [OPTIONS]

Options:

  • -s, --size INTEGER - Volume size in GB

  • -n, --name TEXT - Optional name for the volume

  • -i, --interface [block|file] - Storage interface type (block or file)

  • --region TEXT - Region to create the volume in

  • -y, --yes - Skip confirmation prompts

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit

flow volume info

Show detailed information about a volume

Usage: flow volume info [OPTIONS] VOLUME_IDENTIFIER

Options:

  • --json - Output JSON for automation

  • -d, --details - Also show tasks that reference this volume in their config

  • --scan-limit INTEGER - Max tasks to scan for --details (default: 200; override via env FLOW_VOLUMES_DETAILS_LIMIT)

  • --scan-timeout FLOAT - Max seconds to spend scanning for --details (default: 3.0; override via env FLOW_VOLUMES_DETAILS_TIMEOUT)

  • -h, --help - Show this message and exit

flow volume delete

Delete a volume by ID, name, or 'all'

Usage: flow volume delete [OPTIONS] VOLUME_IDENTIFIER

Options:

  • -y, --yes - Skip confirmation

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit

flow volume delete-all

Delete all volumes (with optional pattern matching)

Usage: flow volume delete-all [OPTIONS]

Options:

  • -p, --pattern TEXT - Only delete volumes matching pattern

  • --dry-run - Show what would be deleted

  • -y, --yes - Skip confirmation

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit

flow volume mount

Alias for 'flow mount' – attach a volume to an instance

Usage: flow volume mount [OPTIONS] [VOLUME_IDENTIFIER] [TASK_IDENTIFIER]

Options:

  • -h, --help - Show this message and exit


flow ssh-key

Manage SSH keys

Usage: flow ssh-key [OPTIONS] COMMAND [ARGS]...

Options:

  • -v, --verbose - Show detailed SSH key management guide

  • -h, --help - Show this message and exit

flow ssh-key list

List SSH keys and their state in a simplified, intuitive view

Usage: flow ssh-key list [OPTIONS]

Options:

  • --show-auto - Show auto-generated keys (hidden by default)

  • --legend - Show a legend explaining columns and icons

  • -v, --verbose - Show file paths and detailed information

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit

flow ssh-key upload

Upload a specific SSH key to the platform

Usage: flow ssh-key upload [OPTIONS] KEY_PATH

Options:

  • --name TEXT - Name for the SSH key on platform (skips interactive prompt)

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit

flow ssh-key info

Show detailed information about an SSH key

Usage: flow ssh-key info [OPTIONS] KEY_REFERENCE

Options:

  • -v, --verbose - Show full public key

  • -h, --help - Show this message and exit

flow ssh-key delete

Delete an SSH key from the platform

Usage: flow ssh-key delete [OPTIONS] KEY_REFERENCE

Options:

  • -h, --help - Show this message and exit

flow ssh-key require

Mark an SSH key as required (admin only)

Usage: flow ssh-key require [OPTIONS] KEY_REFERENCE

Options:

  • --unset - Unset required (make key optional)

  • -h, --help - Show this message and exit


Monitoring

flow pricing

Show market prices and recommendations

Usage: flow pricing [OPTIONS]

Options:

  • --market - (No-op) Market summary is shown by default

  • --region TEXT - Filter market by region (e.g., us-central1-b)

  • --gpu TEXT - Filter to a GPU (e.g., h100, a100)

  • --gpus INTEGER - Target GPU count for per-instance limit prices

  • --list - List raw market instances (verbose)

  • --explain - Explain recommendations (verbose)

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit


Utils

flow ssh

SSH to running GPU instances - Interactive shell or remote command execution

Usage: flow ssh [OPTIONS] [INSTANCE_IDENTIFIER] [REMOTE_CMD]...

Options:

  • --node INTEGER - Node index for multi-instance tasks (remote commands default to all nodes; interactive default is 0)

  • -v, --verbose - Show detailed help and examples

  • --json - Output connection parameters as JSON

  • --fast - Skip readiness wait; prefer cached endpoint and connect immediately

  • -h, --help - Show this message and exit


Settings

flow theme

Manage CLI color themes (set, get, list)

Usage: flow theme [OPTIONS] COMMAND [ARGS]...

Options:

  • -h, --help - Show this message and exit

flow theme choose

Interactively choose a theme with live preview

Usage: flow theme choose [OPTIONS]

Options:

  • -h, --help - Show this message and exit

flow theme clear

Remove persisted theme and return to auto-detect

Usage: flow theme clear [OPTIONS]

Options:

  • -h, --help - Show this message and exit

flow theme get

Show the currently configured theme

Usage: flow theme get [OPTIONS]

Options:

  • -h, --help - Show this message and exit

flow theme list

List available themes

Usage: flow theme list [OPTIONS]

Options:

  • -h, --help - Show this message and exit

flow theme set

Persist a default theme (overrides auto-detect)

Usage: flow theme set [OPTIONS] NAME

Options:

  • -h, --help - Show this message and exit


flow update

Update Flow to the latest version

Usage: flow update [OPTIONS]

Options:

  • --check - Check for updates without installing

  • --force - Force update even if on latest version

  • --version TEXT - Install specific version

  • -y, --yes - Skip confirmation prompt

  • --json - Output in JSON format

  • --unstable - Include pre-release versions (alpha, beta, rc)

  • -h, --help - Show this message and exit

Research Mode

flow dev

Persistent dev VM with isolated container environments

Usage: flow dev [OPTIONS] COMMAND [ARGS]...

Options:

  • -e, --env TEXT - Environment: 'default' (VM) or named (container)

  • -i, --instance-type TEXT - Instance type for dev VM (e.g., a100, h100). If an existing dev VM has a different instance type, a new dev VM is created instead of reusing

  • -r, --region TEXT - Preferred region for the dev VM (e.g., us-central1-b)

  • --image TEXT - Docker image for container execution

  • -k, --ssh-keys TEXT - Authorized SSH keys (repeatable). Accepts: platform key ID like 'sshkey_ABC123', a local private key path like '~/.ssh/id_ed25519', or a key name like 'id_ed25519'

  • --force-new - Force creation of new dev VM

  • -m, --max-price-per-hour FLOAT - Maximum hourly price in USD

  • --upload / --no-upload - Upload current directory to VM (default: upload)

  • --upload-path TEXT - Path to upload (default: current directory)

  • --no-unique - Don't append unique suffix to VM name on conflict

  • --flat / --nested - Place current dir contents directly into parent (flat). Default uploads into '~/'

  • -v, --verbose - Show detailed examples and workflows

  • -h, --help - Show this message and exit

flow dev info

Show dev environment status

Usage: flow dev info [OPTIONS]

Options:

  • -h, --help - Show this message and exit

flow dev reset

Reset all dev containers

Usage: flow dev reset [OPTIONS]

Options:

  • -h, --help - Show this message and exit

flow dev stop

Pause the dev VM (preserves boot disk)

Usage: flow dev stop [OPTIONS]

Options:

  • -h, --help - Show this message and exit


flow submit

Submit a task from YAML configuration

Usage: flow submit [OPTIONS] [CONFIG_FILE] [EXTRA_ARGS]...

Options:

  • -i, --instance-type TEXT - GPU instance type (e.g., a100, 8xa100, h100)

  • -r, --region TEXT - Preferred region (e.g., us-west1-b)

  • -k, --ssh-keys TEXT - Authorized SSH keys (repeatable)

  • --image TEXT - Docker image to use (default: nvidia/cuda:12.1.0-runtime-ubuntu22.04)

  • -n, --name TEXT - Task name (default: auto-generated)

  • --no-unique - Don't append unique suffix to task name

  • -p, --priority [low|med|high] - Task priority (low/med/high)

  • --force-new - Force unique task name by appending a suffix

  • --wait / --no-wait - Wait for task to start running

  • -d, --dry-run - Validate configuration without submitting

  • -w, --watch - Watch task progress interactively

  • --json - Output JSON for automation

  • --env KEY=VALUE - Environment variables KEY=VALUE (repeatable)

  • --pricing - Show pricing details in the config table

  • --slurm - Treat input as a SLURM script

  • --mount TEXT - Mount storage (format: source or target=source)

  • --port PORT - Expose a port (repeatable). High ports only (>=1024)

  • --upload-strategy [auto|embedded|scp|none] - Code upload strategy: auto (default), embedded, scp, or none

  • --upload-timeout INTEGER - Upload timeout in seconds (default: 600)

  • --on-upload-failure [continue|fail] - Policy when code upload fails: continue (default) or fail

  • --upload-code / --no-upload-code - Upload current working directory to the task

  • -m, --max-price-per-hour FLOAT - Maximum hourly price in USD

  • -N, --num-instances INTEGER - Number of instances

  • --distributed [auto|manual] - Distributed rendezvous mode

  • -v, --verbose - Show detailed configuration guide

  • -h, --help - Show this message and exit


flow cancel

Cancel GPU tasks - pattern matching uses wildcards by default

Usage: flow cancel [OPTIONS] [TASK_IDENTIFIER]

Options:

  • -y, --yes - Skip confirmation prompt

  • --all - Cancel all running tasks

  • -n, --name-pattern TEXT - Cancel tasks matching wildcard pattern (e.g., 'dev-', '-gpu-8x*', 'train-v?'). Use --regex for regex

  • --regex - Treat pattern as regex instead of wildcard

  • -v, --verbose - Show detailed examples and patterns

  • --interactive / --no-interactive - Force interactive selector on/off regardless of terminal autodetect

  • -h, --help - Show this message and exit


flow status

List and monitor GPU compute tasks - filter by status, name, or time

Usage: flow status [OPTIONS] [TASK_IDENTIFIER]

Options:

  • --all - Show all tasks (default: active tasks only)

  • -s, --state [pending|open|starting|running|paused|preempting|completed|failed|cancelled] - Filter by task status

  • --limit INTEGER - Maximum number of tasks to show

  • --force-refresh - Bypass local caches and fetch fresh task data from provider

  • --json - Output JSON for automation

  • --since TEXT - Only tasks created since time (e.g., '2h', '2025-08-07T10:00:00Z')

  • --until TEXT - Only tasks created until time (same formats as --since)

  • -v, --verbose - Show detailed status information and filtering examples

  • -w, --watch - Live update the status display

  • --compact - Compact allocation view

  • --refresh-rate FLOAT - Refresh rate in seconds for watch mode (default: 3)

  • --no-origin-group - Disable Flow/Other grouping in main view

  • -h, --help - Show this message and exit


flow logs

Get logs from a running task

Usage: flow logs [OPTIONS] [TASK_IDENTIFIER]

Options:

  • -f, --follow - Follow log output

  • -n, --tail INTEGER - Number of lines to show

  • --stderr - Show stderr instead of stdout

  • --source [auto|container|startup|cloud-init|host|both|all] - Log source: 'container' for task logs, 'startup' for startup script, 'cloud-init' for raw cloud-init output, 'host' for system logs, 'both/all' for combined container logs, or 'auto' to pick sensibly

  • --stream [stdout|stderr|combined] - Which stream to show (overrides --stderr)

  • --node INTEGER - Specific node (0-indexed) for multi-instance tasks

  • --since TEXT - Show logs since timestamp (e.g., '5m', '1h', '2024-01-15T10:00:00')

  • --grep TEXT - Filter lines matching pattern

  • --no-prefix - Remove node prefix for single-node or piping

  • --full-prefix - Use full node prefix (e.g., [node-0] instead of [0])

  • --json - Output JSON for automation

  • -v, --verbose - Show detailed examples and usage patterns

  • -h, --help - Show this message and exit


flow upload-code

Upload local code to running tasks - incremental sync via rsync

Usage: flow upload-code [OPTIONS] [TASK_IDENTIFIER]

Options:

  • -s, --source DIRECTORY - Source directory to upload (default: current directory)

  • -t, --timeout INTEGER - Upload timeout in seconds (default: 600)

  • --dest TEXT - Destination directory on the instance. Default is /workspace/ when writable, otherwise ~/{project}

  • -v, --verbose - Show detailed upload patterns and troubleshooting

  • --json - Output JSON for automation

  • --incremental / --full-scan - Use Git to detect changed/untracked files and only upload those (default: full scan). Requires a Git repository

  • --prepare-absolute - Use sudo -n to prepare absolute destinations (mkdir/chown) when unwritable. Defaults to config/env when omitted

  • --node INTEGER - Node index for multi-instance tasks (default: 0)

  • -A, --all-nodes - Upload to all nodes of a multi-instance task

  • -h, --help - Show this message and exit


flow jupyter

Start Jupyter notebook server on remote task with SSH tunnel

Usage: flow jupyter [OPTIONS] TASK_IDENTIFIER

Options:

  • --port INTEGER - Local port for SSH tunnel (default: 8888)

  • --no-open - Don't automatically open browser

  • --jupyter-port INTEGER - Remote Jupyter port (default: 8888)

  • -h, --help - Show this message and exit


flow mount

Attach storage volumes to tasks (may require machine restart to take effect)

Usage: flow mount [OPTIONS] [VOLUME_IDENTIFIER] [TASK_IDENTIFIER]

Options:

  • -v, --volume TEXT - Volume ID or name to mount

  • -t, --task TEXT - Task ID or name to mount to

  • -i, --instance INTEGER - Specific instance index (0-based) for multi-instance tasks (not yet supported)

  • -m, --mount-point TEXT - Custom mount path on the instance (default: /volumes/{volume_name})

  • --dry-run - Preview the mount operation without executing

  • -V, --verbose - Show detailed mount workflows and troubleshooting

  • --wait / --no-wait - Wait for SSH and verify the mount before exiting (default: wait)

  • --persist - Attempt to persist the mount in /etc/fstab after verification

  • -y, --yes - Skip confirmation when attaching to a running instance (may pause VM)

  • --json - Output JSON for automation

  • -h, --help - Show this message and exit


flow template

Generate editable YAML templates (minimal or full)

Usage: flow template [OPTIONS] COMMAND [ARGS]...

Options:

  • -h, --help - Show this message and exit

flow template task

Generate a Task YAML template

Usage: flow template task [OPTIONS]

Options:

  • --full - Generate full, commented template

  • -o, --output FILE - Write to file

  • --force - Overwrite existing output file

  • --name TEXT - Seed task name

  • --no-unique - Set unique_name: false

  • -i, --instance TEXT - Seed instance_type (e.g., h100, 8xh100)

  • --min-gpu-mem INTEGER - Seed min_gpu_memory_gb (mutually exclusive with --instance)

  • -c, --command TEXT - Seed command (multi-line supported)

  • --image TEXT - Seed image

  • --env TEXT - Seed environment variables as KEY=VALUE (repeatable)

  • --port INTEGER - Seed ports (repeatable, high ports only)

  • --priority [low|med|high] - Seed priority

  • --max-price-per-hour FLOAT - Seed max_price_per_hour (USD)

  • -h, --help - Show this message and exit


Learn

flow ask

Ask questions about the Mithril marketplace

Usage: flow ask [OPTIONS] QUESTION

Options:

  • --verbose - Show detailed execution information

  • --json - Output response as JSON

  • -h, --help - Show this message and exit


flow example

Run ready-to-run starters and view their configurations

Usage: flow example [OPTIONS] [EXAMPLE_NAME]

Options:

  • --show - Show starter YAML configuration instead of running

  • -v, --verbose - Show detailed starter descriptions

  • -y, --yes - Skip confirmation prompt (resource launch)

  • -h, --help - Show this message and exit

Last updated