Skip to main content
The truss loops command provides subcommands for the Loops deployment lifecycle: pushing a deployment for a base model, viewing runs and samplers, 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

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

Options

--project-id
TEXT
Training project ID to associate the deployment with.
--replicas
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.
--remote
TEXT
Name of the remote in .trussrc to deploy to.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
--non-interactive
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example:

deactivate

Shut down a Loops deployment. Saved checkpoints remain accessible after deactivation.

Arguments

DEPLOYMENT_ID
TEXT
required
ID of the deployment to shut down. Get the deployment ID from truss loops view.

Options

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

view

List your Loops deployments by default. Pass --org to list every deployment in your organization, which adds an Owner column to the output. Deployments in terminal states (STOPPED, FAILED) are hidden unless you pass --all.

Options

--remote
TEXT
Name of the remote in .trussrc.
--all
Include deployments in terminal states (STOPPED, FAILED).
--org
List every Loops deployment in your organization (with its owner), not just your own.
-o, --output-format
cli-table | json
default:"cli-table"
Output format: cli-table (default) or json.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
--non-interactive
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Example:
The command prints a table with the deployment ID, base model, deployment status, and deployment base URL, plus the paired sampler’s deployment ID, status, and base URL. When using --org, an Owner column is included.

logs

Fetch logs from one half of a Loops deployment. A Loops deployment and its sampler have separate log streams, so pass exactly one of --loops-deployment-id or --sampler-deployment-id depending on which side you’re debugging.

Options

--loops-deployment-id
TEXT
Fetch logs from a Loops deployment. The id is the Deployment ID column in truss loops view.
--sampler-deployment-id
TEXT
Fetch logs from the sampler’s inference deployment. The id is the Sampler Deployment ID column in truss loops samplers view. The companion model id is resolved automatically by matching against the caller’s active Loops deployments.
--tail
Continue polling for new log lines until the deployment goes inactive (or Ctrl+C).
--remote
TEXT
Remote to use.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Customizes logging.
--non-interactive
Disables interactive prompts, use in CI / automated execution contexts.
Examples:
Stream the sampler’s logs and keep polling until the deployment goes inactive:
Get the deployment IDs from truss loops view (Deployment ID) and truss loops samplers view (Sampler Deployment ID).

runs view

List Loops runs visible to the caller. Both filters are optional and can be combined; omit both to list every run.

Options

--run-id
TEXT
Filter to a specific run ID.
--base-model
TEXT
Filter runs by base model name.
-r, --reverse
Reverse the default order (oldest first) so the most recent run is shown first.
--remote
TEXT
Name of the remote in .trussrc.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
--non-interactive
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

-r, --reverse
Reverse the default order (oldest first) so the most recent sampler is shown first.
--remote
TEXT
Name of the remote in .trussrc.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
--non-interactive
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

--run-id
TEXT
Loops run ID to list checkpoints for. Mutually exclusive with --base-model.
--base-model
TEXT
Base model name. Resolves to the most recent Loops run for that model. Mutually exclusive with --run-id.
--sort
checkpoint-id | size | created | type
default:"created"
Sort checkpoints by checkpoint ID, creation time, size, or type.
--order
asc | desc
default:"asc"
Sort order.
-o, --output-format
cli-table | csv | json
default:"cli-table"
Output format.
--remote
TEXT
Name of the remote in .trussrc.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
--non-interactive
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. You must pass one of --run-id, --checkpoint-ids, or --config.

Options

--run-id
TEXT
Loops run ID. Opens an interactive picker so you can choose checkpoints from the run. Cannot be combined with --checkpoint-ids.
--checkpoint-ids
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.
--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.
--dry-run
Render the generated truss config to stdout without deploying.
--remote
TEXT
Name of the remote in .trussrc.
--log
humanfriendly | W | WARNING | I | INFO | D | DEBUG
default:"humanfriendly"
Logging verbosity. humanfriendly (default) is pretty-printed; INFO, DEBUG, WARNING produce structured logs.
--non-interactive
Disable interactive prompts. Use in CI/automated contexts where stdin isn’t a TTY.
Examples: Pick checkpoints interactively 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.