Barn 1.0.0: the first stable release
Released on 2026-11-05. Barn 1.0.0 is the first stable release. For the latest stable release, see Barn 1.1.0.
Barn 1.0.0 completes a pre-release audit of destructive operations, data-disk recovery, catalog integrity, and process cancellation. It embeds signed image catalog revision 2026110502, including Debian 13 image 20261103.2651.1 for amd64 and arm64.
Install Barn · GitHub release and assets · Changelog
Changes
- Whole-deployment recreate keeps omitted nodes.
barn recreatewithout node selectors refuses an inventory that no longer lists an existing node (conflict, reasonnodes_removed, exit 4) before any VM stops. Earlier releases destroyed the omitted node without recreating it. Runbarn destroy NODEto remove it, or add it back to the inventory. The confirmation lists every node that will be replaced, and the scope is checked again under the destruction lock (deployment_changedwhen the applied state changed during preflight). - Destroying the control node keeps the lab usable. The first remaining node becomes the control node, so
ssh-config,hosts,exec, andprovisionkeep working. Update the inventory’s control role, then runbarn upto install its control SSH access. Barn refuses to destroy the control node, before deleting anything, when the successor has an unfinished prepare record that cannot be completed; the error names the successor. - Data disks are reset only on recognized corruption. Blank disks are initialized. An ext4 or XFS filesystem is reset only when the checker reports recognized corruption, including on a persistent disk. Partition tables, signatures without a UUID, unsupported filesystem features, and unknown checker failures keep their data and produce a warning. Existing guests receive the updated helper on their next
barn up. - One confirmation before host changes. On a terminal,
up,start,restart, andreloadshow the host-preparation plan and ask once before installing packages or the Barn network. Without a terminal they report what is missing; runbarn setup --yesfor unattended preparation. --yesfor destruction.destroy,recreate,mac destroy, andmac recreateaccept--yes.--forcekeeps working, andmac stop --forcestill powers the VM off.- Catalog failures exit 7. A catalog signature or signed revision that does not verify exits 7 (
integrity, reasoncatalog_signatureorcatalog_equivocation). Permission and I/O errors on a cached signature remain runtime failures (exit 1). Both official repositories share the embedded upgrade baseline, and a new trusted signature over identical catalog bytes is accepted. - Cancellation reaches
sudo. Cancelled commands receive SIGTERM, whichsudoforwards, and Barn waits at most 10 seconds for the process and its inherited pipes. - Host networking and Mac images.
barn network uninstallkeeps global networkd unit state when other host links exist (preserve_networkd,checks.networkd). Mac image pruning keeps bases that interrupted recreates still reference. - CLI.
barnwithout a command prints the complete help;--jsonand--yamlkeep theactions[]document. Explicit--json,--yaml, and--verboseoverrideBARN_OUTPUTandBARN_VERBOSE, and help stays available when those variables are invalid. - Dependencies. Go 1.27.3,
golang.org/x/net0.62.0, andgo.yaml.in/yaml/v33.0.6.
Upgrade
Upgrade through the channel you installed with. The installer selects the latest stable release (1.1.0), verifies the archive against the release’s checksums.txt, and installs into ~/.local/bin without sudo; set BARN_VERSION=1.0.0 to pin 1.0.0. DEB and RPM packages are attached to the GitHub release.
Upgrading from 0.9.3 keeps VM disks, SSH keys, state, and configuration under ~/.barn and requires no recreation. Stop macOS VMs before replacing the native component. The Apple Silicon archive and the Homebrew installation include the signed, notarized Barn.app with the CLI and hosts helper; Intel macOS and Linux amd64/arm64 archives provide the CLI and hosts helper.
Check scripts for three changes: catalog signature failures exit 7 instead of 1, a whole-deployment recreate exits 4 when the inventory omits an existing node, and interactive up asks before preparing the host.
Known limitations
- A malformed Mac recovery journal stops
barn mac image ls, the space estimate inbarn mac doctor, and image pruning until it is repaired. - One unreadable Mac machine state stops
barn mac ls; the other machines stay usable by name. - Linux guest shares on macOS hosts need a guest kernel with 9p support.
Security fixes land in the latest 1.x patch release; 0.x releases receive no further fixes. See the Linux quick start and Mac guide.