Each engine ships an identical toolchain so your workflow is portable.
Only the base image and package manager change.
All 4 are published as GHCR multi-arch (linux/amd64 + arm64) on v* tags — pull one that matches your needs.
| Engine | Base | PM | GHCR Package | Size amd64 / arm64 | Best for |
|---|---|---|---|---|---|
| ubuntu | ubuntu:latest | apt-get | ghost-machine-ubuntu:latest | 1.38 / 1.21 GB | AI agents, PPA, daily dev |
| debian | debian:stable-slim | apt-get | ghost-machine-debian:latest | 1.36 / 1.20 GB | Slim & stable, prod-like |
| alpine | alpine:latest | apk | ghost-machine-alpine:latest | 1.59 / 1.32 GB | Ultra-light, musl |
| arch | archlinux:latest | pacman | ghost-machine-arch:latest | 1.63 / 1.63 GB | Rolling, latest upstream |
Host distro does not matter — Debian host can run Arch image. Only CPU arch matters (amd64 vs arm64 auto-picked).
| Layer | What |
|---|---|
| Runtimes | Go 1.24, Rust rustup minimal (cargo/rustc), Node current + Bun, Python uv + pipx + venv |
| Editors & Git | Helix 25.01.1, Micro, Lazygit, Tmux |
| AI Harnesses | agy/antigravity, opencode, kilo + rtk (60–90% token save) |
| MCP & Conductor | 7 HeLa headless servers (mitosis/genome/membrane/nucleus/ribosome/enzyme/phenotype) + Conductor /opt/conductor |
| Shell UX | Oh-My-Bash, Alias-Hub, Fastfetch/Neofetch, fortunes, openssh-server, LXCFS |
All 4 Dockerfiles share the same stages:
base → system tools → Go/Rust → Node/Bun/uv → Micro/Helix/Lazygit → AI harnesses → HeLa MCP → Conductor → non-root user (developer).
The only differences are apk add vs apt-get install and package names (e.g. build-base vs build-essential).
Build args HOST_UID/HOST_GID sync the developer user to your host.
Pull one — not four.
Any Linux (x86_64/aarch64), macOS with OrbStack or Docker Desktop, or Windows with WSL2.
Image arch is auto-selected: Intel/AMD → amd64, Apple Silicon/ARM VPS → arm64.
Debian host can run Arch image — only the kernel (host) and userland (image) are split.