2.3 KiB
Apple Container Compose — Xcode macOS application (prototype)
A native SwiftUI macOS front end for Apple's container runtime. Includes a bundled Python Compose-style orchestration engine from the initial MVP.
Requirements
- Apple silicon Mac running macOS 26 or newer
- Xcode 26 or newer
- Apple's
containerCLI installed and configured - Python 3 with PyYAML available to the python3 interpreter launched by the app
- Internet access on first Xcode build to resolve the Yams Swift package
Open and build
- Open
AppleContainerCompose.xcodeprojin Xcode. - Select the
AppleContainerComposescheme andMy Macdestination. - Build and run (Command-R).
- Click Open YAML and choose a Compose file (sample in
Examples/compose.yaml). - Use Up, Down, Status, Logs, Restart, Pull Images, or Build Images.
Python dependency
The bundled engine imports PyYAML. Install it for the Python interpreter available in your macOS app's PATH. For example, using Homebrew Python:
brew install python
/opt/homebrew/bin/python3 -m venv ~/.local/share/accompose-venv
~/.local/share/accompose-venv/bin/pip install PyYAML
The current app executes python3 from PATH, not the venv automatically. Install PyYAML into that interpreter, or modify executeEngine to use ~/.local/share/accompose-venv/bin/python (recommended for isolated dependencies).
Current implementation scope
- Native Xcode project with SwiftUI project browser, service summary, and command output
- Compose YAML parsing for service listing using Yams
- Bundled MVP engine: up/down, start/stop/restart, ps/logs, build/pull, state, dependencies, networks and volumes
- App process runs without macOS sandbox because it invokes the host's container CLI
Limitations
This is a development prototype, not a fully native orchestration engine or production-grade Docker Compose replacement. Runtime integration is not tested on macOS here. The Python engine requires PyYAML; service status is currently based on project state; logs are batch output, not continuous streaming; health checks, advanced Compose compatibility, restart supervision, service scaling and secure secrets management remain future work. The UI's restart action restarts the whole project. Consult Apple's container version for supported CLI flags.