ReadonlyactiveWhether this host has completed 2FA activation, as of when this record was fetched. Activate via activate.
ReadonlyidThe robo ID
ReadonlynameThe robo name
ReadonlyorganisationThe ID of the organisation these robos belong to
ReadonlyotpThe setup OTP shown during robo-guardian setup, or null once activation
has consumed it. Used to provision the host (generateSetupScript /
generateCloudFormationUrl) and to activate it (activate).
ReadonlyownerThe owner's address
ReadonlysignersThe robo signers' addresses (empty until the host is provisioned)
ReadonlyversionThe salt-sdk version this host reported on its last boot, or
null if it has never reported one.
null on a host that has registered its signers means it last
booted on a build that predates version reporting.
Complete 2FA activation for this host, flipping it from inactive to active. This is what makes a robo host usable, and it consumes the setup OTP.
The natural next step once waitUntilOnline resolves. Signed by the owner, whose signed message must carry this host's OTP verbatim — so activation is a deliberate confirmation that the code the owner is looking at matches the one the host was provisioned with.
The owner's wallet, used to sign the activation
A fresh RoboHost, now active and with its OTP consumed
ValidationError if this host record carries no setup OTP
(otp is null) — activation has already consumed it
Build an AWS CloudFormation quick-create console URL that provisions a robo host from Salt's launch template, pre-filled with the robo's setup OTP and the owner's public key. Opening it in a browser signed in to AWS launches the stack; the host then runs the same setup as generateSetupScript.
The owner's public key and stack name
The CloudFormation quick-create URL
ValidationError if this host record carries no setup OTP
(otp is null). Hosts returned by Salt.createRoboHost always
carry it; hosts fetched with Salt.getRoboHost carry it until
activation consumes it
Build the install-robos.sh setup script for a self-hosted robo, targeting
this instance's environment. Run as root on an Ubuntu/Debian host, the
script installs Docker, generates a seed on the host, encrypts it to the
owner's public key, uploads the encrypted backup to Salt, and starts the
robo container with an automatic updater. The plaintext seed never leaves
the host.
The owner's public key
The setup script contents
ValidationError if this host record carries no setup OTP
(otp is null). Hosts returned by Salt.createRoboHost always
carry it; hosts fetched with Salt.getRoboHost carry it until
activation consumes it
Start listening for this host's setup-progress updates. Connects the session's websocket if it is not already up, so there is no need to call Salt.connect first.
Progress is advisory — see RoboSetupListener. Nothing it emits establishes that the host is ready; waitUntilOnline does that.
A listener that is already subscribed. Call
disableSetupListener() when you are done listening.
SocketError if the socket cannot be opened
Wait until every one of this host's robo guardians has connected to Salt, then return a freshly fetched host record.
The only truthful measure that provisioning completed successfully.
activate is the owner's next step after this resolves.
Timeout and poll interval; see WaitUntilOnlineOptions
A fresh RoboHost whose signers are all online
RoboHostTimeoutError if they are not all online in time. The error carries the last presence snapshot, which distinguishes "the script never registered its signers" from "some guardians connected and others did not"
A RoboHost represents the server-side record for an organisation's robos. It provides the credentials and hosting parameters needed to provision the actual compute instances (via setup script or AWS CloudFormation) that will connect and act as robo signers: Use listenToSetup for progress updates, waitUntilOnline for the readiness signal, then activate your robos.