On this page
Quick start
How do you go from no Stado state to one completed job? This page is the one happy path: install an exact release, create the minimal local configuration, start the local control plane, submit one job, and read its result. Local mode needs no cloud account, provider CLI, GPU, or Wisent production credential. Everything else — the other enrollment methods, failure guidance, attaching more machines — lives in onboarding, add-your-machine, and jobs.
Install an exact release
install-stado.sh at the repository root installs one exact immutable
archive after verifying its canonical manifest; it never resolves a mutable
release. Set the release identity, run it, and expose its binary directory:
export STADO_API_URL=<your-control-origin>
export STADO_RELEASE_VERSION=<exact-version>
export STADO_RELEASE_PLATFORM=<exact-platform>
./install-stado.sh
export PATH="$HOME/.stado/bin:$PATH"
The script requires an HTTPS STADO_API_URL, fetches the release manifest
and archive from /api/release/object, verifies the manifest's shape and the
archive's SHA-256 digest, and refuses an archive with unexpected, duplicate,
or missing members before replacing any binary. Binaries land in
$HOME/.stado/bin (override with STADO_BIN_DIR), and success prints
installed Stado <version> for <platform> in <directory>.
Create the minimal configuration
STADO_CONFIG selects the operator-owned deployment profile; without it,
Stado uses ~/.stado/config.json, which the next command creates:
stado config init
stado config validate
config init prints the path to the new file and creates only a
schema-versioned local queue profile: local compute, local primary and backup
stores, one deployment identity, and a loopback dashboard — no Wisent service
routes, cloud locators, or credentials. It never overwrites an existing file.
config validate prints config ok (<path>). The keys themselves are
documented in configuration.
Start the local control plane
stado local-control-plane
This runs the device-local API listener, scheduler, and worker. Leave it
running; it binds to loopback (127.0.0.1:8765) by default.
Submit one job
From another terminal using the same config:
stado submit "printf 'hello from Stado\n'"
submit puts the job on the queue and prints a Job ID. Use that ID below.
Watch it run
stado status <job-id>
status shows the job's state; it progresses from queued or running to
completed. The argument filters by job id (8 hex chars) or batch id
substring.
Read the result
stado results <job-id> ./stado-result
results downloads the job's output into the named directory. The command
output contains hello from Stado, and the result manifest records the
artifact size and SHA-256. A failed job remains inspectable and may still
publish logs and partial artifacts.
That is the whole path. To onboard more machines or operate a real fleet, continue with onboarding; to attach your own computer to a fleet someone else runs, read add-your-machine; for the full job contract — constraints, artifacts, secrets, verification — read jobs.
Source: this website