Skip to main content
The truss loops command provides subcommands for the Loops deployment lifecycle: pushing a run for a base model, viewing runs and samplers, reporting GPU usage, and listing or deploying checkpoints from a run.

push

Provision a Loops session, run, and paired sampler for a base model. If the project already has an active Loops deployment for the base model, the command fails with a validation error.

Arguments

TEXT
required
Hugging Face model ID for the base model (for example, Qwen/Qwen3-8B).

Options

TEXT
Training project ID to associate the deployment with.
INTEGER
Number of data-parallel trainer replicas to provision. The trainer deployment runs this many copies of the base model’s preset node group (for example, --replicas 4 on a 4-node preset provisions 16 nodes across 4 data-parallel workers). Must be a positive integer; defaults to 1.
TEXT
Name of the remote in .trussrc to deploy to.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example:

deactivate

Deactivate a Loops run, tearing down both of its halves: the trainer and its paired sampler. Saved checkpoints remain accessible after deactivation. Identify the run with --run-id, using the run ID from truss loops view.

Arguments

TEXT
deprecated
Passing a Loops deployment ID as a positional argument is deprecated; use --run-id instead.

Options

TEXT
Loops run ID to deactivate.
TEXT
Name of the remote in .trussrc.
Skip the confirmation prompt.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example:

view

List Loops runs. Each row is a single run, keyed by its run ID, with a run-level status. Lists your own runs by default; pass --org to list every run in your organization, which adds an Owner column to the output. The command hides inactive runs unless you pass --all.

Options

TEXT
Name of the remote in .trussrc.
Include inactive runs.
List every Loops run in your organization (with its owner), not just your own.
Reverse the default order (oldest first) so the most recent run is shown first.
cli-table | json
default:"cli-table"
Output format: cli-table (default) or json.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example:
The command prints one row per run with the run ID, base model, run-level status, and creation time, ordered oldest first; pass --reverse to show the most recent run first.

logs

Fetch logs for a Loops run. Identify the run with --run-id; by default this fetches the run’s trainer logs, and --sampler fetches the paired sampler’s logs instead. The two halves have separate log streams. Get run IDs from truss loops view.

Options

TEXT
Loops run ID to fetch logs for.
With —run-id, tail the paired sampler’s logs instead of the run’s trainer logs. The two halves have separate log streams.
TEXT
deprecated
Use —run-id to fetch the run’s trainer logs; this will be removed in a future release.
TEXT
deprecated
Use —run-id —sampler instead; this will be removed in a future release. Fetch logs from the sampler’s inference deployment by ID.
Continue polling for new log lines until the deployment goes inactive (or Ctrl+C).
TEXT
Remote to use.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Customizes logging.
Disables interactive prompts, use in CI / automated execution contexts.
Examples:
Stream the sampler’s logs and keep polling until the deployment goes inactive:
The deprecated --loops-deployment-id and --sampler-deployment-id flags fetch logs by deployment ID instead; prefer --run-id.

usage

Report Loops GPU capacity, one row per deployment (keyed by its run). Org-wide by default; pass --mine for just your own deployments (which drops the Owner column) or --user to filter to a single owner. Each row shows the trainer and sampler GPU allocations and statuses, and a summary line above the table aggregates GPUs in use vs. scaled to zero. Standalone samplers (no trainer) appear as sampler-only rows. The report shows what each deployment is running on (instance types and statuses), not your organization’s GPU quota. By default the table lists only allocations holding live GPUs; the summary counts idle (scaled-to-zero) and terminal allocations, but the table hides them unless you pass --all.

Options

TEXT
Remote to use.
Show only your own Loops deployments (drops the Owner column).
TEXT
Filter to Loops deployments owned by this email (looked up org-wide).
Include deployments in terminal states (STOPPED, FAILED).
cli-table | json
default:"cli-table"
Output format: cli-table (default) or json.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Customizes logging.
Disables interactive prompts, use in CI / automated execution contexts.
Example:

runs view

truss loops runs view is deprecated. Use truss loops view instead.
List Loops runs visible to the caller. Both filters are optional and can be combined; omit both to list every run.

Options

TEXT
Filter to a specific run ID.
TEXT
Filter runs by base model name.
Reverse the default order (oldest first) so the most recent run is shown first.
TEXT
Name of the remote in .trussrc.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example: List the most recent runs for a base model:

samplers view

List Loops samplers visible to the caller.

Options

Reverse the default order (oldest first) so the most recent sampler is shown first.
TEXT
Name of the remote in .trussrc.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example:

checkpoints view

List checkpoints for a Loops run. Identify the run with --run-id, or pass --base-model to pick the most recent run for that base model. The two filters are mutually exclusive.

Options

TEXT
Loops run ID to list checkpoints for. Mutually exclusive with --base-model.
TEXT
Base model name. Resolves to the most recent Loops run for that model. Mutually exclusive with --run-id.
checkpoint-id | size | created | type
default:"created"
Sort checkpoints by checkpoint ID, creation time, size, or type.
asc | desc
default:"asc"
Sort order.
cli-table | csv | json
default:"cli-table"
Output format.
TEXT
Name of the remote in .trussrc.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Examples: List checkpoints for the most recent run of a base model:
Get the largest checkpoints first, as JSON:

checkpoints deploy

Deploy checkpoints from a Loops run as a vLLM-backed inference deployment. Identify checkpoints by name with --checkpoints (requires --run-id, since names are scoped per run) or by globally unique ID with --checkpoint-ids, or pass just --run-id to pick interactively.

Options

TEXT
Loops run ID. Opens an interactive picker so you can choose checkpoints from the run. Cannot be combined with --checkpoint-ids.
TEXT
Comma-separated Loops checkpoint names (e.g. step-50,step-100). Requires —run-id, since names are scoped per run. Bypasses the interactive picker. Use truss loops checkpoints view to find names.
TEXT
Comma-separated Loops checkpoint IDs (for example, vL3pQrS8,wK4tUvW9). Bypasses the interactive picker. Use truss loops checkpoints view to find IDs. Cannot be combined with --run-id or --config.
TEXT
Path to a Python file that defines a DeployCheckpointsConfig. The config must populate checkpoint_details.loops_checkpoint_ids. Cannot be combined with --checkpoint-ids.
Render the generated truss config to stdout without deploying.
TEXT
Name of the remote in .trussrc.
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Examples: Pick checkpoints interactively from a run:
Deploy checkpoints by name from a run:
Deploy specific checkpoint IDs:
Render the generated config without deploying:
The interactive picker only lists deployable (sampler-target) checkpoints. Trainer-target checkpoints hold training state and can’t be served, so they’re excluded. If a run has no deployable checkpoints, the command exits with an error.