Skip to main content

Topology labels for a Mac fleet

For Macs connected by Thunderbolt or 10 GbE, labels on each node let a scheduler keep VMs that talk to each other on the fast fabric and spread replicas across failure domains.

LabelExampleUse
kairon.zyvor.dev/topologytb5-meshMacs on the same Thunderbolt fabric
kairon.zyvor.dev/rackstudio-afailure domain
kairon.zyvor.dev/net10gbemanagement network
kairon.zyvor.dev/chipm4-maxApple silicon generation
kairon.zyvor.dev/memory-gib64unified memory

Set them when starting the node agent, one --label each (see examples/topology-labels.yaml):

args=()
while IFS=': ' read -r k v; do [[ $k == \#* || -z $k ]] || args+=(--label "$k=${v//\"/}"); done < examples/topology-labels.yaml
fluxvm-agent node --name studio-1 --central https://fleet.example:7790 "${args[@]}"

The built-in registry uses labels as a hard filter only: POST /fleet/vms {"nodeSelector": {"kairon.zyvor.dev/topology": "tb5-mesh"}} places on a node carrying exactly that label, or fails. Soft preferences ("same fabric if possible") are for Kairon. None of this is needed for a single Mac.