Homebrew tap for stephenlclarke tools and games:
brew tap stephenlclarke/tap
brew trust --tap stephenlclarke/tapThe stable container and container-compose formulae install the matched
prebuilt runtime and Docker Compose v2 plugin. The canonical five-repository
stack map and current dependency pins live in container-compose's
README
and STATUS.md.
The four component source repositories and this tap use main. Bare semantic
container-compose tags publish stable plugin assets and update this tap after
package, checksum, and formula verification. Source submodules are maintenance
inputs only; Homebrew installs do not build from them.
Install the matched runtime and plugin:
brew install stephenlclarke/tap/container-compose
brew postinstall stephenlclarke/tap/container
brew services restart stephenlclarke/tap/container
container system version
container compose versionComplete install, upgrade, migration, and removal instructions live in
INSTALL.md. Release policy lives in the
container-compose branch guide.
maze, mazewar, bzflag, asteroids, and defender build a native macOS app bundle from their current main source and install a launcher command.
| Formula | Install command |
|---|---|
maze |
brew install --HEAD stephenlclarke/tap/maze |
mazewar |
brew install --HEAD stephenlclarke/tap/mazewar |
pacman |
brew install stephenlclarke/tap/pacman |
battlezone |
brew install stephenlclarke/tap/battlezone |
bzflag |
brew install --HEAD stephenlclarke/tap/bzflag |
asteroids |
brew install --HEAD stephenlclarke/tap/asteroids |
defender |
brew install --HEAD stephenlclarke/tap/defender |
The language-suffixed binaries can coexist:
| Formula | Install command |
|---|---|
fixdecoder-go |
brew install stephenlclarke/tap/fixdecoder-go |
fixdecoder-java |
brew install --HEAD stephenlclarke/tap/fixdecoder-java |
fixdecoder-rs |
brew install stephenlclarke/tap/fixdecoder-rs |
fixdecoder-zig |
brew install --HEAD stephenlclarke/tap/fixdecoder-zig |
| Formula | Install command |
|---|---|
sqlterm |
brew install --HEAD stephenlclarke/tap/sqlterm |
The tap tracks these source repositories on main:
sources/containersources/container-composesources/containerizationsources/container-builder-shimsources/pacmansources/battlezonesources/bzflagsources/asteroidssources/defendersources/mazesources/mazewarsources/fixdecoder_gosources/fixdecoder_javasources/fixdecoder_rssources/fixdecoder_zigsources/sqlterm
devcontainer provides Dev Containers compatibility for Apple's stock container runtime on Apple-silicon Macs running macOS Tahoe.
The formula installs only this project's devcontainer, compatibility-engine, and Compose-dispatch commands. It does not install, remove, replace, relink, start, or stop:
- Apple's
containerpackage. - A custom
containerruntime. container-compose.
The formula depends on the upstream Docker CLI and Docker Compose protocol client. It does not install or start a Docker engine. Install Apple's stock runtime separately from Apple before using the Apple backend.
The stable formula follows immutable bare semantic releases:
brew tap stephenlclarke/tap
brew trust --tap stephenlclarke/tap
brew install --formula stephenlclarke/tap/devcontainer
/usr/local/bin/container system start
brew services start stephenlclarke/tap/devcontainer
devcontainer doctor --container /usr/local/bin/containerStable assets use:
devcontainer-release-arm64.tar.gz
devcontainer-release-arm64.tar.gz.sha256
devcontainer-release-arm64.tar.gz.context.json
devcontainer-release-arm64.tar.gz.verification.json
build-info.json
devcontainer.spdx.json
notarization.json
Homebrew infers the stable formula version from the immutable tag-bearing URL. The formula does not repeat a redundant explicit version declaration.
The opt-in Current formula follows the newest validated main package:
brew tap stephenlclarke/tap
brew trust --tap stephenlclarke/tap
brew install --formula stephenlclarke/tap/devcontainer-currentCurrent uses:
- Mutable GitHub prerelease/tag:
current - Immutable candidate asset:
devcontainer-current-<sha12>-arm64.tar.gz - Monotonic formula version:
current.<github_run_number>.<sha12>
Stable and Current cannot coexist because they install the same executables. The optional Current formula declares a conflict with devcontainer; install one channel at a time and uninstall the active channel before switching.
Both formulae declare:
depends_on arch: :arm64
depends_on "docker"
depends_on "docker-compose"
depends_on macos: :tahoePublished ports require Local Network access for the selected runtime's
container-runtime-linux helper. Stock Apple and separately installed custom
runtime helpers may appear as distinct entries under System Settings →
Privacy & Security → Local Network; authorize each runtime that will be used.
Neither formula declares a dependency on:
"stephenlclarke/tap/container"
"stephenlclarke/tap/container-current"
"stephenlclarke/tap/container-compose"
"stephenlclarke/tap/container-compose-current"This separation is intentional. devcontainer's supported core compatibility
boundary is Apple's stock runtime. The upstream Docker CLI and Docker Compose
are required protocol clients; a Docker engine and container-compose are
optional backends/providers.
After installation:
devcontainer version
devcontainer version --format json
devcontainer --help
container system version --format jsonThe devcontainer output reports its source commit and release lane. The container output independently confirms which runtime the user selected.
The tap does not install container-compose for devcontainer.
Current supported stephenlclarke/tap/container-compose formulae depend on a
matched custom runtime. They must not be installed automatically or described
as Compose support supplied by Apple. Users who deliberately configure a
provider are responsible for its installation and runtime compatibility;
devcontainer will report a custom runtime as a separate provider lane.
The devcontainer source repository owns the formula template and release renderer. This tap owns the generated formula.
Release automation must:
- Resolve a release-eligible exact source commit.
- Require exact-commit CI, CodeQL, documentation, and live parity evidence.
- Require Developer ID signing and an accepted Apple notary submission.
- Publish a checksum, SPDX SBOM, build info, and GitHub provenance attestation.
- Re-download the published archive and checksum.
- Verify archive integrity, expected entries, signature, and checksum.
- Render only
Formula/devcontainer.rborFormula/devcontainer-current.rb. - Run
ruby -c,brew style, and strict audit. - Commit one Conventional Commit to the tap.
- Install the formula, run
brew test, and compare installed provenance with the selected commit.
Stable and Current tap updates share one non-cancelling concurrency group so they cannot race.
class Devcontainer < Formula
desc "Dev Containers compatibility for Apple's container runtime"
homepage "https://github.com/stephenlclarke/devcontainer"
url "https://github.com/stephenlclarke/devcontainer/releases/download/1.0.1/devcontainer-release-arm64.tar.gz"
sha256 "RELEASE_SHA256"
license "Apache-2.0"
depends_on arch: :arm64
depends_on "docker"
depends_on "docker-compose"
depends_on macos: :tahoe
def install
bin.install "bin/devcontainer"
bin.install "bin/devcontainer-engine"
bin.install "bin/devcontainer-compose"
libexec.install "libexec/container"
pkgshare.install "share/devcontainer"
end
service do
run [opt_bin/"devcontainer-engine"]
keep_alive true
process_type :interactive
log_path var/"log/devcontainer.log"
error_log_path var/"log/devcontainer-error.log"
end
def caveats
<<~EOS
Install either the stock Apple container package or a compatible
container distribution before starting the service.
Start Apple's stock runtime:
/usr/local/bin/container system start
When macOS requests Local Network access for the selected runtime's
container-runtime-linux helper, choose Allow. Stock and custom runtime
helpers may appear as separate permission entries.
Start the compatibility engine:
brew services start #{name}
Use it without changing your default Docker context:
eval "$(devcontainer context)"
Configure VS Code's Dev Containers extension to use:
#{opt_bin}/devcontainer-compose
Register the optional Apple container CLI plug-in explicitly:
devcontainer plugin register
EOS
end
test do
assert_match "1.0.1", shell_output("#{bin}/devcontainer version --short")
assert_match "DOCKER_HOST", shell_output("#{bin}/devcontainer context")
assert_path_exists libexec/"container/plugins/devcontainer/config.toml"
assert_predicate libexec/"container/plugins/devcontainer/bin/devcontainer", :executable?
end
endThe Current template changes the class, formula name, version, URL, and expected lane, and adds conflicts_with "devcontainer" while preserving the runtime-neutral install.
Source-repository pull requests and pushes render a formula fixture and run:
ruby -c
brew style
The protected publication transaction then runs against the staged, Developer ID-signed and notarized release archive:
brew audit --formula --strict --online
brew fetch --formula --force
brew install --formula
brew test
GitHub Actions must be pinned to complete commit SHAs. Tap CI must not start a live Apple VM merely to validate formula installation; live runtime compatibility belongs to the source repository's trusted bare-metal release gate.
Do not add devcontainer as a tap submodule. The formula is generated directly from immutable release assets and a source-owned template. This avoids stale source snapshots and keeps the tap's live content limited to installation metadata.