A phase-based macOS bootstrap for a modern engineering workstation with local AI tooling. It is designed to be inspectable, rerunnable, and conservative by default.
git clone <your-repo-url>
cd ai-native-dev-bootstrap
cp config/config.example.yaml config/config.local.yaml
./bin/bootstrap --config ./config/config.local.yaml --dry-run --all
./bin/bootstrap --config ./config/config.local.yaml --allIf you prefer to edit the checked-in default file directly, config/config.yaml is the default config path used by bin/bootstrap.
- Start with
--dry-run; every phase supports it. - The bootstrap does not delete user data.
- System-wide preference changes are limited to phase 1 and are explicit in the docs.
- If
yqis unavailable, the scripts fall back to a built-in parser for the simple YAML used here. - Homebrew, Colima, pyenv, and Ollama phases only run when their phase toggle is enabled in config.
0: preflight checks for macOS, architecture, and Command Line Tools1: macOS developer defaults such as screenshot location and Finder visibility2: Homebrew installation andBrewfilesync3: Git, GitHub CLI, VS Code integration, and project directory scaffolding4: Colima and Docker validation5: Python viapyenvand Poetry configuration6: Ollama startup and model pulls99: non-destructive verification
Phase details, verification commands, and rollback notes live in docs/PHASES.md.
# Preview the entire bootstrap
./bin/bootstrap --dry-run --all
# Run only preflight, Homebrew, and dev tools
./bin/bootstrap 0 2 3
# Use an alternate config file
./bin/bootstrap --config ./config/config.local.yaml 4 5 6
# Verify the current machine state
./bin/bootstrap 99./bin/bootstrap 99
brew bundle check --file ./Brewfile
colima status
docker run --rm hello-world
pyenv versions
poetry --version
ollama listGitHub Actions runs on macos-latest and exercises the bootstrap in safe mode:
make help
make dry CONFIG=./config/config.ci.yaml
make verify CONFIG=./config/config.ci.yamlThe badges currently target ericchapman80/ai-native-dev-bootstrap. The CI badge tracks the main branch. Add a release badge after the first GitHub Release is published.
make help
make dry
make all
make verifymake all runs the live bootstrap. Use make dry first unless you have already reviewed the phase effects.
The scripts read config/config.yaml by default and fall back to config/config.example.yaml for unset values. The most relevant knobs are:
- phase toggles:
enable_phase_1_macos_defaultsthroughenable_phase_6_ai - paths and identity:
projects_dir,user_full_name,user_email,screenshots_dir - runtime sizing:
colima_cpu,colima_memory_gb,colima_disk_gb - Python behavior:
pyenv_python_version,set_pyenv_global,poetry_in_project_venv - AI behavior:
auto_start_ollama,ollama_models
If this project saves you time, support its maintenance via GitHub Sponsors for ericchapman80.
MIT.