nodes

Register a node.

Changed on

Enrolls a worker node. Authenticated by a node join token in the Authorization header, not an API key.

post/v1/nodes/register

Request

Request body

addressstring required
availableCpusinteger required
availableDiskGbinteger required
availableMemoryMbinteger required
bootIdstring nullable

Runtime's per-process boot id, forwarded from the node's /capacity. A change between heartbeats means the serve restarted (its warm pool wiped), which the control uses to prune the node's now-stale pool records. Absent on an older node/runtime that doesn't report it.

csrPemstring nullable

PEM-encoded certificate signing request, sent only at registration. When present, the control plane signs it as the node's mTLS server cert (overriding the CSR's subject/SANs with the validated node id/addresses) and returns the cert in RegisterResponse. The node's private key never leaves it. Absent ⇒ control plane has no node-CA configured, or this is an older node; the registration still succeeds (cert fields stay empty).

diskCordonedAtstring nullable

Set (RFC3339) when the control plane soft-cordons this node for DISK pressure — its heartbeat-reported host-free disk dropped below the cordon threshold, so it stops receiving NEW placements. SEPARATE from the data-plane cordon: the node stays status = "ready" and is never reaped; its running machines are untouched. Cleared when free disk recovers past the (higher, hysteretic) un-cordon threshold. None = not disk-cordoned.

idstring required
labelsobject required
lastHeartbeatAtstring nullable
registeredAtstring required
reservedDiskGbinteger

Sum of the (thin/nominal) local-SSD footprints reserved by the machines placed on this node — the disk-overcommit ledger. Unlike available_disk_gb (overwritten by every heartbeat with the host's live free space), this is a reserve/release decrement ledger the scheduler gates admission on, so a node can't be packed past total_disk_gb * ratio. Reconciled by the capacity self-heal. Default 0 (legacy rows / never reserved).

runtimestring

The runtime this node speaks (e.g. "smolvm"). The control plane resolves a driver from this name; smolvm_address is that runtime's endpoint. Defaults to "smolvm" so a node that doesn't report a runtime (the only runtime today) is handled transparently.

smolvmAddressstring required

The runtime endpoint (HTTP address) on this node.

smolvmVersionstring nullable

The smolvm engine version this node's runtime reports on /health, recorded by the control plane. Read-only: a node never sets it. A checkpoint is only restored on a node at the capturing engine's version or newer. Absent until the runtime has been probed.

statusstring required
totalCpusinteger required
totalDiskGbinteger required
totalMemoryMbinteger required
usedCpusnumber double

Real CPU usage as fractional CPUs (e.g., 2.5 = 2.5 CPUs worth of load). Reported by the node from hypervisor/process stats. Separate from available_cpus (which is allocation-based bookkeeping).

usedDiskGbinteger

Real disk space consumed by VM overlay/storage files in GB. Reported from filesystem stat of VM disk images. Separate from available_disk_gb (which reflects the entire host filesystem).

usedMemoryMbinteger

Real memory usage in MB. Reported by the node from RSS of VM processes. Separate from available_memory_mb (which is allocation-based bookkeeping).

Response

Node registered

addressstring required
availableCpusinteger required
availableDiskGbinteger required
availableMemoryMbinteger required
bootIdstring nullable

Runtime's per-process boot id, forwarded from the node's /capacity. A change between heartbeats means the serve restarted (its warm pool wiped), which the control uses to prune the node's now-stale pool records. Absent on an older node/runtime that doesn't report it.

csrPemstring nullable

PEM-encoded certificate signing request, sent only at registration. When present, the control plane signs it as the node's mTLS server cert (overriding the CSR's subject/SANs with the validated node id/addresses) and returns the cert in RegisterResponse. The node's private key never leaves it. Absent ⇒ control plane has no node-CA configured, or this is an older node; the registration still succeeds (cert fields stay empty).

diskCordonedAtstring nullable

Set (RFC3339) when the control plane soft-cordons this node for DISK pressure — its heartbeat-reported host-free disk dropped below the cordon threshold, so it stops receiving NEW placements. SEPARATE from the data-plane cordon: the node stays status = "ready" and is never reaped; its running machines are untouched. Cleared when free disk recovers past the (higher, hysteretic) un-cordon threshold. None = not disk-cordoned.

idstring required
labelsobject required
lastHeartbeatAtstring nullable
registeredAtstring required
reservedDiskGbinteger

Sum of the (thin/nominal) local-SSD footprints reserved by the machines placed on this node — the disk-overcommit ledger. Unlike available_disk_gb (overwritten by every heartbeat with the host's live free space), this is a reserve/release decrement ledger the scheduler gates admission on, so a node can't be packed past total_disk_gb * ratio. Reconciled by the capacity self-heal. Default 0 (legacy rows / never reserved).

runtimestring

The runtime this node speaks (e.g. "smolvm"). The control plane resolves a driver from this name; smolvm_address is that runtime's endpoint. Defaults to "smolvm" so a node that doesn't report a runtime (the only runtime today) is handled transparently.

smolvmAddressstring required

The runtime endpoint (HTTP address) on this node.

smolvmVersionstring nullable

The smolvm engine version this node's runtime reports on /health, recorded by the control plane. Read-only: a node never sets it. A checkpoint is only restored on a node at the capturing engine's version or newer. Absent until the runtime has been probed.

statusstring required
totalCpusinteger required
totalDiskGbinteger required
totalMemoryMbinteger required
usedCpusnumber double

Real CPU usage as fractional CPUs (e.g., 2.5 = 2.5 CPUs worth of load). Reported by the node from hypervisor/process stats. Separate from available_cpus (which is allocation-based bookkeeping).

usedDiskGbinteger

Real disk space consumed by VM overlay/storage files in GB. Reported from filesystem stat of VM disk images. Separate from available_disk_gb (which reflects the entire host filesystem).

usedMemoryMbinteger

Real memory usage in MB. Reported by the node from RSS of VM processes. Separate from available_memory_mb (which is allocation-based bookkeeping).

Changes

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status