PRD: macOS Container backend #229
Reference in New Issue
Block a user
Delete Branch "feat/macos-container-backend"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
macos-containerbackend and make it the default on compatible macOS hostscontainerCLI wrappers for build/inspect/exec/cp, cleanup, and active enumerationRUNsteps resolve package mirrors without requiring Dockerbottle.git/ git-gate support on this backend until a safe Apple Container key-delivery path existsTests
python3 -m compileall -q bot_bottle tests/unit/test_backend_selection.py tests/unit/test_macos_container_launch.pypython3 -m unittest discover tests/unitpython3 -m unittest tests.integration.test_macos_container_launchnpx pyright .git diff --checkThe stacked Part II and Part III PRs have been merged into this branch, so this PR now represents the complete macOS Container backend MVP rather than only the initial scaffold slice.
feat: add macOS Container backend scaffoldto PRD: add macOS Container backend scaffoldPRD: add macOS Container backend scaffoldto PRD: macOS Container backend scaffoldPRD: macOS Container backend scaffoldto PRD: macOS Container backend - Part IRemaining parts I see after this PRD/scaffold slice:
Apple Container networking spike
container network create --internal, repeated--networkoncontainer run, network aliases/labels, and whether one sidecar container can sit on both an internal agent network and an egress-capable network.container list,container inspect,container image inspect, andcontainer network inspectso cleanup/enumeration do not depend on brittle quiet-name parsing where better metadata exists.Runnable launch path
container build.BOT_BOTTLE_SIDECAR_DAEMONScontract, mounted route/cert/key files, and published ports where needed.HTTPS_PROXY,HTTP_PROXY,NO_PROXY,GIT_GATE_URL, andMCP_SUPERVISE_URLusing the discovered sidecar endpoints, equivalent to the smolmachines flow.Provisioning parity
container cprecursion and ownership semantics against the provider provisioning steps, workspace copy, skills copy, prompt copy, CA installation, git identity setup, and supervise MCP registration.container exec --useror needs backend-specific repair after copy-in.Lifecycle and cleanup hardening
Integration coverage
containerguarded integration tests for build, launch, exec, cp, sidecar port reachability, and cleanup.Follow-on Docker removal work
@@ -0,0 +25,4 @@class MacosContainerBottleBackend(BottleBackend["MacosContainerBottlePlan", "MacosContainerBottleCleanupPlan"]):"""Experimental Apple Container backend. Selected byNo longer experimental as of part III completion. We'll merge these together than merge the whole feature in. Remove this, and make macos-container the default backend when on a compatible macos system.
@@ -0,0 +2,4 @@The backend is registered and its host primitives are implemented, butfull launch is intentionally blocked until the sidecar networkenforcement design is finished. Apple Container can publish ports andNo longer blocked/will want to update this as well.
PRD: macOS Container backend - Part Ito PRD: macOS Container backendAddressed the remaining review threads in
5498f20and updated the PR description now that Part II and Part III are merged into this branch.Experimentalwording and mademacos-containerthe default when the host is compatible. Explicit--backendandBOT_BOTTLE_BACKENDstill win; otherwise default resolution ismacos-containerwhen available, thensmolmachines._SIDECAR_SLEEP_SECONDSto_AGENT_SLEEP_SECONDS; it is the long sleep used to keep the detached agent container exec-able.bottle.git/ git-gate remains explicitly deferred for macos-container until a safe key delivery path exists.Verification run after the changes:
python3 -m unittest discover tests/unitpython3 -m unittest tests.integration.test_macos_container_launchnpx pyright .python3 -m compileall -q bot_bottle tests/unit/test_backend_selection.py tests/unit/test_macos_container_launch.pygit diff --check0e823d2afftobc9a22b46a