Last updated: September 25, 2026

Becoming a Host

A host is any machine running dh-noded that a cluster operator has invited. It keeps the final say over what runs on it.

How does a machine become a host?

A machine joins a Decentralized.Host cluster with a single-use invite token created by the operator (`dh node invite`), runs dh-noded with that token, and is approved with `dh node approve`. Decentralized.Host has no token, rewards or public marketplace.

Source: docs/runbooks/install.md §4
This is not a DePIN network. There is no token, reward, staking or public marketplace, and none is planned. (The earlier Python prototype paid Solana devnet credits for uptime; the Go implementation has nothing like it.)

Joining

The operator creates a single-use invite; the token pins the cluster root and CA, so the host speaks HTTPS from its first request.

shell
# operator machine
$ dh node invite --out host-1.token
# the new host
$ dh-noded --data /var/lib/dh-noded --join-file host-1.token --name host-1 --region eu-west --zone a --host rack1-u12 --mesh 0.0.0.0:51820 --mesh-advertise host-1.example.net:51820
# operator machine
$ dh node approve host-1

Your policy, on your machine

On first start the host writes policy.yaml to its data directory. This is the default, verbatim from the source. Edit it and restart the agent to change it; the control plane can read it but never change it.

# Host-local sovereign policy. The control plane cannot change this file.
# Every assignment is checked against it before anything executes.
sovereign: true
maxWorkloads: 40
maxCPU: "32"
maxMem: 128Gi
acceptTiers: [local, trusted]
denyImagesWithoutDigest: true
# When true, only artifacts attested by a trusted publisher key run here.
# "cluster-root" means the root key this host pinned when it joined.
requireImageSignature: false
trustedPublishers: [cluster-root]
allowRuntimes: [process, docker]
allowFederated: false
allowExec: false
# deny: keep admitted work, refuse new work while the control plane is stale.
# stop: also stop admitted work while the control plane is stale.
offlineAdmission: deny
maxClockSkew: 30s
freshWindow: 10s
storageQuota: 10Gi

What you keep control of

  • › Which tiers, runtimes and resource ceilings you accept, and whether artifacts must be attested.
  • › Whether federated work from other clusters may run here (off by default).
  • › Whether anyone may exec into workloads (off by default).
  • › What happens when the control plane is unreachable: keep admitted work (default) or stop it.
  • › Your own hash-chained journal of every decision, readable with dh-noded status.

Revocation cuts a host from the mesh and routing and blocks new admissions, but work it already admitted may continue under its own policy. Revoked is not the same as lost.