Install or upgrade with:
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bashContainer GUI 1.5.0 adds Machines, a destination for the long-lived Linux VMs container machine manages, and the terminal that was missing from the app. Machines never appear in Containers — the service filters them out of every container list — so until now they were invisible to the app entirely.
Changes
- Machines, a new top-level destination between Containers and Images. The table is
container machine listcolumn for column, so the two views cannot disagree, and the sidebar names the default machine because that is what an omitted machine ID resolves to. - Creates a machine with every
machine createflag, pre-filled with what the CLI would have computed — half your cores with a minimum of four, half your RAM — so the sheet is submittable as soon as you name an image. The command preview lists only what you actually changed. - Edits boot configuration as a running-versus-after-restart pair rather than a form.
machine setwrites immediately but the machine keeps running on its old values, so a plain form would be lying; the pair says which is which, and the list marks a machine whose changes are still pending. - Opens a shell inside a machine, in the app. The pseudo-terminal plumbing has been in the codebase for a while with nothing wired to it; it now drives a real terminal emulator, so a login shell, a one-off command, resizing, and Ctrl-C all work without leaving the window.
- Reads both machine log files — the boot log and process output — in one pane, with the same follow and tail controls the CLI has. The boot log is the fastest way to see why a machine will not start.
- Runs the privileged DNS commands in that same terminal as an alternative to the macOS authorization dialog, so
sudo container system dns …can be watched rather than copied into Terminal. The macOS dialog is still what the default buttons use, and the sheet says plainly that this route types the password into the app's own terminal. Seedocs/decisions/0002. - Fixes a latent bug in the shared pseudo-terminal code: output was decoded one 4 KB read at a time, so any UTF-8 character split across a read boundary became a replacement character. This also affects
container execoutput.
Compatibility and validation
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0. Machines needs1.0.0or later, which is whencontainer machinewas added; below that the destination is hidden rather than shown broken. - Building from source now needs the Metal Toolchain component (
xcodebuild -downloadComponent MetalToolchain) and, for command-line builds,-skipPackagePluginValidation. Both come from SwiftTerm, the first third-party dependency in the project. See the README. - Every machine command was checked against
container machine <command> --helpfrom CLI1.3.0, and the decoding fixtures are captured verbatim from that version'smachine list --format jsonandmachine inspect. - Two upstream gaps are worked around rather than papered over:
machine inspectdoes not reportvirtualizationorkernelPath, so those rows appear only when the CLI supplies them; and no payload carries a live-versus-stored pair, so pending boot changes are tracked by the app. - Built from commit
e444343on Apple silicon with macOS 27.0 and Apple Container CLI1.3.0on 30 August 2026. Apple's notary service accepted both the app and the disk image;spctl --assessreportsacceptedwithsource=Notarized Developer IDfor each, and the app still validates after being copied out of the disk image. - The full unit and UI suites pass. The manual gates in
docs/RELEASE_CHECKLIST.md— VoiceOver, the real smoke test, and the clean-Mac download test — have not been run for this release. - The terminal has not been exercised against a booted machine. Booting fails on the development hardware with "Operation not supported by device", so the shell's form, argument building, and failure paths are covered by tests but its rendering against a live machine is not. The
sudoDNS route has not been run end to end either, because doing so means entering an administrator password.
Download verification
SHA-256: 7c7278fdd44d9233d1bc3f9df6e76be4d0f451f42c78f3aa3635f021a71cab1a
The disk image is signed with a Developer ID Application certificate and notarized by Apple. Verify an installed copy yourself with:
spctl --assess --type execute --verbose=4 "/Applications/Container GUI.app"Upgrade and rollback
Re-run the install command above to upgrade in place. To roll back, pin a previous release, for example:
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash -s -- --version v1.4.0Known limitations
Interactive terminals are available for machines but not yet for containers: container exec still hands the interactive form to Terminal.app, even though the terminal view now exists and could serve it. The app does not yet manage registry authentication, build secrets or SSH forwarding, import, or kernel settings, or remote hosts.