Skip to main content
Complete reference for every snctl command, argument, and flag. snctl manages rack-based infrastructure inventory, power operations, and firmware checks and upgrades.

Global flags

Available on every command.
-o wide is not universally supported. power on, power off, power cycle, firmware upgrade, group create, group add-rack, group remove-rack, and group delete accept text or json only. rack export uses -o differently — see rack export.

Command index


Shared values

Values referenced by multiple commands.

Device types

access_switch, bmc, data_switch, host, pdu, serial_terminal, xrdu firmware version additionally accepts bios, card, and all. firmware upgrade accepts bios, bmc, xrdu, card, and all only.

Device paths

PDUs are 1-indexed; XRDUs are 0-indexed (07). host and bmc take no index.

Concurrency flags

Accepted by all power and firmware subcommands.

Environment variables


config

Manage snctl configuration.

config init

Initialize snctl with an encryption key, empty inventory, and configuration.
Creates an AES-GCM encryption key, empty rack inventory, encrypted secrets file, logs directory, and config.yaml. Run once before registering racks or setting credentials.
Re-running against an already-initialized directory returns an error. Use config show to inspect an existing configuration.

config show

Display the current snctl configuration.
Shows paths to config.yaml, the inventory file, encryption key, and secrets file, plus optional settings such as the GCS service account and logs directory. If snctl has not been initialized, prints a notice and exits cleanly. No command-specific flags.

config update

Update fields of an existing snctl configuration.
Requires an initialized configuration. Pass an empty string to clear a value.

diag

Diagnose snctl installation and environment health.

diag doctor

Check system dependencies and environment health.
Verifies that all system dependencies required by snctl are installed — including tools such as ipmitool needed for power and firmware operations — and reports their status. Run this if commands fail unexpectedly. No command-specific flags.

rack

Manage rack inventory.

rack add

Add a new rack to the inventory.
--partnumber identifies the hardware model, which determines the component layout automatically populated for the rack.

rack add-device

Add or update a device in a rack.
<target> is a device path. Omitting a field preserves its current value (partial update).

rack delete

Remove a rack from the inventory.
Removes the rack and all its associated SN40L nodes.
Affects the local inventory only — it does not power off or modify the physical hardware. Re-register with snctl rack add <rack_id> --partnumber <part> if removed in error.
No command-specific flags.

rack delete-device

Remove a device from a rack.
Removes the component from the local inventory only; the physical hardware is not affected.

rack export

Export racks to a JSON or YAML file.
With no rack IDs, all racks are exported.
Passwords are always replaced with placeholder values, so the export file is safe to share.

rack import

Import racks and groups from a JSON or YAML file.
The file is a native snctl inventory and may contain a subset of racks, groups, or both. Use - to read from stdin. Credential handling. Any device password in the source file that is not already a placeholder is imported into the encrypted credential store as a per-device credential; the inventory itself only stores the placeholder. For each device kind with no existing default credential, the lowest-numbered rack’s password for that kind also becomes the kind’s default. Secrets are never printed. --dry-run reports how many secrets would be imported without writing anything.

rack list

List all racks in the inventory.
Shows each rack’s ID, hardware type, and component counts. No command-specific flags.

rack show

Show all devices in a rack.
Displays every component with its hostname, IP address, port, and username. Use this to verify network addressing before running power or firmware commands. No command-specific flags.

node

Manage nodes in the inventory.

node list

List all nodes in the inventory.
Shows each node’s name, parent rack ID, rack hardware type, and slot index. No command-specific flags.

node rename

Rename a node.
The new name must be unique across all nodes.
Local inventory operation only — it does not change any hostname on the hardware itself.
No command-specific flags.

node show

Show all devices in a node.
Displays all component sub-devices (BMC, host, XRDUs) with hostname, IP address, port, and username. No command-specific flags.

group

Manage rack groups. Groups fan out firmware and power commands across multiple racks in a single operation.

group create

Create a group or update its description.
If a group with that name already exists, its description is updated.

group add-rack

Add one or more racks to a group.
The group must already exist. Racks already in the group emit a warning and are skipped without error.

group remove-rack

Remove a rack from a group.
The rack remains registered in the inventory and can be added to other groups; only its membership in this group is removed.

group list

List all groups in the inventory.
Shows each group’s name, description, and number of member racks. No command-specific flags.

group show

Show a group and its member racks.
Displays the group’s description and its member racks with their hardware types. No command-specific flags.

group delete

Delete a group from the inventory.
Prompts for confirmation before deleting.
Member racks are not removed — only the group record is deleted. Set SNCTL_NON_INTERACTIVE=1 to suppress the prompt in scripts.
No command-specific flags.

secret

Manage device secrets. Credentials are stored AES-GCM encrypted in ~/.snctl/credentials.json.enc.

secret set

Set or clear a device secret.
You are prompted to enter and confirm the value interactively; nothing is echoed to the terminal. Set credentials for all component types used in your deployment before running power or firmware commands. Per-device credentials take precedence over the kind-level default. Clearing a credential that isn’t set succeeds without error; after clearing a per-device override, the device falls back to the kind-level credential.

secret get

Get a device secret.
The value is masked as *** by default.
Only use --show-value in a secure environment. Never share the output.

power

Power on, off, cycle, and query nodes. Operations run over IPMI or Redfish.
All power commands require --node or --group (mutually exclusive), and device credentials must be configured with secret set first.

power state

Query the power state of a node, host, or XRDU(s).
Reports the current DC power state (on/off/unknown). Read-only and safe to run at any time.

power on

Turn on a node, host, or XRDU(s).
After power-on, snctl waits for snd.service (SambaNova Daemon) to become active before returning.

power off

Turn off a node, host, or XRDU(s).

power cycle

Power-cycle the entire node.
Graceful off, then on. Always targets the whole node — there is no --type flag. Waits for snd.service before returning.

firmware

Query and update node firmware.
Both commands require --rack-id or --group (mutually exclusive), and device credentials must be configured with secret set first.

firmware version

Query installed firmware versions on a rack’s components.
Results show the current installed version (CURR) alongside the plan-of-record version (POR) so you can identify drift at a glance.

firmware upgrade

Push a firmware image to a rack’s components.
--image behaviour. If omitted, the correct file for each component’s POR version is downloaded automatically from GCS, checksum-verified, and cached. Pass --image to flash specific local files instead — required for airgapped environments. --index restrictions. Accepted for xrdu and card only. Rejected for bios, bmc, and all — BIOS and BMC are node-level components with no slots, and all mixes both kinds, where an index would narrow only part of the upgrade.

version

Print version and build information.
Prints the release version, git commit hash, build timestamp, Go runtime version, and OS/architecture. Use -o json when filing a support request. No command-specific flags.