<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CLI on Barn</title>
    <link>https://barn.pgsty.com/tags/cli/</link>
    <description>Recent content in CLI on Barn</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Thu, 12 Nov 2026 00:00:00 +0800</lastBuildDate>
    
    
      <atom:link href="https://barn.pgsty.com/tags/cli/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Barn 1.2.0 release readiness and acceptance</title>
        <link>https://barn.pgsty.com/blog/design/release-1-2-0-readiness/</link>
        <pubDate>Thu, 12 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/release-1-2-0-readiness/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status, 2026-11-12:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/barn/releases/tag/v1.2.0&#34;&gt;Barn 1.2.0&lt;/a&gt; is published as stable/latest. Its final acceptance is recorded below; the candidate sections preserve the earlier review and its original scope.&lt;/p&gt;&#xA;&lt;h2 id=&#34;final-release&#34;&gt;Final release&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Tag &lt;code&gt;v1.2.0&lt;/code&gt; points to &lt;code&gt;90f615804b823b4eb491101e642073dcd37a9700&lt;/code&gt;. &lt;a href=&#34;https://github.com/pgsty/barn/actions/runs/43121333312&#34;&gt;Source/Mac CI&lt;/a&gt; and &lt;a href=&#34;https://github.com/pgsty/barn/actions/runs/43121333418&#34;&gt;complete packaging CI&lt;/a&gt; passed that exact commit before tagging. All 437 reviewed build inputs match the candidate manifest. The signed catalog gate passed again before formal packaging.&lt;/p&gt;&#xA;&lt;p&gt;The release used the documented local signing path because GitHub signing secrets remain unconfigured. Apple accepted notarization &lt;code&gt;165b486b-5055-4eca-a595-54bed6bdd6c1&lt;/code&gt;. &lt;code&gt;make release-local&lt;/code&gt; passed archive, DEB/RPM, SPDX, helper-pairing, timestamp, and package/archive checks. Downloaded CLI/helper/app bytes passed Developer ID, staple, and Gatekeeper checks. All 20 draft attachments and all 20 anonymous public downloads match the verified sizes and SHA-256 digests.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Barn 1.2.0: resources, root growth, and host names</title>
        <link>https://barn.pgsty.com/blog/release/1.2.0/</link>
        <pubDate>Thu, 12 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/release/1.2.0/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://github.com/pgsty/barn/releases/tag/v1.2.0&#34;&gt;Barn 1.2.0&lt;/a&gt; was released on &lt;strong&gt;2026-11-12&lt;/strong&gt; from commit &lt;a href=&#34;https://github.com/pgsty/barn/commit/90f615804b823b4eb491101e642073dcd37a9700&#34;&gt;&lt;code&gt;90f6158&lt;/code&gt;&lt;/a&gt;. It adds resource overrides, recoverable root-disk growth, configurable lifecycle concurrency, and inventory-based host names. The bilingual &lt;a href=&#34;https://barn.pgsty.com/docs/reference/commands/&#34;&gt;command reference&lt;/a&gt; covers all 57 operation commands and their options.&lt;/p&gt;&#xA;&lt;h2 id=&#34;upgrade-from-110&#34;&gt;Upgrade from 1.1.0&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Omitted Linux CPU/memory values now resolve to &lt;strong&gt;1 vCPU / 2 GiB&lt;/strong&gt;, down from 2 vCPUs / 4 GiB. This also affects existing inventories that omit these fields. To preserve the earlier defaults, set &lt;code&gt;vm_cpu: 2&lt;/code&gt; and &lt;code&gt;vm_mem: 4GiB&lt;/code&gt; under &lt;code&gt;all.vars&lt;/code&gt;, retain any per-host overrides, and inspect &lt;code&gt;barn plan&lt;/code&gt; 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.&lt;/p&gt;</description>
      </item>
    <item>
        <title>In-place root growth: recovery and native acceptance</title>
        <link>https://barn.pgsty.com/blog/design/root-disk-growth/</link>
        <pubDate>Wed, 11 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/root-disk-growth/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status (2026-11-11):&lt;/strong&gt; The unreleased development build implements &lt;code&gt;barn resize -D&lt;/code&gt;, with ext4 and XFS acceptance on macOS/arm64 using QEMU/HVF guests. Released 1.1.0 still limits resize to CPU/memory. See &lt;a href=&#34;../vm-resource-overrides/&#34;&gt;VM specification design&lt;/a&gt; for input precedence and &lt;a href=&#34;https://barn.pgsty.com/docs/reference/cli/#root-disk-growth&#34;&gt;root growth&lt;/a&gt; for the command contract.&lt;/p&gt;&#xA;&lt;h2 id=&#34;scope&#34;&gt;Supported scope&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-a9374782-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-a9374782-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn resize -D 128GiB meta&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;BARN_DISK&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;128GiB barn resize meta&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The target is an absolute root capacity. Growth is supported; shrinking is rejected. Repeating a completed target neither changes the image nor restarts the VM. CPU/memory changes may accompany growth; scale does not multiply disk size. Changes to images, architecture, data disks, networking, and shares still require explicit recreation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>VM specification parameters: commands, short flags, environment, and root disks</title>
        <link>https://barn.pgsty.com/blog/design/vm-resource-overrides/</link>
        <pubDate>Wed, 11 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/vm-resource-overrides/</guid>
        <description>&lt;p&gt;Image, architecture, CPU, memory, scale, and root disk size form one set of &lt;strong&gt;VM specification inputs&lt;/strong&gt;, with consistent names, value rules, and source tracking. Each command declares which fields it accepts and which changes it can apply; the resolution process has one implementation.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Status (2026-11-11):&lt;/strong&gt; This approved design is implemented: six CLI/environment inputs, command integration, inventory generation, source tracking, &lt;code&gt;SPEC&lt;/code&gt; display, and in-place root growth. These changes remain unreleased. Working-tree inventories default to 1 vCPU / 2 GiB; released Barn 1.1.0 still defaults to 2 vCPU / 4 GiB.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Main and command reference review</title>
        <link>https://barn.pgsty.com/blog/design/main-reference-review/</link>
        <pubDate>Wed, 11 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/main-reference-review/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Reviewed on 2026-11-11.&lt;/strong&gt; Both repositories were on &lt;code&gt;main&lt;/code&gt;, but neither had a clean working tree or matched its fetched remote head. The source checks passed on the reviewed working tree. The documentation now has a &lt;a href=&#34;https://barn.pgsty.com/docs/reference/commands/&#34;&gt;complete command reference&lt;/a&gt; with explicit stable, local-main, and uncommitted-feature labels.&lt;/p&gt;&#xA;&lt;h2 id=&#34;git-state&#34;&gt;Git and release state&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;wide expand td-table--wide&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Repository&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Local main&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Fetched origin/main&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;State at review entry&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pgsty/barn&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;6ab0cd5&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;b2cc8da&lt;/code&gt; (&lt;code&gt;v1.1.0&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;td&gt;Ahead 3; 11 tracked paths changed, plus &lt;code&gt;.idea/&lt;/code&gt;, &lt;code&gt;barn.yml&lt;/code&gt;, and &lt;code&gt;cmd/barn/hosts_inventory_test.go&lt;/code&gt; untracked&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;pgsty/barn.pgsty.com&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;bc7968a&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;d392cd5&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;Ahead 3; four reference files modified and six design-article files untracked&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;GitHub&amp;rsquo;s latest regular release was &lt;a href=&#34;https://github.com/pgsty/barn/releases/tag/v1.1.0&#34;&gt;v1.1.0&lt;/a&gt;, published on 2026-11-09. No v1.2.0 tag was present on the remote. The local 1.2.0 notes were marked as a draft.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Barn 1.1.0: image selection and live progress</title>
        <link>https://barn.pgsty.com/blog/release/1.1.0/</link>
        <pubDate>Mon, 09 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/release/1.1.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Released on 2026-11-09.&lt;/strong&gt; Barn 1.1.0 adds image and guest-architecture overrides, live progress tables, and more reliable CPU/memory resizing. It embeds signed image catalog revision &lt;code&gt;2026110502&lt;/code&gt;, with 9 distribution releases and 17 architecture-specific artifacts. The default remains Ubuntu 24.04 on the host&amp;rsquo;s native architecture.&lt;/p&gt;&#xA;&lt;h2 id=&#34;image-and-architecture&#34;&gt;Image and architecture selection&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use &lt;code&gt;--image/-I&lt;/code&gt; and &lt;code&gt;--arch/-A&lt;/code&gt; with &lt;code&gt;plan&lt;/code&gt;, &lt;code&gt;up&lt;/code&gt;, &lt;code&gt;reload&lt;/code&gt;, &lt;code&gt;recreate&lt;/code&gt;, and &lt;code&gt;resize&lt;/code&gt; to override the inventory for one command. Image overrides apply to selected nodes, and suggested follow-up commands retain the selections, overrides, and repository. Existing VMs require &lt;code&gt;recreate&lt;/code&gt; to change their image or architecture.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Barn 1.0.0: the first stable release</title>
        <link>https://barn.pgsty.com/blog/release/1.0.0/</link>
        <pubDate>Thu, 05 Nov 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/release/1.0.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Released on 2026-11-05.&lt;/strong&gt; Barn 1.0.0 is the first stable release. For the latest stable release, see &lt;strong&gt;&lt;a href=&#34;../1.1.0/&#34;&gt;Barn 1.1.0&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;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 &lt;code&gt;2026110502&lt;/code&gt;, including Debian 13 image &lt;code&gt;20261103.2651.1&lt;/code&gt; for amd64 and arm64.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://barn.pgsty.com/docs/start/installation/&#34;&gt;Install Barn&lt;/a&gt; · &lt;a href=&#34;https://github.com/pgsty/barn/releases/tag/v1.0.0&#34;&gt;GitHub release and assets&lt;/a&gt; · &lt;a href=&#34;https://github.com/pgsty/barn/blob/v1.0.0/CHANGELOG.md&#34;&gt;Changelog&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;changes&#34;&gt;Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Whole-deployment recreate keeps omitted nodes.&lt;/strong&gt; &lt;code&gt;barn recreate&lt;/code&gt; without node selectors refuses an inventory that no longer lists an existing node (&lt;code&gt;conflict&lt;/code&gt;, reason &lt;code&gt;nodes_removed&lt;/code&gt;, exit 4) before any VM stops. Earlier releases destroyed the omitted node without recreating it. Run &lt;code&gt;barn destroy NODE&lt;/code&gt; 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 (&lt;code&gt;deployment_changed&lt;/code&gt; when the applied state changed during preflight).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Destroying the control node keeps the lab usable.&lt;/strong&gt; The first remaining node becomes the control node, so &lt;code&gt;ssh-config&lt;/code&gt;, &lt;code&gt;hosts&lt;/code&gt;, &lt;code&gt;exec&lt;/code&gt;, and &lt;code&gt;provision&lt;/code&gt; keep working. Update the inventory&amp;rsquo;s control role, then run &lt;code&gt;barn up&lt;/code&gt; 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.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data disks are reset only on recognized corruption.&lt;/strong&gt; 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 &lt;code&gt;barn up&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;One confirmation before host changes.&lt;/strong&gt; On a terminal, &lt;code&gt;up&lt;/code&gt;, &lt;code&gt;start&lt;/code&gt;, &lt;code&gt;restart&lt;/code&gt;, and &lt;code&gt;reload&lt;/code&gt; show the host-preparation plan and ask once before installing packages or the Barn network. Without a terminal they report what is missing; run &lt;code&gt;barn setup --yes&lt;/code&gt; for unattended preparation.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;--yes&lt;/code&gt; for destruction.&lt;/strong&gt; &lt;code&gt;destroy&lt;/code&gt;, &lt;code&gt;recreate&lt;/code&gt;, &lt;code&gt;mac destroy&lt;/code&gt;, and &lt;code&gt;mac recreate&lt;/code&gt; accept &lt;code&gt;--yes&lt;/code&gt;. &lt;code&gt;--force&lt;/code&gt; keeps working, and &lt;code&gt;mac stop --force&lt;/code&gt; still powers the VM off.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Catalog failures exit 7.&lt;/strong&gt; A catalog signature or signed revision that does not verify exits 7 (&lt;code&gt;integrity&lt;/code&gt;, reason &lt;code&gt;catalog_signature&lt;/code&gt; or &lt;code&gt;catalog_equivocation&lt;/code&gt;). 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.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cancellation reaches &lt;code&gt;sudo&lt;/code&gt;.&lt;/strong&gt; Cancelled commands receive SIGTERM, which &lt;code&gt;sudo&lt;/code&gt; forwards, and Barn waits at most 10 seconds for the process and its inherited pipes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Host networking and Mac images.&lt;/strong&gt; &lt;code&gt;barn network uninstall&lt;/code&gt; keeps global networkd unit state when other host links exist (&lt;code&gt;preserve_networkd&lt;/code&gt;, &lt;code&gt;checks.networkd&lt;/code&gt;). Mac image pruning keeps bases that interrupted recreates still reference.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CLI.&lt;/strong&gt; &lt;code&gt;barn&lt;/code&gt; without a command prints the complete help; &lt;code&gt;--json&lt;/code&gt; and &lt;code&gt;--yaml&lt;/code&gt; keep the &lt;code&gt;actions[]&lt;/code&gt; document. Explicit &lt;code&gt;--json&lt;/code&gt;, &lt;code&gt;--yaml&lt;/code&gt;, and &lt;code&gt;--verbose&lt;/code&gt; override &lt;code&gt;BARN_OUTPUT&lt;/code&gt; and &lt;code&gt;BARN_VERBOSE&lt;/code&gt;, and help stays available when those variables are invalid.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dependencies.&lt;/strong&gt; Go 1.27.3, &lt;code&gt;golang.org/x/net&lt;/code&gt; 0.62.0, and &lt;code&gt;go.yaml.in/yaml/v3&lt;/code&gt; 3.0.6.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upgrade&#34;&gt;Upgrade&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Upgrade through the channel you installed with. The installer selects the latest stable release (&lt;code&gt;1.1.0&lt;/code&gt;), verifies the archive against the release&amp;rsquo;s &lt;code&gt;checksums.txt&lt;/code&gt;, and installs into &lt;code&gt;~/.local/bin&lt;/code&gt; without sudo; set &lt;code&gt;BARN_VERSION=1.0.0&lt;/code&gt; to pin &lt;code&gt;1.0.0&lt;/code&gt;. DEB and RPM packages are attached to the GitHub release.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Evolving the CLI Without Breaking Its Contracts</title>
        <link>https://barn.pgsty.com/blog/design/cli-contracts/</link>
        <pubDate>Wed, 04 Nov 2026 10:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/design/cli-contracts/</guid>
        <description>&lt;p&gt;Barn already uses Cobra. The useful part of the 2026-11-04 CLI proposal is its separation of command syntax, application orchestration, and observable behavior. This essay retains that design, checked against &lt;code&gt;v1.1.0&lt;/code&gt; on 2026-11-09. The package split and broader command reorganization remain proposals; current usage belongs in the &lt;a href=&#34;https://barn.pgsty.com/docs/reference/cli/&#34;&gt;CLI reference&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;existing-boundaries&#34;&gt;Keep the existing boundaries&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;cmd/barn/command_*.go&lt;/code&gt; defines the command families. Each execution constructs a fresh Cobra tree, avoiding flag values leaking between calls. Command handlers collect a &lt;code&gt;commandOutcome&lt;/code&gt;; a shared renderer handles text or structured results, while typed failures retain their exit code, reason, recovery hint, and any partial result. Linux lifecycle, image verification, and native Mac behavior remain in their domain packages.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Barn 0.9.3: safer resizing, selected nodes, and recovery</title>
        <link>https://barn.pgsty.com/blog/release/0.9.3/</link>
        <pubDate>Sat, 31 Oct 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/release/0.9.3/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Released on 2026-10-31.&lt;/strong&gt; Barn 0.x releases use GitHub&amp;rsquo;s pre-release channel. For the latest release, see &lt;strong&gt;&lt;a href=&#34;../1.1.0/&#34;&gt;Barn 1.1.0&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Barn 0.9.3 focuses on safer changes to local labs. It adds resource-only VM resize, lets selected nodes converge independently, accepts ordinary user path forms for inventories and shares, and recovers interrupted lifecycle operations.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://barn.pgsty.com/docs/start/installation/&#34;&gt;Install Barn&lt;/a&gt; · &lt;a href=&#34;https://github.com/pgsty/barn/releases/tag/v0.9.3&#34;&gt;Download 0.9.3&lt;/a&gt; · &lt;a href=&#34;https://github.com/pgsty/barn/blob/v0.9.3/.github/releases/0.9.3.md&#34;&gt;Source release notes&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;changes&#34;&gt;Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Edit &lt;code&gt;vm_cpu&lt;/code&gt; or &lt;code&gt;vm_mem&lt;/code&gt; and run &lt;code&gt;barn resize [node...]&lt;/code&gt;. Supported increases are hot-plugged when QEMU has reserved capacity; decreases and unsupported cases use an automatic stop/start while preserving the VM identity, disks, and SSH keys. Use &lt;code&gt;barn recreate&lt;/code&gt; for image, disk, network, or share changes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;plan&lt;/code&gt;, &lt;code&gt;up&lt;/code&gt;, &lt;code&gt;reload&lt;/code&gt;, &lt;code&gt;recreate&lt;/code&gt;, and &lt;code&gt;resize&lt;/code&gt; with selectors retain the applied definitions of unselected peers. Conflicts in addresses, aliases, control-node roles, and deployment-wide settings are checked before a node stops or is deleted.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;barn init [template] --image&lt;/code&gt; and &lt;code&gt;barn setup [template] --image&lt;/code&gt; select an image alias, channel, or version in generated templates without downloading it or rewriting an existing inventory.&lt;/li&gt;&#xA;&lt;li&gt;Relative paths, &lt;code&gt;~/&lt;/code&gt;, and directory symlinks work for &lt;code&gt;BARN_HOME&lt;/code&gt;, local repositories, catalog export, inventories, imported images, and share sources where applicable. Inventory-relative shares resolve beside the inventory&amp;rsquo;s real file; spaces, Unicode, overlapping sources, and readable directories owned by another user are supported.&lt;/li&gt;&#xA;&lt;li&gt;Provisioning accepts any positive &lt;code&gt;--parallel&lt;/code&gt; and &lt;code&gt;--timeout&lt;/code&gt;. Local images and catalog artifacts with declared sizes can exceed 8 GiB; digest-indexed imports, bounded reads, registry size checks, and cache verification protect the image store. &lt;code&gt;barn mac logs --lines&lt;/code&gt; accepts any positive line count.&lt;/li&gt;&#xA;&lt;li&gt;The embedded signed catalog is revision &lt;code&gt;2026102802&lt;/code&gt;, with 9 distribution families and 17 architecture-specific artifacts. The default remains &lt;code&gt;u24:stable&lt;/code&gt; on the host architecture.&lt;/li&gt;&#xA;&lt;li&gt;Interrupted Linux and macOS lifecycle, persistent-disk, and replacement operations leave journaled state for safe recovery. Signals produce the structured &lt;code&gt;cancelled&lt;/code&gt; result. &lt;code&gt;barn mac up --no-wait&lt;/code&gt; returns when the VM process starts; run &lt;code&gt;barn mac up NAME&lt;/code&gt; again before using SSH or exec on a machine whose first boot is still provisioning.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upgrade&#34;&gt;Upgrade&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Select &lt;strong&gt;0.9.3&lt;/strong&gt; explicitly with the download installer, or upgrade the Homebrew formula / Linux package. Existing VM disks and configuration remain under &lt;code&gt;~/.barn&lt;/code&gt;; no VM recreation is required.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Barn 0.9.2: signed Barn.app and explicit SSH/exec arguments</title>
        <link>https://barn.pgsty.com/blog/release/0.9.2/</link>
        <pubDate>Fri, 30 Oct 2026 00:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/release/0.9.2/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Released on 2026-10-30.&lt;/strong&gt; Barn 0.x releases use GitHub&amp;rsquo;s pre-release channel.&lt;/p&gt;&#xA;&lt;p&gt;Barn 0.9.2 includes the complete native macOS guest runtime in the Apple Silicon download and Homebrew installation. You can create Linux and macOS VMs after installing a single package, without installing Go or Xcode.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://barn.pgsty.com/docs/start/installation/&#34;&gt;Install Barn&lt;/a&gt; · &lt;a href=&#34;https://github.com/pgsty/barn/releases/tag/v0.9.2&#34;&gt;Download 0.9.2&lt;/a&gt; · &lt;a href=&#34;https://github.com/pgsty/barn/blob/v0.9.2/.github/releases/0.9.2.md&#34;&gt;Source release notes&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;changes&#34;&gt;Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The Darwin arm64 archive contains &lt;code&gt;barn&lt;/code&gt;, &lt;code&gt;barn-hosts-helper&lt;/code&gt;, and &lt;code&gt;Barn.app&lt;/code&gt; from the same source commit. All three executables use Developer ID signatures and are submitted together for Apple notarization; the app carries a stapled ticket and passes Gatekeeper assessment.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;brew install pgsty/infra/barn&lt;/code&gt; installs the CLI, QEMU, helper, and native app. The CLI discovers the app under Homebrew&amp;rsquo;s &lt;code&gt;libexec&lt;/code&gt;. macOS guests require Apple Silicon, macOS 27+, and a logged-in desktop session.&lt;/li&gt;&#xA;&lt;li&gt;The helper is signed before its final SHA-256 is embedded in the CLI. Packaging checks the pair again after attaching the native payload to the release archive.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ssh&lt;/code&gt;, &lt;code&gt;exec&lt;/code&gt;, &lt;code&gt;mac ssh&lt;/code&gt;, and &lt;code&gt;mac exec&lt;/code&gt; require &lt;code&gt;--&lt;/code&gt; before remote commands. SSH passes a command line to the guest shell; exec preserves individual arguments. Use &lt;code&gt;sh -c&lt;/code&gt; with exec for pipelines or redirection.&lt;/li&gt;&#xA;&lt;li&gt;Linux arm64/amd64 and Intel macOS continue to ship the CLI and helper for QEMU Linux guests.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;install-and-use&#34;&gt;Install and use&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-ff9803b3-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;13&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-ff9803b3-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install pgsty/infra/barn&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Linux guest&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn up&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn ssh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; meta -- uname -a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# macOS guest on Apple Silicon / macOS 27+&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn mac doctor&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn mac up mac1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn mac open mac1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;barn mac ssh mac1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The first macOS VM downloads Apple&amp;rsquo;s restore image and prepares a reusable base installation. Supply an existing compatible IPSW with &lt;code&gt;barn mac setup --ipsw PATH&lt;/code&gt; to use a local restore image.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Barn 0.4.0: one command, working data disks, one voice</title>
        <link>https://barn.pgsty.com/blog/release/0.4.0/</link>
        <pubDate>Wed, 02 Sep 2026 18:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/blog/release/0.4.0/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Historical release record (&lt;code&gt;0.4.0&lt;/code&gt;). Old release downloads are retired; use the &lt;a href=&#34;https://barn.pgsty.com/docs/start/installation/&#34;&gt;installation guide&lt;/a&gt; for the current release.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Barn 0.4.0 turns the first run into a single command, makes default data disks work out of the box on Debian and Ubuntu images, and unifies output formatting across all CLI commands while keeping the Pigsty inventory format, fixed-IP deployment model, state layout, and embedded catalog revision &lt;code&gt;2026082903&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-changed&#34;&gt;What changed&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Single-command first run.&lt;/strong&gt; When run in an interactive terminal on a host where the fixed-IP network has not been installed yet, &lt;code&gt;barn up&lt;/code&gt; automatically invokes &lt;code&gt;barn setup&lt;/code&gt;: it prints the host preparation plan, asks for confirmation before the privileged step, and continues directly into VM startup. &lt;code&gt;barn init&lt;/code&gt; now points to &lt;code&gt;barn up&lt;/code&gt; as the next command.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;vm_disks[].fs&lt;/code&gt; defaults to &lt;code&gt;auto&lt;/code&gt;.&lt;/strong&gt; Blank data disks are formatted as XFS when the guest has &lt;code&gt;mkfs.xfs&lt;/code&gt; and fall back to ext4 otherwise, matching Pigsty&amp;rsquo;s Vagrant workflow. Previously, the &lt;code&gt;xfs&lt;/code&gt; default failed on upstream Debian and Ubuntu cloud images that shipped without &lt;code&gt;xfsprogs&lt;/code&gt;. Existing deployments created under the old default are not flagged as configuration drift and keep their persistent disks intact.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Clearer guest bootstrap errors.&lt;/strong&gt; Guest failure markers now capture the failing command&amp;rsquo;s last output line, so &lt;code&gt;up&lt;/code&gt; reports &lt;code&gt;guest bootstrap failed during data-disks: xfs requested but mkfs.xfs is unavailable&lt;/code&gt; rather than a bare exit status.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Unified CLI output.&lt;/strong&gt; Lifecycle commands and &lt;code&gt;status&lt;/code&gt; print a consistent node table and, after &lt;code&gt;up&lt;/code&gt;, a &lt;code&gt;next: barn ssh &amp;lt;node&amp;gt;&lt;/code&gt; hint. &lt;code&gt;plan&lt;/code&gt; and &lt;code&gt;validate&lt;/code&gt; print a single summary line when no changes are needed, while &lt;code&gt;image list&lt;/code&gt;, &lt;code&gt;network status&lt;/code&gt;, &lt;code&gt;doctor&lt;/code&gt;, and preflight errors use plain prose without internal error codes (&lt;code&gt;spec hash&lt;/code&gt; and internal metadata remain available via &lt;code&gt;--json&lt;/code&gt;). Unknown-node errors list the available node names.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Standard SSH command pass-through.&lt;/strong&gt; &lt;code&gt;barn ssh &amp;lt;node&amp;gt; -- &#39;df -h /data; id&#39;&lt;/code&gt; forwards the remote command string to OpenSSH unchanged.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upgrading&#34;&gt;Upgrading&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If a Debian 12/13 or Ubuntu node created with 0.3.0 or earlier failed to mount &lt;code&gt;/data&lt;/code&gt;, run &lt;code&gt;barn recreate &amp;lt;node&amp;gt;&lt;/code&gt; once so the disk formats as ext4. Non-interactive automation running &lt;code&gt;up&lt;/code&gt; on an unprepared host without a TTY should still run &lt;code&gt;barn setup --yes&lt;/code&gt; beforehand.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
