An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          

# iContainer

[![Latest release](https://img.shields.io/github/v/release/nico81/iContainer?sort=semver)](https://github.com/nico81/iContainer/releases)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
![Platform: macOS 26+](https://img.shields.io/badge/platform-macOS%2026%2B-lightgrey?logo=apple)
![Built with SwiftUI](https://img.shields.io/badge/SwiftUI-%E2%9C%93-orange?logo=swift&logoColor=white)
![Vibe-coded with Claude Code](https://img.shields.io/badge/vibe--coded%20with-Claude%20Code-8A2BE2)
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?logo=buymeacoffee&logoColor=black)](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.



iContainer dashboard

## 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)