https://github.com/nico81/iContainer
A native macOS app to manage Apple Container workloads, built with SwiftUI.
https://github.com/nico81/iContainer
apple-container container-management containers developer-tools macos macos-app swiftui
Last synced: 3 days ago
JSON representation
A native macOS app to manage Apple Container workloads, built with SwiftUI.
- Host: GitHub
- URL: https://github.com/nico81/iContainer
- Owner: nico81
- License: mit
- Created: 2026-06-15T22:07:57.000Z (25 days ago)
- Default Branch: main
- Last Pushed: 2026-07-07T18:17:20.000Z (3 days ago)
- Last Synced: 2026-07-07T20:10:31.603Z (3 days ago)
- Topics: apple-container, container-management, containers, developer-tools, macos, macos-app, swiftui
- Language: Swift
- Size: 10.4 MB
- Stars: 193
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-swift-macos-apps - iContainer - commit/nico81/iContainer?style=flat&label=" /> - GUI application for Apple Containers. (Virtual Machines / Text)
README
# iContainer
[](https://github.com/nico81/iContainer/releases)
[](LICENSE)



[](https://www.buymeacoffee.com/nicoemanuelli)
A native macOS app to manage [Apple Container](https://github.com/apple/container) workloads β containers, images, logs, stats, and an interactive shell β built with SwiftUI on top of the official `container` CLI.

## Features
- **AI log analysis, on-device** π§ β one **Explain** click on any container's or machine's Logs tab turns raw output into a concise diagnostic: a health summary, the errors/warnings it found (quoted), the likely cause, and concrete next steps β streamed live. Powered by Apple's **Foundation Models**, so the model runs **entirely on your Mac**: your logs (with their secrets, tokens and connection strings) **never leave the device** β no cloud, no API keys, **no subscription**. Requires Apple Intelligence on a supported Mac.
- **Dashboard** β container, machine, and image counts at a glance, quick actions (create container/machine, pull image), and a two-column overview of available containers and machines.
- **Container lifecycle** β create (from an image or a Dockerfile build), start, stop, restart, edit settings (ports, volumes, environment), delete. Editing recreates the container with the new configuration.
- **Container machines** β manage the Linux VMs that host containers (WWDC 2026): create, start/stop, edit (CPUs, memory, home mount), delete, with Info / Shell / Logs tabs per machine.
- **Sidebar** β reorderable Containers / Machines / Images sections (order, expand state, and filters persist), running/stopped sorting, search, and status filters; live status indicators.
- **Per-container detail tabs** β Info (network, mounts, DNS, env, exposed-port browser links), Stats with charts, persistent Shell session, Logs with follow mode.
- **Images** β list, pull, inspect, delete; registry login with guided error handling for auth failures.
- **Apple container service** β start/stop the system service, view its status, version, service-wide stats, and live system logs.
- **Update check** β notifies you when a newer release of the `container` CLI (or of iContainer itself) is available on GitHub.
- **Notifications** β optional system notifications when a container stops or an action fails.
- **Settings** β theme, launch at login, auto-start service, quit behavior, polling cadence, confirmation dialogs, default shell, terminal font, custom CLI path, default registry.
- **Menu bar extra** β control containers and machines and the service without opening the main window.
- **Keyboard shortcuts** β full menu bar command set (βN new container, β§βP pull image, β1ββ4 detail tabs, and more).
## Requirements
- macOS 26 or later (Apple silicon)
- [Apple Container CLI](https://github.com/apple/container/releases) installed
- Apple Intelligence enabled (optional) β only needed for the on-device AI log analysis; everything else works without it
## Getting started
1. Install the Apple Container CLI: download the latest `.pkg` from the
[releases page](https://github.com/apple/container/releases) and install it,
confirming the recommended default kernel.
2. Download the latest iContainer build from
[Releases](../../releases), or install via Homebrew (see below), or
build from source (see below).
3. Start the container service from the app β everything else flows from there.
If the CLI is missing, the app shows a setup screen with a download link instead of the main UI.
The app checks GitHub for new iContainer releases on launch (cached for one
hour) and surfaces an in-app banner plus a one-shot popup whenever your
running version is older than the latest published tag. You can also trigger
a check on demand from the **iContainer βΈ Check for Updatesβ¦** menu item.
> **Note on the first launch** β release builds are currently not notarized
> (the project doesn't have a paid Apple Developer account yet). macOS will
> block the app the first time: right-click the app β **Open**, or allow it
> under **System Settings β Privacy & Security β Open Anyway**.
> Alternatively, clear the quarantine flag from the terminal:
>
> ```sh
> xattr -d com.apple.quarantine /Applications/iContainer.app
> ```
### Install via Homebrew
A dedicated Homebrew tap is the easiest way to keep iContainer up to date
without re-authorising the bundle on every release β Homebrew strips the
quarantine flag automatically, which sidesteps the Gatekeeper warning above.
```sh
brew tap nico81/icontainer
brew install --cask icontainer
# Later, to upgrade to the newest release:
brew upgrade --cask icontainer
```
> Recent Homebrew versions ask you to trust casks from third-party taps. If
> the install stops with *"Refusing to load cask β¦ from untrusted tap"*, run
> `brew trust nico81/icontainer` (as the error suggests) and re-run the
> install.
The tap lives at
[nico81/homebrew-icontainer](https://github.com/nico81/homebrew-icontainer);
the canonical copy of the cask formula is vendored here as
[`Casks/icontainer.rb`](Casks/icontainer.rb) and mirrored to the tap on
each release.
## Building from source
```sh
git clone https://github.com/nico81/iContainer.git
cd iContainer
open iContainer.xcodeproj
```
Then build and run the `iContainer` scheme in Xcode. You will need to set your own development team in Signing & Capabilities. From the command line:
```sh
xcodebuild -project iContainer.xcodeproj -scheme iContainer -configuration Debug build
```
Unit tests cover the CLI-output parsing layer:
```sh
xcodebuild -project iContainer.xcodeproj -scheme iContainer -testPlan iContainer test
```
## Documentation
- [CHANGELOG.md](CHANGELOG.md) β release history
- [docs/PROJECT_CONTEXT.md](docs/PROJECT_CONTEXT.md) β architecture and component map
- [docs/UI_UX_GUIDELINES.md](docs/UI_UX_GUIDELINES.md) β UI/UX conventions
- [docs/VERSIONING.md](docs/VERSIONING.md) β release workflow
## Built with vibes π€
Full disclosure: iContainer was **vibe-coded** β designed and written
hand-in-hand with [Claude Code](https://claude.com/claude-code). The ideas,
the direction, and every "no, not like that" are human; a lot of the typing
isn't. It ships with unit tests and gets manually run on each change, but
it's a hobby project built for fun on top of brand-new Apple tech β so read
the code, kick the tires, and don't run it anywhere you'd cry about. PRs and
issues very welcome.
If it saves you some clicks, you can
[buy me a coffee](https://www.buymeacoffee.com/nicoemanuelli) β β entirely
optional, always appreciated.
## License
[MIT](LICENSE)