One script. Fresh Mac to fully loaded AI dev machine for solo founders. Installs Ghostty, Tmux, Homebrew, AI CLIs, and dotfiles.
The easiest way to get started is with our one-liner installation script. It clones this repository to ~/Developer/machine-setup and immediately launches the setup process.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/CogitoAgency/machine-setup/main/install.sh)"git clone https://github.com/CogitoAgency/machine-setup.git ~/Developer/machine-setup
cd ~/Developer/machine-setup
bash setup.sh| Phase | Component | Details |
|---|---|---|
| 1 | Homebrew | GNU Stow, Casks (Ghostty, Raycast, AeroSpace) |
| 2 | Dotfiles | Stowed configs for Zsh, Tmux, Ghostty, SketchyBar, etc. |
| 3 | Git + SSH | Key gen, SSH config, gh auth, key upload, verify |
| 4 | Languages | Mise (replaces nvm/pyenv/asdf) for Node 22, Python 3.12, Go |
| 5 | AI Tools | Claude Code, OpenCode, Gemini, Ollama, llm CLI |
| 6 | NPM Globals | pnpm, yarn, ts-node, localtunnel, netlify-cli |
| 7 | CogitoAgency | (opt-in) submodules, deps, .env, hooks, Breathe MCP |
Phases 1-6 run by default. Phase 7 runs only with --phase 7 after manual clone.
Every step is idempotent — safe to re-run.
bash setup.sh # full install (phases 1-6)
bash setup.sh --check # validate current state
bash setup.sh --summary # compact one-line-per-phase health report
bash setup.sh --fix # auto-detect gaps, re-run only broken phases
bash setup.sh --dry-run # preview what would happen
bash setup.sh --phase 5 # run only Phase 5 (AI tools)
bash setup.sh --sync # pull local dotfiles back into repoCombine flags freely:
bash setup.sh --dry-run --phase 5Skip interactive prompts:
GIT_NAME="Jane Doe" GIT_EMAIL="jane@example.com" bash setup.shThe dotfiles/ directory contains:
.zshrc— full zsh config with aliases, functions, tool integrations.zprofile— Homebrew + OrbStack shell env.gitignore_global— OS files, IDE files, node_modules, .env.llm_profile— LLM agent safety settingsBrewfile— all Homebrew packagesclaude-auto— Claude Code auto-resume wrappersession-wrapper.sh— Claude session selector
Run bash setup.sh --sync to pull your local customizations back into the repo.
bash test-setup.sh # ~5 seconds, 83 mocked tests across 20 groupsMIT