CLI Reference
The Launch Kit binary is invoked as l8k and exposes a set of subcommands. l8k --help and l8k <subcommand> --help print labelled flag groups identical to the sections below.
Available on all subcommands:
Flag | Description |
|---|---|
--output <string> |
Output format: text (default, human-readable) or json (structured for automation, see Automation and CI/CD). |
-y, --yes |
Auto-confirm all prompts. Implied by --output json. |
-q, --quiet |
Suppress informational output. |
--log-level <string> |
Log level: debug, info, warn, error. |
--log-file <string> |
Write logs to file instead of stderr. |
-h, --help |
Show help. |
Probes cluster hardware and writes a cluster-config.yaml.
Flag | Description |
|---|---|
--kubeconfig <string> |
Path to kubeconfig file (falls back to $KUBECONFIG). |
--user-config <string> |
Base config to merge with discovered hardware. If --save-cluster-config is omitted, the file is updated in place. |
--save-cluster-config <string> |
Output path for the discovered cluster configuration. Defaults to --user-config if set, otherwise ./cluster-config.yaml. |
--network-operator-namespace <string> |
Override the Network Operator namespace (default: nvidia-network-operator). |
--network-operator-release <string> |
Pin discovery to a Network Operator release line. Supported: 25.10, 26.1, 26.4. |
--node-selector <string> |
Filter nodes for discovery by label. Default: feature.node.kubernetes.io/pci-15b3.present=true (Mellanox NICs). |
--image-pull-secrets <strings> |
Image pull secret names for NicClusterPolicy (comma-separated). |
--enabled-plugins <string> |
Comma-separated list of plugins to enable (default: network-operator). |
Renders Kubernetes manifests from a cluster configuration and a profile selection. Optionally deploys them.
Profile Selection
Flag | Description |
|---|---|
--user-config <string> |
Cluster configuration file. Auto-detected from ./cluster-config.yaml (or the installed default) if omitted. |
--for <preset> |
Generate for a hardware preset without running discovery. Requires --node-selector. See Cluster Topology Presets. |
--fabric <string> |
Fabric type: ethernet or infiniband. Auto-defaults from the cluster’s unanimous linkType (Unit 5 fabric probe) when not supplied. |
--deployment-type <string> |
Deployment type: sriov, rdma_shared, or host_device. Auto-defaults to sriov when not supplied. |
--multirail |
Enable multirail deployment. Auto-defaults to true. Opt out with --multirail=false (YAML cannot express explicit-false). |
--spectrum-x <RA-version> |
Enable Spectrum-X. Value is the SPC-X RA version: RA2.1 or RA2.2. Implies ethernet fabric, sriov deployment, and multirail. |
--multiplane-mode <string> |
Multiplane mode: swplb, hwplb, uniplane, or none. Required with --spectrum-x; auto-defaulted from east-west PF deviceID when omitted (CX7/BF3 → uniplane, CX8 → swplb, CX9 → hwplb). none requires --number-of-planes 1. |
--number-of-planes <int> |
Number of planes: 1, 2, or 4. Required with --spectrum-x; auto-defaulted from deviceID (CX7/BF3 → 1, CX8 → 2, CX9 → 4). |
--network-operator-release <string> |
Pin to a Network Operator release line. Supported: 25.10, 26.1, 26.4. Auto-defaulted under --spectrum-x (RA2.1 → 26.1; RA2.2 → 26.4). See Overview. |
--groups <a,b,...> |
Restrict output to the named source groups (comma-separated, matched case-sensitively against clusterConfig[].identifier). Mutually exclusive with --gpu-type. Empty match is a validation error. See Heterogeneous Clusters. |
--gpu-type <string> |
Restrict output to source groups whose gpuType matches (case-insensitive). Mutually exclusive with --groups. See Heterogeneous Clusters. |
--node-selector <string> |
Node selector for the synthesized clusterConfig when --for is used (e.g., key=value,key2=value2). Required with --for. |
Output and Deployment
Flag | Description |
|---|---|
--save-deployment-files <string> |
Output directory for generated YAML files (default: ./deployment). |
--deploy |
Apply generated manifests to the cluster. |
--dry-run |
Preview deployment without applying (requires --deploy). |
--kubeconfig <string> |
Path to kubeconfig (required with --deploy; falls back to $KUBECONFIG). |
Customization
Flag | Description |
|---|---|
--enable-doca-driver |
Enable DOCA driver deployment. |
--workload-manifest <string> |
Path to a custom workload manifest. Launch Kit patches network annotations, resource requests, and node affinity. See Generate Workflow. |
--image-pull-secrets <strings> |
Image pull secret names for NicClusterPolicy (comma-separated). Propagates to per-group NicNodePolicy sub-specs. |
--network-operator-namespace <string> |
Override the Network Operator namespace. |
--pod-namespace <string> |
Namespace for pods and network resources. |
--enabled-plugins <string> |
Comma-separated list of plugins to enable (default: network-operator). |
Applies previously generated manifests to the cluster in four phases: NicClusterPolicy first (await ready), per-group NicNodePolicy (await each), all remaining CRs in one batch (controllers reconcile concurrently), then verify every manifest reached a terminal state. Example workload manifests (*example*) are skipped here — they’re applied by l8k validate --connectivity / l8k deploy --verify as part of the data-plane phase. See Deploy Workflow for the full deployment-ordering description.
Flag | Description |
|---|---|
--kubeconfig <string> |
Path to kubeconfig (falls back to $KUBECONFIG). |
--deployment-files <string> |
Directory containing the manifests to apply (default: ./deployment). |
--deploy-timeout <duration> |
End-to-end wall-clock budget for the apply + reconciliation phase (e.g., 45m, 2h). 0 (default) means no deadline; polls until every manifest reaches a terminal state. Useful for matching a maintenance window when SR-IOV reconciliation on a large cluster can take an hour or more. |
--verify |
After a successful apply, chain the connectivity matrix (same flow as l8k validate --connectivity): apply the example DaemonSet, wait for it to roll out, run a ping matrix across every rail and pod pair, then clean up. |
--dry-run |
Preview what would be applied without changing the cluster. |
Verifies a deployment by running four checks back-to-back: Network Operator Helm release version (compared against networkOperator.selectedRelease in cluster-config.yaml); per-component version cross-check that walks the live NicClusterPolicy + NicNodePolicy and confirms each section’s .version field matches the catalog (catches out-of-band edits and partial upgrades the Helm check misses); per-manifest state classification (READY / IN-PROGRESS / ERROR / MISSING via the per-Kind validator registry); and a data-plane connectivity matrix (apply the example DaemonSet, ping every rail across every pod pair). Writes a self-contained HTML report to <deployment-files>/verify-report.html by default. Exits 4 on any missing/error manifest, Helm-version mismatch, component-version mismatch, or connectivity-matrix failure. See Validate Workflow for full details.
Flag | Description |
|---|---|
--kubeconfig <string> |
Path to kubeconfig (falls back to $KUBECONFIG). |
--user-config <string> |
Cluster config file. Lookup order: explicit path → ./cluster-config.yaml → <deployment-files>/../cluster-config.yaml → <deployment-files>/cluster-config.yaml. Read for networkOperator.selectedRelease and operator namespace. |
--deployment-files <string> |
Directory containing the manifests to verify (default: ./deployment). |
--connectivity |
Run the data-plane ping matrix. Default true. Pass --connectivity=false to limit validate to the static manifest + Helm-release-version checks. |
--connectivity-timeout <duration> |
Wall-clock budget for the connectivity phase (default: 5m). |
--ping-count <int> |
Number of ICMP echoes per src → dst pair (ping -c N). Default 3. |
--keep |
Leave the test DaemonSet running after --connectivity completes (useful for follow-up debugging). |
--wait <duration> |
Block validate up to this duration waiting for in-progress manifests to reach a terminal state. 0 (default) returns immediately on the first snapshot. Re-polls the cluster every 10 s. |
--report-path <string> |
Write the HTML report to this path. Empty (default) writes to <deployment-files>/verify-report.html. Pass - to skip the report file entirely. |
Lists locally available cluster topology presets.
l8k preset list
Downloads the latest presets from a Git repository.
Flag | Description |
|---|---|
--repo <string> |
Git repository URL. |
--branch <string> |
Branch or tag to fetch from (default: main). |
--dir <string> |
Subdirectory within the repo containing presets. |
See Cluster Topology Presets for usage.
Collects diagnostic data from the cluster.
Flag | Description |
|---|---|
--kubeconfig <string> |
Path to kubeconfig (falls back to $KUBECONFIG). |
--output-dir <string> |
Directory to save the sosreport (default: ./sosreport). |
See Troubleshooting for analysis guidance.
Outputs a JSON description of l8k’s capabilities — supported commands, fabrics, deployment types, exit codes, and output formats. Used by AI agents and automation tooling to discover l8k capabilities programmatically. See Automation and CI/CD.
l8k schema
Prints the version. Supports --output json for structured output.
Code | Meaning |
|---|---|
| 0 | Success. |
| 1 | General error. |
| 2 | Validation error (invalid flags or configuration). |
| 3 | Cluster error (API unreachable, discovery failed). |
| 4 | Deployment error (apply failed). |
| 5 | Partial success (discovery completed but deployment failed). |
Configuration Reference —
l8k-config.yamlschemaAutomation and CI/CD — JSON output and exit-code-driven retries
Overview — the meaning behind the flags