This page defines the fastest supported path to install and initialize ZeroBuild.
Last verified: February 20, 2026.
brew install zerobuildgit clone https://github.com/zerobuild-labs/zerobuild.git
cd zerobuild
./bootstrap.shWhat it does by default:
cargo build --release --lockedcargo install --path . --force --locked
Source builds typically require at least:
- 2 GB RAM + swap
- 6 GB free disk
When resources are constrained, bootstrap now attempts a pre-built binary first.
./bootstrap.sh --prefer-prebuiltTo require binary-only installation and fail if no compatible release asset exists:
./bootstrap.sh --prebuilt-onlyTo bypass pre-built flow and force source compilation:
./bootstrap.sh --force-source-buildDefault behavior is app-only (build/install ZeroBuild) and expects existing Rust toolchain.
For fresh machines, enable environment bootstrap explicitly:
./bootstrap.sh --install-system-deps --install-rustNotes:
--install-system-depsinstalls compiler/build prerequisites (may requiresudo).--install-rustinstalls Rust viarustupwhen missing.--prefer-prebuilttries release binary download first, then falls back to source build.--prebuilt-onlydisables source fallback.--force-source-builddisables pre-built flow entirely.
curl -fsSL https://raw.githubusercontent.com/zerobuild-labs/zerobuild/main/scripts/bootstrap.sh | bashFor high-security environments, prefer Option A so you can review the script before execution.
Legacy compatibility:
curl -fsSL https://raw.githubusercontent.com/zerobuild-labs/zerobuild/main/scripts/install.sh | bashThis legacy endpoint prefers forwarding to scripts/bootstrap.sh and falls back to legacy source install if unavailable in that revision.
If you run Option B outside a repository checkout, the bootstrap script automatically clones a temporary workspace, builds, installs, and then cleans it up.
./bootstrap.sh --dockerThis builds a local ZeroBuild image and launches onboarding inside a container while
persisting config/workspace to ./.zerobuild-docker.
Container CLI defaults to docker. If Docker CLI is unavailable and podman exists,
bootstrap auto-falls back to podman. You can also set ZEROBUILD_CONTAINER_CLI
explicitly (for example: ZEROBUILD_CONTAINER_CLI=podman ./bootstrap.sh --docker).
For Podman, bootstrap runs with --userns keep-id and :Z volume labels so
workspace/config mounts remain writable inside the container.
If you add --skip-build, bootstrap skips local image build. It first tries the local
Docker tag (ZEROBUILD_DOCKER_IMAGE, default: zerobuild-bootstrap:local); if missing,
it pulls ghcr.io/zerobuild-labs/zerobuild:latest and tags it locally before running.
./bootstrap.sh --onboard --api-key "sk-..." --provider openrouterOr with environment variables:
ZEROBUILD_API_KEY="sk-..." ZEROBUILD_PROVIDER="openrouter" ./bootstrap.sh --onboard./bootstrap.sh --interactive-onboard--install-system-deps--install-rust--skip-build(in--dockermode: use local image if present, otherwise pullghcr.io/zerobuild-labs/zerobuild:latest)--skip-install--provider <id>
See all options:
./bootstrap.sh --help