# Barn 0.9.0

> Linux labs, native macOS machines, clearer diagnostics, and recovery for interrupted operations.

---

LLMS index: [llms.txt](/llms.txt)

---

Barn 0.9.0 brings Linux labs and native macOS machines into one command-line
tool, with clearer diagnostics and recovery for interrupted operations.

[Install 0.9.0](/docs/start/installation/) · [Download assets](https://github.com/pgsty/barn/releases/tag/v0.9.0) · [Full changelog](https://github.com/pgsty/barn/blob/v0.9.0/CHANGELOG.md)

## macOS machines on Apple Silicon

`barn mac` creates named macOS 27 machines with a desktop, SSH, shared folders,
and text clipboard sharing. The first machine installs a base from Apple's
verified restore image; subsequent machines clone it with separate writable
disks, credentials, and private subnets.

```bash
barn mac up
barn mac open
barn mac ssh
```

Mac guests require Apple Silicon, macOS 27+, and the native `Barn Mac.app`
component. The 0.9.0 release archives contain the CLI; follow the
[Mac guide](/docs/start/macos/#install) to build the native
component from the release tag with Xcode 27.
Apple allows two macOS VMs running at a time, including other tools. Mac state
is independent of the Linux inventory and survives Linux `destroy` and `purge`.

## Easier Linux lab recovery

Repeat `barn up` to continue unfinished setup. A failed first start can be
retried after correcting the inventory, and an interrupted destroy can resume.
After a host reboot, a QEMU PID reused by an unrelated process no longer blocks
the lab: Barn recognizes the old VM as stopped without signaling that process.

Concurrent modifying commands wait up to ten minutes and identify the operation
holding the lock. Status and access commands remain available. Plans now list
each node's data disks, including the default 128 GiB `/data` disk.

## Diagnostics with a next step

Inventory errors include the rule, value, and source line when available, with
suggestions for mistyped `vm_*` fields. Failed external commands retain the
useful tail of stderr. JSON failures use a consistent class and optional
`reason` and `next` fields.

Host setup explains its package and network changes before requesting privileges.
Barn preserves linked SSH configuration files and prints the Include line to
add through your dotfile manager.

## Updated Linux images

The release embeds catalog **2026093001**, with **41 artifacts in nine families**.
Debian 12/13 and Rocky Linux 8/9 use Barn-normalized images. Debian includes XFS
tools and `en_US.UTF-8`, while keeping `C.UTF-8` as its default locale. Rocky
Linux 8 uses its shipped chrony configuration and `chronyd` service, with SELinux
labels completed during image creation to avoid first-boot relabeling. Ubuntu
keeps Canonical's original image bytes. Ubuntu 24.04 remains the default.

```bash
barn image list
barn update
```

`barn update` refreshes the Linux image catalog; it does not upgrade the Barn
application or replace an existing VM's disk.

## Upgrade notes

- The command is `barn`, the preferred configuration file is `barn.yml`, and
  state lives under `~/.barn`; environment variables use `BARN_*`.
- The destructive `rm` alias is removed. Use `purge` explicitly when you intend
  to discard the complete Linux deployment, including persistent disks and keys.
- For scripts, `recreate_required` and `nodes_removed` are `reason` values under
  `error: "conflict"`; `resource_conflict` becomes `resource`. Missing inventory
  and unknown images return usage/2. Read the [exit-code reference](/docs/reference/cli/#exit-codes).
- `stop` and `start` keep disks. `recreate` replaces the root and non-persistent
  disks. Persistent Linux data disks may still be reset if their filesystems
  are unrecognized or confirmed damaged; [review the storage rules](/docs/start/storage/).

Start with the [Linux quick start](/docs/start/tutorial/) or the
[macOS guide](/docs/start/macos/). Report problems with the command, Barn version,
host platform, and relevant logs in [GitHub Issues](https://github.com/pgsty/barn/issues).
