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.
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 viaPOST /api/node-reports. Deliberately not a persistent stream, so they survive simple LAN/VPN routing.
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.