Barn 1.2.0: resources, root growth, and host names
Barn 1.2.0 was released on 2026-11-12 from commit 90f6158. It adds resource overrides, recoverable root-disk growth, configurable lifecycle concurrency, and inventory-based host names. The bilingual command reference covers all 57 operation commands and their options.
Upgrade from 1.1.0
Omitted Linux CPU/memory values now resolve to 1 vCPU / 2 GiB, down from 2 vCPUs / 4 GiB. This also affects existing inventories that omit these fields. To preserve the earlier defaults, set vm_cpu: 2 and vm_mem: 4GiB under all.vars, retain any per-host overrides, and inspect barn plan before applying changes. Existing applied VMs keep their resources until a resource-changing operation is requested. Root and data-disk defaults remain 64 GiB and 128 GiB.
VM resources
Use --cpu/-C, --mem/-M, --scale/-S, and --disk/-D alongside image and architecture selection. Corresponding BARN_* environment variables provide defaults; command-line values take precedence. Generated inventories save the base settings. Plans, validation, status, and lifecycle output display effective resources as SPEC labels such as 1c2g; JSON retains numeric resources, bases, scale, and input sources.
resize --disk/-D grows an existing root disk. Barn stops QEMU before enlarging the disk, verifies its last plain ext4/XFS partition inside the guest, and records recovery stages so an interrupted operation can resume. It preserves VM identity, keys, and data and restores the original running/stopped intent. Shrinking and unsupported layouts are rejected. See root growth and recovery.
Lifecycle concurrency
--parallel/-p controls node concurrency for up, start, stop, restart, reload, recreate, destroy, and purge. The default is the logical CPU count minus two, with a minimum of one. Zero runs all selected nodes concurrently; a positive value sets the limit. Retry commands preserve explicit overrides.
Inventory host names
Declare service names in all.vars.vm_hosts, preview with barn hosts install -f pigsty.yml --json, and apply with barn hosts install -f pigsty.yml --yes. The inventory path works before VM creation; omitting -f continues to use applied node names. Identical mappings merge case-insensitively; conflicting addresses fail. These host-side mappings leave VM identity and guest configuration unchanged. See extra host mappings.
Dependencies and packaging
Source builds, CI, and release artifacts use Go 1.27.4. The dependency refresh updates golang.org/x/sys to 0.50.0, golang.org/x/term to 0.48.0, golang.org/x/text to 0.44.0, and github.com/klauspost/compress to 1.20.4. Packaging uses GoReleaser 2.20.1, bundled nFPM 2.48.0, and Syft 1.57.1. RPM payload verification now requires SOURCE_DATE_EPOCH timestamps. Pins and license inventories are recorded in the release source.
govulncheck found no vulnerabilities in imported packages or reachable symbols. Its module-level report lists GO-2026-5932 in golang.org/x/crypto/openpgp, which Barn does not import.
Image catalog
The embedded signed catalog remains revision 2026110502, with 9 distribution families and 17 architecture-specific stable artifacts. Both official repositories passed signature verification, activation in fresh data roots, embedded-byte comparison, and availability/size checks. Ubuntu 24.04 on the native architecture remains the default image.
Release validation
The release validation record records source and packaging CI, Developer ID signing and notarization, artifact checks, Linux/KVM root-growth recovery, the native Mac lifecycle, and the published 1.1.0 upgrade test. Historical candidate runs retain their original version and scope.
Install or build
Stop running Mac VMs before replacing Barn.app, then upgrade through Homebrew:
Or install the versioned release:
The installer verifies archive SHA-256. The Darwin arm64 archive includes the signed, notarized CLI, helper, and Barn.app; other archives and Linux DEB/RPM packages contain the CLI and matching helper. See installation and source builds.