# 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 `container` CLI 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 1. Open `AppleContainerCompose.xcodeproj` in Xcode. 2. Select the `AppleContainerCompose` scheme and `My Mac` destination. 3. Build and run (Command-R). 4. Click **Open YAML** and choose a Compose file (sample in `Examples/compose.yaml`). 5. 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: ```sh 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.