Skip to content

Barn 1.0.0: the first stable release

Barn’s first stable release hardens destructive operations, data-disk recovery, catalog integrity, and cancellation, and updates image catalog revision to 2026110502.

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 recreate without node selectors refuses an inventory that no longer lists an existing node (conflict, reason nodes_removed, exit 4) before any VM stops. Earlier releases destroyed the omitted node without recreating it. Run barn destroy NODE to 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_changed when 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, and provision keep working. Update the inventory’s control role, then run barn up to 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, and reload show the host-preparation plan and ask once before installing packages or the Barn network. Without a terminal they report what is missing; run barn setup --yes for unattended preparation.
  • --yes for destruction. destroy, recreate, mac destroy, and mac recreate accept --yes. --force keeps working, and mac stop --force still powers the VM off.
  • Catalog failures exit 7. A catalog signature or signed revision that does not verify exits 7 (integrity, reason catalog_signature or catalog_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, which sudo forwards, and Barn waits at most 10 seconds for the process and its inherited pipes.
  • Host networking and Mac images. barn network uninstall keeps global networkd unit state when other host links exist (preserve_networkd, checks.networkd). Mac image pruning keeps bases that interrupted recreates still reference.
  • CLI. barn without a command prints the complete help; --json and --yaml keep the actions[] document. Explicit --json, --yaml, and --verbose override BARN_OUTPUT and BARN_VERBOSE, and help stays available when those variables are invalid.
  • Dependencies. Go 1.27.3, golang.org/x/net 0.62.0, and go.yaml.in/yaml/v3 3.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.

Homebrew
brew update
brew upgrade pgsty/infra/barn
barn version
Linux installer
curl -fLO https://github.com/pgsty/barn/releases/download/v1.0.0/install.sh
BARN_VERSION=1.0.0 bash install.sh
barn version

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 in barn 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.