Networks that run their own node on the board
Networks that run their own node on the board
Another kind of source does not rent the board to a stranger's container: the host runs the network's own node, which takes the network's work and is paid for it. Inference networks serve model requests (some for NVIDIA boards, some for Apple silicon Macs); training networks pay for contributed training; render, transcode and cloud-gaming networks pay per job or per stream; zero-knowledge proving networks and proof-of-work mining pay for proofs. A node runs only while its source earns the host at least as much per board-hour as every other source with a value (see below).
Stado does not install a network's node. The operator declares it as a
service from the network's official release (stado service declare), then
declares the node and what it holds while it runs:
stado market node add <name> --source <source id> --target <host> \
--service <service> --cpu-cores N --ram-gb N --vram-gb N [--disk-gb N]
stado market node edit <name> --listed true # offer it
stado market node follow <name> --idle-window-s 600 --poll-interval-s 60
stado market node list | show <name> | remove <name> [--json]
add refuses a name already taken, a source stado market sources does not
declare, a host that declares no such service, and a node that holds nothing
(it could not be kept off a busy board). A node is declared withdrawn;
edit --listed true offers it. follow holds the role lock
market-node--<name> for its life. Once the host has had no fleet work for
--idle-window-s, and the node is offered, it takes the node's capacity
reservation on its host, as stado capacity hold does, and starts the
service; a host with no room is not started, and the run record says
not started: <the reservation's refusal>. The moment fleet work appears for
the host or the node is withdrawn, it stops the service and releases the
reservation. Each transition is kept at state/market/node-runs/<name>.json
and printed by list and show. --dry-run --once prints the next decision
without starting or stopping anything (--once without --dry-run is
refused: a node started by one poll would run on with nothing holding its
reservation). remove refuses a node its loop has running. What the network
paid is its own statement, kept with stado market payout record --source <source id> --host <host>, which stado market earnings adds to the day.
Desktop's Registry screen lists, declares, offers, withdraws, removes and
previews nodes.
Every finished run is kept at state/market/node-hours/<name>/<start>.json
with its source, host and times. A source's value on a host is what it paid
there (kept payouts, each at its own rate) divided by the hours its nodes ran
there, a run still going counted up to now; Vast.ai's is the gross of the
days stado market earnings kept over their hours. Both are read over the
autonomy policy's freshness.pricing_max_age_seconds, the window the board
allocator prices in. On every poll follow stops its node, record
stopped: <source> earns X USD per board-hour and <other> earns Y, while
another source with a value earns more; a source with no value yet (no hours
run, no payout kept, an unpriced payout) keeps running, since only running
values it, and a fleet with no autonomy policy is not compared, said in the
log. The values are income: the energy a use draws is not subtracted per use,
since the beacon measures a board, not what each use on it drew.
A storage, RPC or indexing network's node fills disk, so a node declares what
its data may take with --disk-gb (edit --disk-gb changes it). The host's
beacon publishes disk_headroom_gb, what may still be written before the
disk-full rule's 80 % threshold on the volume the rule judges (or
disk_headroom_unread with why), and follow starts the node only while its
disk fits inside that headroom: a node that does not fit, a host whose beacon
states no headroom yet, and one whose headroom is unread are each not started
and stopped if running, the run record naming which (the node's N GiB of disk does not fit <host>'s M GiB before the disk-full rule's 80% threshold).
So a sold disk never eats the space the rule keeps free.
A network that sells the host's connection (bandwidth, storage, RPC, render,
transcode, cloud gaming) states what the connection must carry. add and
edit take it as --min-download-mbps, --min-upload-mbps and
--requirements-source <the network's page that states them>; a figure
without its source, a source without a figure, and a figure at or below zero
are refused, and edit with any of them replaces the whole set. follow
then starts the node only while the host's beacon carries a current
bandwidth measurement (host.bandwidth_probe, as stado market readiness
reads it, Vast) in both directions at or above the floors, and
stops it otherwise, the run record naming which (the host's measured upload is 12.0 Mbit/s, below the 20 Mbit/s <source> requires, or that the
bandwidth is unmeasured or stale). Board memory is the node's own --vram-gb
reservation, admitted through capacity like any workload. show prints the
requirements; Desktop's Registry screen declares and edits them.
A decentralized inference network's node serves a model; it serves the
fleet's own inference deployment, the same engine, model and board the
registry declares, named with --deployment (edit --deployment "" stops it
serving one). add and edit refuse a deployment that is not declared, runs
on another host, is not desired running, or whose model license was never read
or whose model chain declares none, naming which; follow checks the same on
every poll and treats a failure like withdrawal, so the model is offered only
while its board carries no fleet work and its license is declared. show
prints serves inference deployment <name> to its network. What the network
paid is kept with stado market payout record, as for any node.
Source: this website