id = "dstack" name = "dstack" homepage = "https://dstack.ai/" description = "ML workflow orchestration system designed for reproducibility and collaboration" executables = ["dstack"] [dotfiles] # The official CLI documentation names ~/.dstack/config.yml for the project, # token, and server settings. Server deployment docs name # ~/.dstack/server/config.yml for server/backend configuration. The SSH config # generated while attaching is ordinary connection configuration. # https://dstack.ai/docs/guides/cli-api/ # https://dstack.ai/docs/guides/server-deployment/ paths = ["~/.dstack/ssh/config"] secret = ["~/.dstack/config.yml", "~/.dstack/server/config.yml"] [commands] format = 1 label = "dstack" description = "Common dstack jobs: apply a configuration, list runs, show logs and stop a run. Configuration-specific apply options, fleets, gateways, volumes and secrets are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand]] path = ["apply"] label = "Apply a configuration" [[commands.subcommand.source]] id = "help" kind = "help" url = "https://dstack.ai/docs/reference/cli/dstack/apply/" revision = "dstack apply --help" evidence = """ Usage: dstack apply [--project NAME] [-h [TYPE]] [-f FILE] [-y] [--force] [-d] --project NAME The name of the project. Defaults to $DSTACK_PROJECT -f, --file FILE The path to the configuration file. Specify - to read -y, --yes Do not ask for confirmation --force Force apply when no changes detected -d, --detach Exit immediately after submitting configuration -v, --verbose Show all plan properties including those with default """ [[commands.subcommand.field]] id = "file" label = "Configuration file" description = "Defaults to .dstack.yml in the current directory." type = "path" option = ["--file", "-f"] path = { kind = "file", role = "input", must_exist = true } sources = ["help"] [[commands.subcommand.field]] id = "project" label = "Project" type = "string" option = ["--project"] sources = ["help"] [[commands.subcommand.field]] id = "yes" label = "Do not ask for confirmation" type = "boolean" option = ["--yes", "-y"] sources = ["help"] [[commands.subcommand.field]] id = "detach" label = "Detach after submitting" type = "boolean" option = ["--detach", "-d"] sources = ["help"] [[commands.subcommand.field]] id = "force" label = "Force apply" description = "Apply even when no changes are detected." type = "boolean" option = ["--force"] sources = ["help"] [[commands.subcommand.field]] id = "verbose" label = "Show all plan properties" type = "boolean" option = ["--verbose", "-v"] sources = ["help"] [[commands.subcommand.task]] id = "apply" label = "Apply a configuration" fields = ["file", "project", "yes", "detach"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["file", "project", "yes", "detach"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["force", "verbose"] [[commands.subcommand]] path = ["ps"] label = "List runs" [[commands.subcommand.source]] id = "help" kind = "help" url = "https://dstack.ai/docs/reference/cli/dstack/ps/" revision = "dstack ps --help" evidence = """ Usage: dstack ps [-h] [--project NAME] [-a] [-v] [-w] [-n LAST] --project NAME The name of the project. Defaults to $DSTACK_PROJECT -a, --all Show all runs. By default, it only shows unfinished -v, --verbose Show more information about runs -w, --watch Watch statuses of runs in realtime -n, --last LAST Show only the last N runs. Implies --all --json Output in JSON format (equivalent to --format json) """ [[commands.subcommand.field]] id = "project" label = "Project" type = "string" option = ["--project"] sources = ["help"] [[commands.subcommand.field]] id = "all" label = "Show all runs" type = "boolean" option = ["--all", "-a"] sources = ["help"] [[commands.subcommand.field]] id = "last" label = "Last N runs" type = "integer" option = ["--last", "-n"] sources = ["help"] [[commands.subcommand.field]] id = "verbose" label = "Verbose" type = "boolean" option = ["--verbose", "-v"] sources = ["help"] [[commands.subcommand.field]] id = "watch" label = "Watch in real time" type = "boolean" option = ["--watch", "-w"] sources = ["help"] [[commands.subcommand.field]] id = "json" label = "JSON output" type = "boolean" option = ["--json"] sources = ["help"] [[commands.subcommand.task]] id = "ps" label = "List runs" fields = ["all", "last", "watch", "json"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["all", "last", "watch", "verbose", "json", "project"] [[commands.subcommand]] path = ["logs"] label = "Show run logs" [[commands.subcommand.source]] id = "help" kind = "help" url = "https://dstack.ai/docs/reference/cli/dstack/logs/" revision = "dstack logs --help" evidence = """ Usage: dstack logs [-h] [--project NAME] [-d] [--replica REPLICA] [--job JOB] [--since SINCE] run_name --project NAME The name of the project. Defaults to $DSTACK_PROJECT -d, --diagnose Show run diagnostic logs --replica REPLICA The replica number. Defaults to 0. --job JOB The job number inside the replica. Defaults to 0. --since SINCE Show only logs newer than the specified date. Can be a duration (e.g. 10s, 5m, 1d) or an RFC 3339 string (e.g. """ [[commands.subcommand.field]] id = "run_name" label = "Run name" type = "string" position = 0 min = 1 sources = ["help"] [[commands.subcommand.field]] id = "since" label = "Since" description = "A duration such as 10s, 5m, 1d, or an RFC 3339 timestamp." type = "string" option = ["--since"] sources = ["help"] [[commands.subcommand.field]] id = "diagnose" label = "Diagnostic logs" type = "boolean" option = ["--diagnose", "-d"] sources = ["help"] [[commands.subcommand.field]] id = "replica" label = "Replica number" type = "integer" option = ["--replica"] sources = ["help"] [[commands.subcommand.field]] id = "job" label = "Job number" type = "integer" option = ["--job"] sources = ["help"] [[commands.subcommand.field]] id = "project" label = "Project" type = "string" option = ["--project"] sources = ["help"] [[commands.subcommand.task]] id = "logs" label = "Show logs" fields = ["run_name", "since", "diagnose"] required = ["run_name"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["run_name", "since", "diagnose"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["replica", "job", "project"] [[commands.subcommand]] path = ["stop"] label = "Stop a run" [[commands.subcommand.source]] id = "help" kind = "help" url = "https://dstack.ai/docs/reference/cli/dstack/stop/" revision = "dstack stop --help" evidence = """ Usage: dstack stop [-h] [--project NAME] [-x] [-y] run_name --project NAME The name of the project. Defaults to $DSTACK_PROJECT -x, --abort -y, --yes """ [[commands.subcommand.field]] id = "run_name" label = "Run name" type = "string" position = 0 min = 1 sources = ["help"] [[commands.subcommand.field]] id = "abort" label = "Abort instead of stopping gracefully" type = "boolean" option = ["--abort", "-x"] effect = "exec" sources = ["help"] [[commands.subcommand.field]] id = "yes" label = "Do not ask for confirmation" type = "boolean" option = ["--yes", "-y"] sources = ["help"] [[commands.subcommand.field]] id = "project" label = "Project" type = "string" option = ["--project"] sources = ["help"] [[commands.subcommand.task]] id = "stop" label = "Stop a run" fields = ["run_name", "yes"] required = ["run_name"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["run_name", "abort", "yes", "project"]