Begin MACOS_VM_NATIVE_AGENT_Markdown

Nucleic-Session: 8BBA8B40-FA38-4556-8B3A-7A2DFD4C87B2
Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
2026-07-06 04:18:34 -07:00
co-authored by nucleic
parent 6c77007ed8
commit e09d855cfe
+13 -5
View File
@@ -256,11 +256,19 @@ recorded in the bundle's `bundle.json` and surfaced as "Installed guest macOS" i
> **No macOS 27 SDK or deployment-target bump is needed** to install/run a 27 guest — the stable
> `VZMacOSRestoreImage`/`VZMacOSInstaller`/`VZVirtualMachine` API (macOS 12→27) is version-agnostic and
> `Virtualization.framework` is resolved at runtime from the host. The package stays at `.macOS(26)`.
> macOS 27 does add *opt-in* APIs — notably **`VZMacGuestProvisioningOptions`** (declarative first-boot
> that injects the account and enables auto-login + SSH, potentially retiring the manual Setup-Assistant
> + kcpassword provisioning for 27 guests), plus DiskImageKit and USB pass-through — but these require
> the macOS 27 SDK + `if #available(macOS 27, *)` and are beta-rough, so they're future work, not wired
> in yet.
>
> **Declarative first-boot provisioning (macOS 27) — wired in.** On a macOS 27 host installing a
> macOS 27+ guest, `buildBaseImage` now runs an unattended first boot with
> **`VZMacGuestProvisioningOptions`** (`MacVMEngine+Provision27.swift`, gated
> `#available(macOS 27, *)`): the guest creates the `agent` account (password from
> `MacVMSettings.agentPassword`, else generated and persisted at `macvms/ssh/agent-password`),
> enables **auto-login** and **Remote Login**, then Nucleic authorizes its SSH key over one
> password-auth SSH (askpass) and shuts the guest down — an **exec-ready base with zero manual
> steps**, retiring the Setup-Assistant hand-work for the latest guests. The step is best-effort:
> any failure publishes the installed base anyway and the classic manual path (§4.2) still works.
> `bundle.json` records it as `accountProvisioned`. Toolchain + computer-use provisioning
> (`provision-macos-guest.sh`) still follows, but can now run over SSH. Other 27 additions
> (DiskImageKit, USB pass-through) remain future work.
---