Hub

The control plane: discovers devices, plans layer placement, launches workers, orchestrates the ring.

The hub is the network's control plane, served by linkcpp as a single Docker image (controller.hub:app, a FastAPI service on port 19000). It discovers devices, checks runtime compatibility, plans placement with the planner, launches stock inference engine workers, and exposes the per-controller gateways. It is deliberately boring infrastructure: request/response HTTP, restart-safe state, no exotic transport.

Three doors in

How machines join a hub

  • Local node slots — five fixed slots per hub, mapped to RPC ports 50052–50056. Slots always exist; you edit a slot's GPU + VRAM/RAM/CPU budgets rather than creating arbitrary nodes, and resources are editable only while a slot is unbound, which protects the capacity contract under a running controller.
  • Remote units — register another running linkcpp hub and import its visible nodes. The data-plane endpoint is always derived from the registered *unit* URL plus the unit-exposed worker port — never from a node host the remote system advertises.
  • Managed node agents — worker-only services (nodeagent.py) that join over plain request/response HTTP (/control/join|status|download|load|unload) and report via POST /api/node-reports. Deliberately not a persistent stream, so they survive simple LAN/VPN routing.
Nothing loads unverified

Compatibility gating

Every unit, node and agent reports a protocol / runtime-pack identity plus backend details. Unit, runtime-pack, inference engine-revision and RPC-ABI mismatches are hard-blocked before bind, plan, load or infer; backend differences (CUDA/Metal/Vulkan/CPU) are tracked as node capabilities, not rejections. Adaptive loading is also blocked when a node can't provide the resource monitoring a safe plan needs.

What survives a restart, and what doesn't.

persisted   → /models/linkcpp/hub-state.json
              slots · controllers · bindings · remote units · 2FA enrollment
runtime-only → live worker/model processes, in-flight operations
              (a container restart stops serving; models reload on demand)

Because the hub is the most critical role, hub hosts earn the highest hourly uptime reward. Operating a public hub requires staking 100,000 KVR.