Fabric, rebuilt and measured
- Per-link throughput109–110 Gbit/s
- Retransmits0
- Two hops via the hub31.9 Gbit/s
- Links live4
- Measured2026-08-05
the two-hop drop is the hub's kernel forwarding, not the cable
Serious edge AI means owning the hardware the model runs on. Four single-board GB10 unified-memory nodes, a 200-gigabit fabric cabled and measured by hand, an operating system built from the kernel up, and a strict rule that no training ever runs on the desktop.
This page is mostly failure diagnosis, because that is what the metal actually consumed.
Four compact single-board AI computers rather than a rack. Each carries a unified memory pool shared between CPU and GPU. The desktop is a terminal and a cockpit; every training job lives here.
the two-hop drop is the hub's kernel forwarding, not the cable
The monitoring tool reports GPU memory as unavailable on these boards, and it is tempting to read the inference runtime's large "VRAM" figure and the operating system's separate "RAM" figure as two budgets that add up. They are the same physical memory. One node holds roughly one node's worth, full stop.
Concrete consequence: a 179 GB quantised model cannot be made to fit on a single ~128 GB unified node no matter how the numbers are arranged. It needs a genuine multi-node split. Anything that computes a layer-offload count from reported free GPU memory on this platform is computing from a null.
Bridging two fabric ports to make one flat network closed a hidden physical loop in the cabling. Multicast receives climbed past 900 million packets, a node's CPU pegged, and management access was lost — recoverable only because a separate wired path existed.
It then happened again on a different node weeks later. Root cause: the bridge was defined in the declarative network configuration, so disabling it at the connection-manager level did nothing — it was recreated on every boot. Removing the configuration files fixed it permanently.
Standing rules adopted: never bridge fabric ports; use routed point-to-point links; trace every cable endpoint before assuming the topology; and never apply a network change remotely on a machine whose only management path is the network you are changing.
The 200G links looked dead for weeks. The cables were fine the whole time. Two network profiles had been bound to interfaces that had no cable in them, so they could never activate — while the interfaces that did have cables sat unconfigured.
Diagnostic rule adopted: read carrier state and negotiated speed, not ping. A port reporting carrier up at 200,000 Mb/s means the physical layer is good and every remaining failure is software. Ping tells you nothing about which of the two you are looking at.
One node hard-reset roughly every ten minutes for an hour — while running cool, with no out-of-memory event and no kernel panic. Logs cut off mid-line, which is the signature of an abrupt platform reset rather than a software crash.
The mechanism turned out to be the platform watchdog, armed with a ten-second timeout and configured to reboot. The trigger was a firmware-management service repeatedly probing a network card that was reporting insufficient slot power — while the cables were being physically handled. Any stall longer than ten seconds and the watchdog fires. Masking that one service produced immediate multi-hour stability.
The lesson that generalises: "it runs cool, therefore it is not a hardware problem" is false. Ruled out with evidence rather than assumption: thermal (it died cold, with zero guard events), correctable bus errors (present even during a seventeen-hour stable run), memory, and machine-check exceptions.
These boards are dense and quiet, and under sustained full load they will hard-reset in the region of 90°C. That is a real ceiling, not a tuning problem.
A small watchdog on every node, on a timer, in alert-only mode by default — it reports storms, memory exhaustion and GPU faults rather than taking action on its own.
One command from the desktop returns fleet-wide health, with the exit code carrying the worst severity so it composes into other scripts. The failure class that cost us the two storms above can no longer recur silently, which is the entire point of writing it.
No model training on the desktop machine. Ever. Not training, not inference, not "just a small chat server".
The rule exists because it was broken once: a service described as a chat front-end was found to be running local inference on the workstation. If the cluster is unavailable the answer is to wait, not to fall back to the desktop. Remote clients that call the cluster over HTTP are fine — they are not the thing being ruled out.
A public, sanitized status page for the fleet: every node and service shown honestly green, red or grey, refreshed on a short interval, with a staleness banner that tells you when the data itself is old rather than quietly showing you yesterday.
Those numbers are published rather than hidden because a status panel that inflates its own scale is the one thing a status panel must never do.
the experiment of actually measuring cloud-vs-cluster training remains worth running
A lean edge-AI operating system built from the kernel up with Yocto and the Tegra layer — deliberately not a stock vendor image with the desktop stripped off afterwards.
real artefacts, verified on disk — and an unflashed image is not an OS
Everything is ready except the last forty-five minutes: putting a board into recovery mode and writing the image to it. Until that happens this is a build, not an operating system, and it is labelled Prototype for exactly that reason.
Worth recording: a gate document in the repository claimed the image could not be built on this setup — and had been true when written, then silently went stale after the build succeeded. A stale document that contradicts the disk is worse than no document. Trust the artefacts.
Two experiments in using capacity that already exists — one harvesting a machine's idle cycles, one a small distributed-training client.
An agent that runs work only while a machine is genuinely idle and yields the instant its owner returns. Proven end to end: owner active means hold, idle means claim, run, return a result — and a yielded job is requeued rather than lost.
Safety and privacy are structural, not promised:
honest: the workload unit is still a neutral stand-in, not real training
A small client that performs a register, pull, train, delta, push cycle. What is verified is a local toy dry-run on a toy model, and nothing beyond that.