Releases: Bramgus12/CargoDeck
Release list
Container GUI 1.5.0
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.
Container GUI 1.4.0
Container GUI 1.4.0
Install or upgrade with:
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bashContainer GUI 1.4.0 closes the gap between what the Apple Container CLI can do to a container and what the app can. Creating without starting, signalling, pruning, running a command inside a container, copying files in and out, and exporting a filesystem are all reachable from the containers screen.
Changes
- Creates a container without starting it. The run sheet gains a Run / Create control; the action button and the command preview follow it. Nothing is started, so there is no progress to stream and nothing to detach from — the sheet closes as soon as the new container is created and selects it.
- Sends a signal to a running container. Send Signal on the More Actions and row menus offers an allowlist of signals rather than a free-text field. SIGKILL is confirmed first because the process gets no chance to shut down; signals a process can handle are sent without a prompt.
- Prunes stopped containers from a toolbar button, with a confirmation before anything is deleted and a summary of what was removed. Pruning deletes containers the app did not name, so it waits until no per-container operation is in flight and blocks new ones while it runs.
- Runs a one-off command inside a running container and shows what it printed, with environment variables, user, and working directory. The process gets no terminal, which suits what a GUI is good for; Open in Terminal hands the interactive form of the same command to Terminal.app for anything that expects to be typed at.
- Copies files between a container and the local filesystem in either direction, with a file panel for the host side.
- Exports a container's filesystem as a tar archive, choosing the destination in a save panel so an existing file is never overwritten silently, and reporting progress for a write that can take a while. A container that is still running is exported as a snapshot of a filesystem being written to, and the sheet says so rather than refusing.
Compatibility and validation
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0. - Flag names for every new command were checked against
container <command> --helpfrom CLI1.2.2:createtakes the run flags without--progress,killtakes--signal,exporttakes--output, andcopyis the canonical spelling ofcp. - Built from commit
0fb1876on Apple silicon with macOS 27.0 and Apple Container CLI1.2.2on 24 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 (328 tests in all). 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, and the new lifecycle commands have not been exercised against a real CLI end to end.
Download verification
SHA-256: 0a07d3db683f835de9307dbfc53aaa8e97276630247650fb41d64403da782aff
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.3.0Known limitations
Interactive terminals still run in Terminal.app rather than inside the app. The pseudo-terminal plumbing exists and is tested, but no terminal view is wired to it. The app does not yet manage registry authentication, build secrets or SSH forwarding, import, or kernel settings, or remote hosts.
Container GUI 1.3.0
Container GUI 1.3.0
Install or upgrade with:
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bashContainer GUI 1.3.0 finishes the local DNS setup. Both halves of it — the
resolver entry that needs root and the service domain in your own
config.toml — are now changes the app makes for you, instead of commands and
snippets it asks you to run and paste yourself.
Changes
- Adds and removes local DNS domains directly. Writing to
/etc/resolverneeds
root, so the app raises the standard macOS authentication dialog, naming the
domain it is about to change, and runs the command through the Security Agent
once you authenticate. Dismissing the dialog cancels the change and reports
nothing as having happened. - Sets the service DNS domain in
~/.config/container/config.toml. The file is
yours, so this needs no administrator access. The edit is surgical: it
rewrites the onedomainline under[dns]and copies every other setting,
comment, and blank line through unchanged, so adomainkey in another table
is left alone. A file that states its DNS settings as an inline table or an
array of tables is reported as uneditable rather than rewritten. - Detects when a written domain is not yet in force. The service reads its DNS
domain when it starts, so the app compares what it wrote against what the
service reports; when they differ, the DNS section shows a restart notice with
a Restart Service button, and the notice clears itself once the service
reports the new domain. - Keeps every manual path. Copy Command, Copy TOML, and Reveal Config
remain wherever the app can now make the change itself.
Compatibility and validation
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0. - The app installs no privileged helper and holds no standing elevated rights.
Each/etc/resolverchange is authorised on its own through macOS. - Built from commit
76be378on Apple silicon with macOS 27.0 and Apple
Container CLI1.2.2on 23 August 2026. Apple's notary service accepted both
the app and the disk image;spctl --assessreportsacceptedwith
source=Notarized Developer IDfor each, and the app still validates after
being copied out of the disk image. - The full unit and UI suites pass (227 unit tests, 17 UI tests). The manual
gates indocs/RELEASE_CHECKLIST.md— VoiceOver, the real smoke test, and the
clean-Mac download test — have not been run for this release, and the macOS
authentication dialog has not been exercised end to end.
Download verification
SHA-256: 7a88bb5c55dfa4848d810b35778c800daac08505bf6b03da1633398b50f477ac
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.2.1Releases up to and including 1.2.0 are ad-hoc signed and not notarized, so
rolling back to one restores the Gatekeeper approval steps described in their
release notes.
Known limitations
The app does not yet manage registry authentication, build secrets or SSH
forwarding, interactive terminals, import/export, or kernel settings,
image/container pruning, or remote hosts.
Container GUI 1.2.1
Install or upgrade with:
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bashContainer GUI 1.2.1 is the first release signed with a Developer ID certificate
and notarized by Apple. The application code is unchanged from 1.2.0.
Changes
- Signs the app and the disk image with a Developer ID Application certificate,
notarizes both with Apple, and staples the tickets to each. macOS now accepts
the app on first launch with no Privacy & Security approval, and the check
works offline. - Rewrites
scripts/release.shto run the whole signing, notarization, and
stapling pipeline, verifying the Hardened Runtime, the secure timestamp, and
the Gatekeeper assessment of both artifacts before it reports success.
Compatibility and validation
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0. - Apple's notary service accepted both the app and the disk image. Verified on
Apple silicon with macOS 27.0 on 23 August 2026 thatspctl --assessreports
acceptedwithsource=Notarized Developer IDfor the app and the image, and
that the app still carries a valid stapled ticket after being copied out of
the disk image. - Runtime behavior carries over from the 1.2.0 validation, since no application
code changed in this release.
Download verification
SHA-256: 7f38c8e161880eac0dd0d83b34d414721751f66cb76dc4872602ef084be36afd
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.2.0Releases up to and including 1.2.0 are ad-hoc signed and not notarized, so
rolling back to one restores the Gatekeeper approval steps described in their
release notes.
Known limitations
The app does not yet manage registry authentication, build secrets or SSH
forwarding, interactive terminals, import/export, or kernel settings,
image/container pruning, or remote hosts.
Container GUI 1.2.0
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bashContainer GUI 1.2.0 adds complete volume and image-building workflows, built-in update checks, and a redesigned interface with richer live container details.
Changes
- Adds volume listing, search, inspection, creation, deletion, confirmed pruning, and named-volume mounts for new containers across Apple Container 0.12 and 1.x.
- Adds a guided image builder with build arguments, labels, targets, platforms, cache controls, resource limits, pull behavior, and output options.
- Adds a verified one-command installer and in-app update checks with release notes, skipped-version support, and a copyable upgrade command.
- Introduces a consistent light and dark design system, sortable resource tables, live sidebar activity, and clearer status and usage displays.
- Improves container and image inspectors, live statistics, build/run dialogs, and log filtering and layout.
- Fixes live logs failing to remain connected and system disk usage decoding as zero with current Apple Container output.
- Fixes valid build, volume, and mount values being rejected in optimized SDK 27 builds.
Compatibility and validation
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0. - Release commit:
bea0f68. - Validated on Apple silicon with macOS 27.0 (build 26A5416b) and Apple Container CLI 1.2.2 on 19 August 2026. Compatibility fixtures also cover the 0.12.0 and 1.x JSON formats used by the app.
- Apple Container 1.2.2 command reference.
Download verification
Container-GUI.dmg SHA-256:
d3d60f048cc549fa10366c2c90bed0547c7f5c7977a99a8ea175d6f10eb6872a
The DMG is ad-hoc signed and is not notarized by Apple. The installer verifies the GitHub-published checksum and the app's code signature before installing it.
Upgrade and rollback
Re-run the install command above to upgrade in place. To roll back to 1.1.0:
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash -s -- --version v1.1.0Known limitations
The app does not yet manage registry authentication, build secrets or SSH forwarding, interactive terminals, import/export, DNS or kernel settings, image/container pruning, or remote hosts.
Container GUI 1.1.0
Container GUI 1.1.0 adds network management and safer container and image workflows.
Changes
- Adds first-class network listing, search, structured inspection, creation, deletion, and confirmed pruning.
- Supports both Apple Container 0.12 and 1.x network schemas and version-specific creation options.
- Adds multiple network attachments to container runs, with optional MAC address and MTU values.
- Adds structured container and image inspection views for configuration, networking, ports, mounts, image variants, OCI metadata, and masked sensitive values.
- Adds dependency-aware image cleanup that confirms and removes dependent containers before deleting an image.
- Adds cancellation for active container runs while preserving drafts and refreshing authoritative state.
- Shares log viewing behavior and improves CLI command handling.
- Fixes network label, plugin-option, and legacy variant validation on current Swift toolchains.
Compatibility
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0.
Download verification
SHA-256: d30d30d33ee7cfc7ea6a1cc684429cfbc8ee2988e978f051c824b1b6b96ba4ac
The distributed DMG is ad-hoc signed and is not notarized. Follow the README Privacy & Security installation instructions when macOS blocks first launch.
Container GUI 1.0.2
Container GUI 1.0.2 improves the container log viewer.
Changes
- Adds selectable, wrapped log output with stable logical line numbers.
- Preserves the viewport while reading older output and provides an explicit Jump to Latest action.
- Keeps retained logs bounded without splitting UTF-8 characters or resetting logical line numbering during a stream.
- Fixes native log text being hidden by the line-number ruler, including the leading characters of wrapped lines.
- Improves log-viewer behavior across light and dark appearances and during live window resizing.
Compatibility
- macOS 26 or later on Apple-silicon Macs.
- Apple Container CLI
0.12.0or later and earlier than2.0.0.
Download verification
SHA-256: 051292afd960575b66454cee86c9577c7f9c5ea68669f83103a172b2641cb95d
The distributed DMG is ad-hoc signed and is not notarized. Follow the README's Privacy & Security installation instructions when macOS blocks the first launch.
Container GUI 1.0.1
Container GUI 1.0.1
Container GUI brings a focused, native SwiftUI interface to Apple Container on macOS. It covers the everyday workflow for managing containers, images, and the Apple Container service without requiring routine command-line use.
Changes
- Fixed the app icon appearing larger than other apps in the Dock by adopting the Icon Composer source directly and letting Xcode generate the platform-appropriate macOS icon.
- Removed the superseded legacy PNG app-icon catalog and updated the README icon preview.
Requirements
- An Apple-silicon Mac running macOS 26 or later.
- Apple Container CLI 0.12.0 or later and earlier than 2.0.0.
Installation
- Download
Container-GUI.dmgbelow. - Open the disk image.
- Drag Container GUI to the Applications shortcut.
- Open Container GUI from Applications.
Important
This release is ad-hoc signed and is not notarized by Apple. On first launch, macOS may say it cannot verify the developer and block the app. This is expected for this release.
Allowing the app on first launch
- Try to open Container GUI once so macOS records the blocked launch.
- Open System Settings → Privacy & Security.
- Scroll down to the Security section and click Open Anyway for Container GUI.
- Authenticate when prompted, then confirm Open.
The Open Anyway button is normally available for about an hour after the blocked launch attempt. You do not need to disable Gatekeeper globally.
SHA-256
3d1ec7b3c05c7d14b2dd4dfaefacd5da57d75273e2589be9c287a3ddafbe4585 Container-GUI.dmg
Known limitations
Version 1.0 does not yet manage networks, volumes, builds, registry authentication, interactive terminals, import/export, DNS or kernel settings, prune operations, or remote container hosts. Image deletion can fail while a container still depends on the image.
Container GUI 1.0.0
Container GUI 1.0.0
Container GUI brings a focused, native SwiftUI interface to Apple Container on macOS. It covers the everyday workflow for managing containers, images, and the Apple Container service without requiring routine command-line use.
Highlights
- Run, search, start, stop, inspect, and safely delete containers.
- Follow bounded container logs and view live CPU, memory, network, and block-I/O statistics.
- Browse, inspect, pull, run, and delete container images.
- Check Apple Container service health, start or stop the service, review disk usage, and inspect recent logs.
- Guided setup for a missing executable, an unsupported CLI version, or a stopped service.
- Sanitized support diagnostics that redact common secrets and credentials.
- A native macOS interface with searchable tables, inspectors, sheets, keyboard shortcuts, and the new Container GUI app icon.
Requirements
- An Apple-silicon Mac running macOS 26 or later.
- Apple Container CLI 0.12.0 or later and earlier than 2.0.0.
Installation
- Download
Container-GUI.dmgbelow. - Open the disk image.
- Drag Container GUI to the Applications shortcut.
- Open Container GUI from Applications.
Important
This release is ad-hoc signed and is not notarized by Apple. On first launch, macOS may say it cannot verify the developer and block the app. This is expected for this release.
Allowing the app on first launch
- Try to open Container GUI once so macOS records the blocked launch.
- Open System Settings → Privacy & Security.
- Scroll down to the Security section and click Open Anyway for Container GUI.
- Authenticate when prompted, then confirm Open.
The Open Anyway button is normally available for about an hour after the blocked launch attempt. You do not need to disable Gatekeeper globally.
SHA-256
2ec34ce005fae0b2403ffe62611351b44e036beb23998cc274c86bb2960ed113 Container-GUI.dmg
Known limitations
Version 1.0 does not yet manage networks, volumes, builds, registry authentication, interactive terminals, import/export, DNS or kernel settings, prune operations, or remote container hosts. Image deletion can fail while a container still depends on the image.