first commit

This commit is contained in:
Mark Gregory
2026-11-08 10:52:14 +00:00
commit 8c34e965fd
+37
View File
@@ -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.