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 (
0–7). host and bmc take no index.
Concurrency flags
Accepted by allpower and firmware subcommands.
Environment variables
config
Manage snctl configuration.config init
Initialize snctl with an encryption key, empty inventory, and configuration.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.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.diag
Diagnose snctl installation and environment health.diag doctor
Check system dependencies and environment health.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.rack delete-device
Remove a device from a rack.rack export
Export racks to a JSON or YAML file.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.- 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.rack show
Show all devices in a rack.node
Manage nodes in the inventory.node list
List all nodes in the inventory.node rename
Rename a node.Local inventory operation only — it does not change any hostname on the hardware itself.
node show
Show all devices in a node.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.group add-rack
Add one or more racks to a group.group remove-rack
Remove a rack from a group.group list
List all groups in the inventory.group show
Show a group and its member racks.group delete
Delete a group from the inventory.Member racks are not removed — only the group record is deleted. Set
SNCTL_NON_INTERACTIVE=1 to suppress the prompt in scripts.secret
Manage device secrets. Credentials are stored AES-GCM encrypted in~/.snctl/credentials.json.enc.
secret set
Set or clear a device secret.
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.*** by default.
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).power on
Turn on a node, host, or XRDU(s).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.--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.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.-o json when filing a support request.
No command-specific flags.

