Skip to content

Releases: Bramgus12/CargoDeck

Container GUI 1.5.0

Choose a tag to compare

@Bramgus12 Bramgus12 released this 30 Aug 21:10
64a278c

Install or upgrade with:

curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash

Container 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 list column 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 create flag, 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 set writes 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. See docs/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 exec output.

Compatibility and validation

  • macOS 26 or later on Apple-silicon Macs.
  • Apple Container CLI 0.12.0 or later and earlier than 2.0.0. Machines needs 1.0.0 or later, which is when container machine was 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> --help from CLI 1.3.0, and the decoding fixtures are captured verbatim from that version's machine list --format json and machine inspect.
  • Two upstream gaps are worked around rather than papered over: machine inspect does not report virtualization or kernelPath, 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 e444343 on Apple silicon with macOS 27.0 and Apple Container CLI 1.3.0 on 30 August 2026. Apple's notary service accepted both the app and the disk image; spctl --assess reports accepted with source=Notarized Developer ID for 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 sudo DNS 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.0

Known 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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 24 Aug 19:59
86780bb

Container GUI 1.4.0

Install or upgrade with:

curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash

Container 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.0 or later and earlier than 2.0.0.
  • Flag names for every new command were checked against container <command> --help from CLI 1.2.2: create takes the run flags without --progress, kill takes --signal, export takes --output, and copy is the canonical spelling of cp.
  • Built from commit 0fb1876 on Apple silicon with macOS 27.0 and Apple Container CLI 1.2.2 on 24 August 2026. Apple's notary service accepted both the app and the disk image; spctl --assess reports accepted with source=Notarized Developer ID for 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.0

Known 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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 23 Aug 21:09
76be378

Container GUI 1.3.0

Install or upgrade with:

curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash

Container 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/resolver needs
    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 one domain line under [dns] and copies every other setting,
    comment, and blank line through unchanged, so a domain key 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.0 or later and earlier than 2.0.0.
  • The app installs no privileged helper and holds no standing elevated rights.
    Each /etc/resolver change is authorised on its own through macOS.
  • Built from commit 76be378 on Apple silicon with macOS 27.0 and Apple
    Container CLI 1.2.2 on 23 August 2026. Apple's notary service accepted both
    the app and the disk image; spctl --assess reports accepted with
    source=Notarized Developer ID for 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 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 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.1

Releases 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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 23 Aug 19:52
f329203

Install or upgrade with:

curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash

Container 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.sh to 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.0 or later and earlier than 2.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 that spctl --assess reports
    accepted with source=Notarized Developer ID for 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.0

Releases 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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 19 Aug 18:38
bea0f68
curl -fsSL https://raw.githubusercontent.com/Bramgus12/container-gui/main/scripts/install.sh | bash

Container 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.0 or later and earlier than 2.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.0

Known 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.

Full changelog

Container GUI 1.1.0

Choose a tag to compare

@Bramgus12 Bramgus12 released this 12 Aug 07:04
f3531e1

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.0 or later and earlier than 2.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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 10 Aug 21:17
36a146e

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.0 or later and earlier than 2.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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 03 Aug 20:45
fa09ff9

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

  1. Download Container-GUI.dmg below.
  2. Open the disk image.
  3. Drag Container GUI to the Applications shortcut.
  4. 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

  1. Try to open Container GUI once so macOS records the blocked launch.
  2. Open System Settings → Privacy & Security.
  3. Scroll down to the Security section and click Open Anyway for Container GUI.
  4. 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

Choose a tag to compare

@Bramgus12 Bramgus12 released this 03 Aug 20:19
506aad4

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

  1. Download Container-GUI.dmg below.
  2. Open the disk image.
  3. Drag Container GUI to the Applications shortcut.
  4. 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

  1. Try to open Container GUI once so macOS records the blocked launch.
  2. Open System Settings → Privacy & Security.
  3. Scroll down to the Security section and click Open Anyway for Container GUI.
  4. 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.