Hi HN,
I’ve been building a small infrastructure tool called Provisioner: a per-board provisioning sidecar for SBC bring-up and lab automation. https://github.com/alessandrocarminati/provisioner
The model is simple: one instance per board. It sits next to the hardware, owns the serial console, exposes access over SSH, and serves boot artifacts (kernel, initramfs, rootfs) via TFTP/HTTP. It’s designed for the phase where networking is unreliable, storage is half-flashed, and UART is the only thing still telling the truth.
What it does
- Serial console ownership + SSH multiplexing - Monitor shell + serial tunnels - Scriptable boot interaction - Artifact provisioning (TFTP + HTTP) - In-band file transfer over serial - gzip/base64 hacks + XMODEM - Derived from my earlier send_console-ng utility https://github.com/alessandrocarminati/send_file-ng - Pluggable power control - SNMP PDUs, among others cheap ESP8266/Tasmota devices - Serial logging - Lightweight access control
Provisioner also embeds a minimal init runtime (goinit) inside the kernel initramfs, acting as its on-board provisioning agent, handling flashing, artifact retrieval, and reporting management state back over serial.
Routing & stream handling
Internally, Provisioner routes serial traffic through a pluggable router:
- Producers/consumers attach as components - Human vs machine clients handled differently - Unicast control sessions - Broadcast multiplexing to multiple observers
This allows several users or services to watch the same console without interfering.
... continue reading