Bootbox is a hosted bootstrap script for macOS 26 or newer that turns a fresh box into a usable base machine. It installs Homebrew, applies one or more Brewfiles, stows one or more dotpackages, and can install private SSH keys from a 1Password vault.
Bootbox is meant to be a reusable base script that narrower machine profiles can wrap and extend. Examples of that pattern include pirog/me, tanaabased/agentbox, and tanaabased/emori.
Supports macOS 26 or higher on
x64andarm64.
curl -fsSL https://bootbox.tanaab.sh/bootbox.sh | bashBootbox is designed to be run directly from the hosted script at
https://bootbox.tanaab.sh/bootbox.sh.
- It requires Bash and cURL to start.
- It supports installing into the default home directory target or a custom
--target. - For 1Password-backed SSH keys, provide a service account token with
--op-token,TANAAB_OP_TOKEN, orOP_SERVICE_ACCOUNT_TOKEN. - The hosted URL serves the generated
dist/bootbox.shentrypoint used for releases.
The main flow is: choose a target machine, decide which Brewfiles and dotpackages you want, and then
run Bootbox once to converge the box into that state. If you have installed the hosted script as a
local bootbox command, the common flows look like this:
bootbox --brewfile Brewfile.work --target "$HOME"
bootbox --dotpkg dotpkgs/git --dotpkg dotpkgs/zsh --target "$HOME"
bootbox --ssh-key "my-vault/id_work" --op-token "$TANAAB_OP_TOKEN"If you are working from a local checkout instead, replace bootbox with ./bootbox.sh.
If you need help generating a Brewfile, see tanaabased/brewgen.
The examples/ directory contains Leia-backed scenario folders for the main supported flows,
including multi-Brewfile installs, dotpackage installs, and live 1Password SSH key installation.
Bootbox keeps its configuration surface intentionally small.
TANAAB_BREWFILE: comma-separated Brewfile paths or URLsTANAAB_DOTPKG: comma-separated dotpackage pathsTANAAB_SSH_KEY: comma-separatedvault/item[:filename]SSH key specsTANAAB_OP_TOKEN: 1Password service account tokenTANAAB_TARGET: install target directoryTANAAB_FORCE: enables supported overwrite behaviorTANAAB_DEBUG: enables debug loggingNONINTERACTIVEandCI: disable prompts for automated runs
If you want a reusable local command instead of piping the hosted script every time, install it into
a directory that is already in your PATH or one you manage yourself.
mkdir -p "$HOME/.local/bin"
curl -fsSL https://bootbox.tanaab.sh/bootbox.sh -o "$HOME/.local/bin/bootbox"
chmod +x "$HOME/.local/bin/bootbox"
bootbox --help
bootbox --brewfile Brewfile.work --dotpkg dotpkgs/git --target "$HOME"
bootbox --ssh-key "my-vault/id_work:id_ed25519_work" --op-token "$TANAAB_OP_TOKEN"If you do not want to install a local command first, you can also set environment variables inline and pipe the hosted script straight into Bash.
curl -fsSL https://bootbox.tanaab.sh/bootbox.sh | TANAAB_BREWFILE="Brewfile.work" TANAAB_TARGET="$HOME" bash
curl -fsSL https://bootbox.tanaab.sh/bootbox.sh | TANAAB_DOTPKG="dotpkgs/git,dotpkgs/zsh" TANAAB_TARGET="$HOME" bash
curl -fsSL https://bootbox.tanaab.sh/bootbox.sh | TANAAB_SSH_KEY="my-vault/id_work:id_work" TANAAB_OP_TOKEN="$TANAAB_OP_TOKEN" bashFor the complete and current documented CLI surface, prefer --help. That output is the fastest
source of truth for supported public flags, environment variables, and guardrails.
For scripts that only need to know whether Bootbox's built-in Homebrew base is already satisfied,
there is also a hidden --check-core flag. It exits 0 when Homebrew plus Bootbox's core
packages are already installed, and exits 1 otherwise. It intentionally stays out of --help,
and it does not check Brewfile entries, dotpackages, SSH keys, or target permissions.
if bootbox --check-core >/dev/null 2>&1; then
echo "bootbox core is ready"
else
echo "bootbox core is missing dependencies"
fiBootbox uses Bun for its repo-local tooling and publishes a Netlify-ready dist/ directory.
bun install
bun run lint
bun run buildThe example suite is intentionally not exposed as a local package script. Leia examples are run in
GitHub Actions on fresh macOS runners because they can mutate machine state, install Homebrew
packages, and access the TANAAB_OP_TESTVAULT CI secret for the live SSH-key example.
Use the GitHub issue queue for bugs, regressions, or feature requests.
See CHANGELOG.md for release history and
GitHub releases for published artifacts.
@pirog
Made with contrib.rocks.