{"id":50989127,"url":"https://github.com/nico81/iContainer","last_synced_at":"2026-07-07T22:00:45.860Z","repository":{"id":365731409,"uuid":"1270608785","full_name":"nico81/iContainer","owner":"nico81","description":"A native macOS app to manage Apple Container workloads, built with SwiftUI.","archived":false,"fork":false,"pushed_at":"2026-07-07T18:17:20.000Z","size":10939,"stargazers_count":193,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-07T20:10:31.603Z","etag":null,"topics":["apple-container","container-management","containers","developer-tools","macos","macos-app","swiftui"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nico81.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"buy_me_a_coffee":"nicoemanuelli"}},"created_at":"2026-06-15T22:07:57.000Z","updated_at":"2026-07-07T18:17:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nico81/iContainer","commit_stats":null,"previous_names":["nico81/icontainer"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/nico81/iContainer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nico81%2FiContainer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nico81%2FiContainer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nico81%2FiContainer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nico81%2FiContainer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nico81","download_url":"https://codeload.github.com/nico81/iContainer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nico81%2FiContainer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35243953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-07T02:00:07.222Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple-container","container-management","containers","developer-tools","macos","macos-app","swiftui"],"created_at":"2026-06-20T00:00:28.871Z","updated_at":"2026-07-07T22:00:45.848Z","avatar_url":"https://github.com/nico81.png","language":"Swift","funding_links":["https://buymeacoffee.com/nicoemanuelli","https://www.buymeacoffee.com/nicoemanuelli"],"categories":["Virtual Machines"],"sub_categories":["Text"],"readme":"# iContainer\n\n\u003c!-- The release badge is dynamic — shields.io reads it from the GitHub\n     API and updates on each published release once the repo is public. --\u003e\n[![Latest release](https://img.shields.io/github/v/release/nico81/iContainer?sort=semver)](https://github.com/nico81/iContainer/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n![Platform: macOS 26+](https://img.shields.io/badge/platform-macOS%2026%2B-lightgrey?logo=apple)\n![Built with SwiftUI](https://img.shields.io/badge/SwiftUI-%E2%9C%93-orange?logo=swift\u0026logoColor=white)\n![Vibe-coded with Claude Code](https://img.shields.io/badge/vibe--coded%20with-Claude%20Code-8A2BE2)\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?logo=buymeacoffee\u0026logoColor=black)](https://www.buymeacoffee.com/nicoemanuelli)\n\nA 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.\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/home-dark.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/images/home-light.png\"\u003e\n  \u003cimg alt=\"iContainer dashboard\" src=\"docs/images/home-dark.png\" width=\"900\"\u003e\n\u003c/picture\u003e\n\n## Features\n\n- **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.\n- **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.\n- **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.\n- **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.\n- **Sidebar** — reorderable Containers / Machines / Images sections (order, expand state, and filters persist), running/stopped sorting, search, and status filters; live status indicators.\n- **Per-container detail tabs** — Info (network, mounts, DNS, env, exposed-port browser links), Stats with charts, persistent Shell session, Logs with follow mode.\n- **Images** — list, pull, inspect, delete; registry login with guided error handling for auth failures.\n- **Apple container service** — start/stop the system service, view its status, version, service-wide stats, and live system logs.\n- **Update check** — notifies you when a newer release of the `container` CLI (or of iContainer itself) is available on GitHub.\n- **Notifications** — optional system notifications when a container stops or an action fails.\n- **Settings** — theme, launch at login, auto-start service, quit behavior, polling cadence, confirmation dialogs, default shell, terminal font, custom CLI path, default registry.\n- **Menu bar extra** — control containers and machines and the service without opening the main window.\n- **Keyboard shortcuts** — full menu bar command set (⌘N new container, ⇧⌘P pull image, ⌘1–⌘4 detail tabs, and more).\n\n## Requirements\n\n- macOS 26 or later (Apple silicon)\n- [Apple Container CLI](https://github.com/apple/container/releases) installed\n- Apple Intelligence enabled (optional) — only needed for the on-device AI log analysis; everything else works without it\n\n## Getting started\n\n1. Install the Apple Container CLI: download the latest `.pkg` from the\n   [releases page](https://github.com/apple/container/releases) and install it,\n   confirming the recommended default kernel.\n2. Download the latest iContainer build from\n   [Releases](../../releases), or install via Homebrew (see below), or\n   build from source (see below).\n3. Start the container service from the app — everything else flows from there.\n\nIf the CLI is missing, the app shows a setup screen with a download link instead of the main UI.\n\nThe app checks GitHub for new iContainer releases on launch (cached for one\nhour) and surfaces an in-app banner plus a one-shot popup whenever your\nrunning version is older than the latest published tag. You can also trigger\na check on demand from the **iContainer ▸ Check for Updates…** menu item.\n\n\u003e **Note on the first launch** — release builds are currently not notarized\n\u003e (the project doesn't have a paid Apple Developer account yet). macOS will\n\u003e block the app the first time: right-click the app → **Open**, or allow it\n\u003e under **System Settings → Privacy \u0026 Security → Open Anyway**.\n\u003e Alternatively, clear the quarantine flag from the terminal:\n\u003e\n\u003e ```sh\n\u003e xattr -d com.apple.quarantine /Applications/iContainer.app\n\u003e ```\n\n### Install via Homebrew\n\nA dedicated Homebrew tap is the easiest way to keep iContainer up to date\nwithout re-authorising the bundle on every release — Homebrew strips the\nquarantine flag automatically, which sidesteps the Gatekeeper warning above.\n\n```sh\nbrew tap nico81/icontainer\nbrew install --cask icontainer\n\n# Later, to upgrade to the newest release:\nbrew upgrade --cask icontainer\n```\n\n\u003e Recent Homebrew versions ask you to trust casks from third-party taps. If\n\u003e the install stops with *\"Refusing to load cask … from untrusted tap\"*, run\n\u003e `brew trust nico81/icontainer` (as the error suggests) and re-run the\n\u003e install.\n\nThe tap lives at\n[nico81/homebrew-icontainer](https://github.com/nico81/homebrew-icontainer);\nthe canonical copy of the cask formula is vendored here as\n[`Casks/icontainer.rb`](Casks/icontainer.rb) and mirrored to the tap on\neach release.\n\n## Building from source\n\n```sh\ngit clone https://github.com/nico81/iContainer.git\ncd iContainer\nopen iContainer.xcodeproj\n```\n\nThen build and run the `iContainer` scheme in Xcode. You will need to set your own development team in Signing \u0026 Capabilities. From the command line:\n\n```sh\nxcodebuild -project iContainer.xcodeproj -scheme iContainer -configuration Debug build\n```\n\nUnit tests cover the CLI-output parsing layer:\n\n```sh\nxcodebuild -project iContainer.xcodeproj -scheme iContainer -testPlan iContainer test\n```\n\n## Documentation\n\n- [CHANGELOG.md](CHANGELOG.md) — release history\n- [docs/PROJECT_CONTEXT.md](docs/PROJECT_CONTEXT.md) — architecture and component map\n- [docs/UI_UX_GUIDELINES.md](docs/UI_UX_GUIDELINES.md) — UI/UX conventions\n- [docs/VERSIONING.md](docs/VERSIONING.md) — release workflow\n\n## Built with vibes 🤖\n\nFull disclosure: iContainer was **vibe-coded** — designed and written\nhand-in-hand with [Claude Code](https://claude.com/claude-code). The ideas,\nthe direction, and every \"no, not like that\" are human; a lot of the typing\nisn't. It ships with unit tests and gets manually run on each change, but\nit's a hobby project built for fun on top of brand-new Apple tech — so read\nthe code, kick the tires, and don't run it anywhere you'd cry about. PRs and\nissues very welcome.\n\nIf it saves you some clicks, you can\n[buy me a coffee](https://www.buymeacoffee.com/nicoemanuelli) ☕ — entirely\noptional, always appreciated.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnico81%2FiContainer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnico81%2FiContainer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnico81%2FiContainer/lists"}