Farrow 0.8.0: clearer recovery and refreshed images
Farrow 0.8.0 reduces manual work after interrupted setup and partial VM starts. It also refreshes the Debian and Ubuntu images while retaining every previous Catalog artifact and the identity of existing VMs.
What changed
- Host preparation follows the command. Interactive
start,restart, andreloadcan prepare missing host tools and restore an intact Farrow network. On macOS, new network installation completes Homebrew discovery/installation or the verified archive download before requesting administrator authentication, so Homebrew cannot invalidate a credential acquired too early. - A failed node does not block independent peers. A missing host share fails
its own node during
uporstart; stopped peers can still start when a new node fails to prepare. Errors name the source and mount, and Farrow does not create an empty replacement. Restart/reload/recreate check share access before stopping existing VMs. - Recovery preserves identity. A missing public key is derived from the original private key. A lost private key produces backup-recovery guidance instead of a new login identity. macOS vmnet log-directory recovery retains network ownership evidence and avoids false subnet-conflict reports.
- Failures keep their context. Scoped retry commands preserve the inventory,
repository, and applicable flags; a
startretry remainsstart. Setup and its retry share one operation ID, and bounded event logs work before deployment state exists. Uncached image information no longer requires QEMU. - Cleanup reports the final result. Explicit persistent-disk deletion and purge no longer describe disks as both retained and deleted. Owned disks left by a previously removed node do not block destruction of the remaining lab.
September images
Embedded Catalog 2026092001 contains 37 artifacts across nine families,
including all 27 previous artifacts. These new stable versions cover amd64
and arm64:
| Family | System version | Catalog version |
|---|---|---|
d12 |
Debian 12.15 | 20260909.2596.1 |
d13 |
Debian 13.7 | 20260914.2601.1 |
u22 |
Ubuntu 22.04.5 | 20260913.0.0 |
u24 |
Ubuntu 24.04.5 | 20260911.0.0 |
u26 |
Ubuntu 26.04.1 | 20260918.0.0 |
Debian keeps the offline XFS tools and generated en_US.UTF-8 locale, with
C.UTF-8 as the default. Ubuntu keeps Canonical’s original image bytes;
deployment accounts and networking are configured by cloud-init. Existing VMs
and explicitly pinned image versions keep their original bases. See
Images for repository and update behavior.
Install or upgrade
For an existing lab, review farrow plan and then run farrow up from its
inventory directory. On first use, run farrow up in a terminal to prepare the
host and create the default lab.
Farrow remains pre-1.0 and uses GitHub’s pre-release channel; keep the explicit
FARROW_VERSION. The release includes macOS/Linux amd64/arm64 archives, Linux
DEB/RPM packages, checksums, SBOMs, the installer, and a Homebrew formula.
Other installation methods are in the Quick Start.
start still powers on existing nodes; up applies the inventory and retries
unfinished guest setup. No separate repair command is required. The existing
test-data reset policy is unchanged: confirmed unusable test filesystems can
be cleared, including persistent data disks, with an explicit data-loss notice.
Missing devices, failed probes, busy mounts, or host I/O errors do not authorize
formatting; root disks and host shares stay outside that recovery path.
Validation and limits
Four hosts completed the seven-system pro path: two macOS arm64/HVF hosts and
two Linux amd64/KVM hosts, each with Rocky Linux 9.8/10.2, Debian 12.15/13.7,
and Ubuntu 22.04.5/24.04.5/26.04.1. The baseline candidate 6d7870e performed
clean initialization from the LAN repository. Runtime candidate 1c054a0 then
passed in-place installation, healthy repeated up, stop/start, two rounds of
guest SSH, data-disk access, Ansible configuration reads, and control-node SSH.
Both Macs also passed Ansible ping on all seven nodes. VM UUIDs, image identities,
and healthy root/data disk paths and inodes were retained. The temporary
acceptance VMs were subsequently cleaned up.
The following are single measurements, not a performance distribution. The
first up includes image download:
| Host | Platform | Clean first up at 6d | Healthy up at 1c | Existing-disk start at 1c |
|---|---|---|---|---|
| m0 | Linux amd64 / KVM | 117.915 s | 3.924 s | 36.944 s |
| m1 | macOS arm64 / HVF | 86.309 s | 1.745 s | 39.639 s |
| m3 | Linux amd64 / KVM | 98.443 s | 2.169 s | 44.068 s |
| m5 | macOS arm64 / HVF | 87.946 s | 1.467 s | 38.162 s |
The release tag points to 320a32afa8f6fca02592215aa0d5607ca4e852b2, which changes
only README and release notes relative to the tested runtime. Complete local
make check and release archive/package verification passed. The
source CI, independent
packaging snapshot, and
tag workflow all passed;
the tag workflow produced 20 release assets, including 19 checksummed payloads.
The release is public on
GitHub’s pre-release channel. All 20 anonymous downloads returned HTTP 200;
their full SHA-256 digests match the GitHub API and inspected draft, and all
19 payloads match checksums.txt.
The UX audit and image refresh record preserve the earlier regression, image-boot, and upgrade evidence.
Both official image repositories serve the same signed Catalog as the release.
An isolated farrow update against each endpoint verified its signature and
activated revision 2026092001. All ten new image objects at each endpoint
returned HTTP 200 with matching content lengths; this was not a fresh full-body
hash check of every public qcow2.
The public installer completed isolated user-directory installations on macOS
arm64 and Linux amd64. Both CLIs reported 0.8.0 / 320a32a, and the installed
CLI/helper bytes matched their verified public archives. The Linux download
used a temporary SSH loopback forward to the existing proxy, removed afterward.
Default installations and VM/network state were unchanged. These checks verify
binary delivery; fresh host setup and VM boot through the public installer
remain untested.
The Homebrew tap update
provides 0.8.0 with all four archive checksums matching the public release.
Local formula checks, strict online audit, and native arm64 brew fetch passed.
Homebrew CI
also passed its metadata, updater, style, platform, and audit checks on macOS
and Linux. No new Homebrew install, upgrade, or brew test was performed.
This is a clean 6d baseline followed by a 1c lifecycle replay, not a second clean initialization at 1c. The Homebrew authentication-order regression fails before the fix and passes after it; its fresh formula-install path was not replayed natively after the fix. Native macOS setup used the verified LAN backend archive. Physical-host reboot, a complete Pigsty installation, and native macOS amd64 or Linux arm64 operation remain outside this run.
macOS directory sharing remains unavailable with the tested QEMU directory descriptor behavior. The new preflight improves diagnosis; it does not add sharing support. The pro inventory used no host shares. A missing control-node guest private key is now reported even if an old ready marker exists, but automatic private-key reinjection is still not implemented. Management SSH can remain usable while peer SSH carries that limitation. See Status for the full dated matrix.