One-line bootstrap for an AI-first dev environment. Mac, Debian/Ubuntu, Windows. Idempotent. Configuration captured as literal files. No git prereq on the target host.
Opinionated bootstrap that takes a fresh Mac, Debian/Ubuntu host, or Windows machine from zero to a fully configured AI-coding dev environment in one command. Configuration lives as literal files in configs/ so the setup is diffable, auditable, and portable. Re-running converges instead of reinstalling.
curl -fsSL https://raw.githubusercontent.com/alexherrero/dev-setup/main/install.sh | bashiwr -UseBasicParsing https://raw.githubusercontent.com/alexherrero/dev-setup/main/install.ps1 | iexFor flag-passing examples (--skip-apps, --dry-run, etc.) and the inspect-before-run form, see How to install via the one-liner.
git clone https://github.com/alexherrero/dev-setup.git && cd dev-setup && ./setup.sh- Run the one-liner above for your platform.
- Reload your shell so newly-installed CLIs resolve. POSIX:
source ~/.zshrc(or~/.bashrc). Windows: open a new PowerShell window. - Complete the auth checklist printed at the end of the run (
claude login,gh auth login,geminifirst-run, GUI sign-ins on Mac/Windows). The full list is in docs/first-run.md.
| Component | macOS | Debian/Ubuntu | Windows | Source |
|---|---|---|---|---|
| Claude Code CLI | ✓ | ✓ | ✓ | claude.ai/install.sh (POSIX) / winget (Win) |
| Gemini CLI | ✓ | ✓ | ✓ | npm |
| Antigravity Desktop | ✓ | — | ✓ | DMG / winget |
| Claude Desktop | ✓ | — | ✓ | DMG / winget |
| Gemini Desktop | ✓ | — | — | DMG |
Toolchain (node, gh, jq, ripgrep, shellcheck, shfmt) |
brew |
apt + NodeSource |
winget |
per-platform |
Each platform's orchestrator runs an ordered, idempotent stage list. --dry-run (POSIX) / -DryRun (Windows) prints the plan without running anything.
| Stage | Description |
|---|---|
brew (Mac) / apt (Linux) / tooling (Win) |
Install the package manager and toolchain |
clis |
Install Claude Code CLI + Gemini CLI |
gui-apps (Mac/Win only) |
Install Antigravity Desktop, Claude Desktop, (Mac) Gemini Desktop |
link-configs |
Place captured configs at OS-native paths with backup-on-replace |
verify-install |
Warn-only post-setup health check (zero warns expected) |
auth-checklist |
Print the manual auth steps |
| POSIX | Windows | Effect |
|---|---|---|
--help |
-Help |
Print stage list + flag reference, exit 0 |
--dry-run |
-DryRun |
Print the planned stages and exit 0 |
--skip-apps |
-SkipApps |
Skip GUI installs (CI / headless) |
--only <stage> |
-Only <stage> |
Run a single stage |
| Doc | Description |
|---|---|
| docs/first-run.md | Manual auth checklist (claude login, gh auth login, etc.) |
| docs/debian.md | Debian/Ubuntu specifics — supported-distro matrix, toolchain detail |
| docs/windows.md | Windows specifics — winget, MSIX redirect |
| docs/architecture.md | OS-dispatch architecture, repo layout, agentm pointer |
| How to install via the one-liner | One-line bootstrap recipe with flag-passing examples |
| Public curl|bash installer — design | Why the bootstrap looks the way it does, trust model |
| Scripts reference | Entry-point table — flags, exit codes, files written |
| .harness/PLAN.md | Current plan and verification criteria |
CI is manually dispatched — no auto-runs on push or PR. The ci-tests.yml workflow runs four jobs in parallel:
| Job | Runner | What it tests |
|---|---|---|
| Static analysis | ubuntu-latest |
shellcheck, actionlint, pwsh AST parse, lychee link check, secret-scan, LICENSE check |
| macOS | macos-latest |
Full Mac install (--skip-apps); bootstrap-from-curl |
| Ubuntu | ubuntu-latest |
Full Debian path; bootstrap-from-curl |
| Windows | windows-latest |
Full Win install (-SkipApps); bootstrap-from-iwr |
Each platform job asserts verify-install reports zero warns and a re-run produces no repo drift. To dispatch: Actions tab → CI tests → Run workflow. Concurrency is cancel-in-progress.
MIT — Copyright (c) 2026 Alex Herrero.