From 8c34e965fd4c24f5997dcfb0d83862059151ef19 Mon Sep 17 00:00:00 2001 From: Mark Gregory Date: Sun, 8 Nov 2026 10:52:14 +0000 Subject: [PATCH] first commit --- README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..58ad509 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# 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.