Files
applecontainercompose/README.md
T
2026-11-08 10:52:14 +00:00

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 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:

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.