SmechVisor spk-visor
spk-visor is the SmechVisor management CLI. It is not a general-purpose
package manager — it replaces the roles that apt, dnf, or
emerge would fill on a normal OS with two operations specific to a
hypervisor appliance: live OTA updates and zero-downtime network deployment.
Overview
On a running SmechVisor node, spk-visor is the only way to update or
redeploy the system. It is a pure Rust binary with zero external dependencies — it
calls only the OS primitives available on any POSIX system.
spk-visor is not the same as spk. On SmechOS,
spk system-install and spk userland-install download
and extract packages. On SmechVisor, those commands are intentionally disabled —
the OS is sealed. Running them will produce an error and exit.
Commands
spk-visor entire-system-upgradesmechvisor-daemon and smechvisor-base packages from
GitHub Releases, stages them, swaps the daemon binary live (no reboot for daemon
updates), and schedules a reboot for base system changes.
spk-visor deploy-system-img-copy <code>spk-visor deploy-system-img-copy e13gts2
spk-visor receive-deploy/mnt/target,
and reboots into the installed system.
spk-visor system-install <pkg>spk-visor entire-system-upgrade.
spk-visor userland-install <pkg>system-install — SmechVisor has no
desktop environment or userland app layer.
spk-visor helpspk-visor aboutspk-visor versionOTA Updates
SmechVisor is designed for zero-downtime server operation.
spk-visor entire-system-upgrade handles two classes of update
differently:
| Package | Update method | Reboot needed? |
|---|---|---|
smechvisor-daemon |
Stop smechvisord → swap binary → restart immediately |
No — live swap, <3 seconds downtime |
smechvisor-base |
Write to disk, stage for next boot | Yes — scheduled, at operator's discretion |
How it works
spk-visorfetchessmechvisor-daemon.tar.xzandsmechvisor-base.tar.xzfrom the GitHub Release URL usingcurl.- Packages are extracted to a staging directory.
- The daemon package:
rc-service smechvisord stop→ copy binary →rc-service smechvisord start. - The base package: extracted to
/directly. Running system processes are unaffected. A reboot activates the new kernel or base libraries. - If the daemon fails to restart, the old binary is restored from a backup taken in step 2.
cloud-hypervisor
processes run independently and continue operating while smechvisord
restarts. The dashboard goes dark for under 3 seconds.
Network Deploy
Network deploy lets you provision a new bare-metal machine with SmechVisor without a USB drive, using an existing running SmechVisor node as the donor.
Prerequisites
- A running SmechVisor node (the donor) with
spk-visor - A target machine booted from the Deploy Shim ISO
- Both machines on the same network (LAN/VLAN — UDP broadcast must reach both)
Workflow
- Boot the target machine from the Deploy Shim ISO. Walk through: disk selection → auto-partition → network setup.
- The shim displays a 7-character code — for example
e13gts2. It also broadcasts this code on UDP port 9191 on the LAN. - On the donor node, run:
spk-visor deploy-system-img-copy e13gts2 spk-visorlistens on UDP port 9191 for the broadcast containingSMECHVISOR_SHIM:e13gts2, gets the sender's IP, connects back on TCP port 9192, and streams all packages.- The shim receives the packages, extracts them to the partitioned disk, installs GRUB, and reboots into SmechVisor.
Wire protocol
UDP discovery (port 9191):
SMECHVISOR_SHIM:{code}
# example: SMECHVISOR_SHIM:e13gts2
TCP package stream (port 9192):
[4 bytes big-endian: name length]
[name bytes: package name]
[8 bytes big-endian: data length]
[data bytes: raw .tar.xz contents]
... (repeat for each package)
[4 bytes: 0x00000000] -- stream terminator
Deploy Shim ISO
The Deploy Shim is a minimal bootable ISO that transforms any bare-metal machine into a SmechVisor receiver. It boots into a Rust + Newt TUI wizard with no desktop environment, no live OS — just the installer flow.
Shim TUI flow
- Disk selection — lists all detected block devices. Select the target disk.
- Auto-partition — the shim creates a GPT partition table with three partitions automatically:
Partition Size Type Mount Part 1 512 MB EFI System /boot/efiPart 2 2 GB Linux swap swapPart 3 Remaining Linux filesystem / - Network type — choose Ethernet or Wi-Fi.
- Ethernet: choose DHCP (auto) or static IP.
- Wi-Fi: select SSID from scan, enter password.
- Code display — a screen shows the 7-character deploy code. On another machine, run
spk-visor deploy-system-img-copy <code>. - Receive & install — packages stream in over TCP, progress is displayed. GRUB is installed to the EFI partition. System reboots into SmechVisor.
Shim ISO details
| Property | Value |
|---|---|
| Volume label | SMECHVISOR_SHIM |
| Boot | BIOS (GRUB i386-pc) + EFI (GRUB x86_64-efi) |
| Init | Minimal shell wrapper — mounts /proc /sys /dev, runs dhcpcd, launches spk-visor receive-deploy |
| Network | dhcpcd on all detected interfaces |
| DNS | 1.1.1.1 (Cloudflare) written to /etc/resolv.conf |
| Binary | Same spk-visor binary as the production SmechVisor image |
Download
The Deploy Shim ISO is distributed alongside the Install ISO on the SmechVisor downloads page.