Enterprise-grade, AI-ready installer and profile manager for macOS developer workstations. Provision complete dev environments in minutes with role-based profiles, intelligent tool detection, and zero-risk dry-run previews.
β Safe to rerun anytime β Gracefully skips already-installed tools
β‘ AI/LLM Ready β Ollama, LangChain, Jupyter included
π‘οΈ Security-First β Trivy, Grype, tfsec pre-configured
π€ Idempotent & Reliable β Works with Homebrew, npm, pipx, and taps
π― Role-Based Profiles β Choose what you need, skip what you don't
π» Modern Toolchain β Python 3.12/3.13, uv, bun, deno support
- Ollama for local LLM inference
- LangChain for LLM application development
- JupyterLab for interactive notebooks
- Improved Python tooling with uv, ruff
- uv β Ultra-fast Python package manager
- bun β Lightning-fast JavaScript runtime
- deno β TypeScript runtime with batteries included
- Python 3.12 & 3.13 alongside 3.11
- Trivy β Comprehensive vulnerability scanner
- Grype β Software supply chain security
- tfsec β Terraform security
- cosign β Container signing
- Prometheus β Metrics collection
- Grafana β Visualization dashboards
- Loki β Log aggregation
- Pulumi β Infrastructure as Code
- ArgoCD β GitOps automation
- Kustomize β Kubernetes customization
- colima β Docker Desktop alternative
- podman β Container runtime without daemon
- Foundry β Solidity development toolkit
Select from 11 curated profiles or create your own combinations:
| Profile | Purpose | Key Tools |
|---|---|---|
| base | All developers | git, curl, jq, fzf, ripgrep, bat |
| frontend | React/Vue/Next.js | node, pnpm, yarn, bun, expo-cli |
| backend | Python/API dev | python@3.13, uv, poetry, ruff, pytest |
| devops | Infrastructure | Terraform, K8s, AWS CLI, Docker |
| ai | ML/LLM dev | Ollama, LangChain, Jupyter, uv |
| fullstack | Everything | frontend + backend + containers |
| security | Sec ops | trivy, grype, tfsec, vault, snyk |
| observability | Monitoring | prometheus, grafana, loki |
| infra-modern | Modern IaC | Pulumi, GitOps, K8s, Cloud CLIs |
| web3 | Blockchain dev | foundry, solidity tools |
| devx | DX improvements | starship, fzf, bat, ripgrep, prettier |
# Add the tap (one-time setup)
brew tap saimeda32/homebrew-devopstools
# Install devopstools
brew install devopstools
# Launch interactive setup
devopstools-setupThen just follow the friendly menu to select profiles, skip tools, and preview!
git clone git@github-sai:saimeda32/homebrew-devopstools.git
cd homebrew-devopstools
./start.sh# Full control with options
./scripts/interactive-select.sh
# Pre-select profiles
./scripts/interactive-select.sh --profiles base,frontend
# Preview before installing
./scripts/interactive-select.sh --profiles backend --dry-run# Dry-run preview (no changes)
./install.sh --profiles base,frontend --dry-run
# Install base + frontend (actual install)
./install.sh --profiles base,frontend --yes --no-dry-run
# Install and skip specific tools
./install.sh --profiles backend,ai --skip-tools npm:prettier,docker --yes
# Non-interactive automation (CI/CD)
./install.sh --profiles base,devops --yes --non-interactive --no-dry-rundevopstools-select
devopstools --profiles base,frontend --dry-run
---
## π― Usage Examples
### Example 1: Set Up Frontend Developer
```bash
./install.sh --profiles base,frontend --skip-tools docker --yes
Installs: base utilities + Node.js, pnpm, yarn, bun, React tools (skips Docker)
./install.sh --profiles base,ai,security --skip-tools npm:prettier --yesInstalls: Python 3.13, Ollama, LangChain, Jupyter, security tools (skips prettier)
./install.sh --profiles base,devops,security,observability,infra-modern --yesInstalls: Terraform, K8s, security scanners, monitoring stack, modern IaC
./install.sh \
--profiles fullstack,ai \
--skip-tools npm:create-react-app,pipx:ipython \
--dry-runPreview before installing (no actual changes)
Skip already-deployed tools or deprecated packages:
# Skip single tool
--skip-tools docker
# Skip multiple (comma-separated)
--skip-tools docker,npm:prettier,yarn
# Skip by package type
--skip-tools npm:serve # Skip npm package
--skip-tools pipx:poetry # Skip pipx package
--skip-tools tap:hashicorp/tap # Skip tapSmart Detection:
- Checks if tool is already installed
- Handles npm, pipx, and Homebrew packages
- Works with partial matches (e.g.,
pythonskips all Python installs)
Preview what will be installed without making changes:
./install.sh --profiles base,frontend --dry-runOutput shows:
- β Tools already installed (skipped)
- β Tools that would be installed
- β Any failures or blockers
For automation and CI/CD pipelines:
./install.sh \
--profiles base,devops \
--non-interactive \
--yes \
--no-dry-runNo prompts, runs to completion, suitable for GitHub Actions/GitLab CI.
The installer intelligently detects already-installed tools:
Tool Type Detection Method Example
βββββββββββββββββ ββββββββββββββββββββββββββ ββββββββββββββ
Homebrew formulae brew list --formula git, docker, node
npm packages npm list -g --depth=0 prettier, expo-cli
pipx packages pipx list poetry, black
Taps brew tap (list) derailed/k9s
Special command -v (in PATH) tfswitch
If a tool is found, it's automatically skipped with a β checkmark.
Multiple profiles are merged intelligently:
# Input
--profiles backend,ai
# Merged tools (deduplicated & sorted)
python@3.13
uv
poetry
pytest
ollama
langchain
jupyterlab
git
curl
yq- Homebrew installations first (dependencies)
- Taps added before formulas that need them
- Node installed if npm packages needed
- Python3 installed if pipx packages needed
- npm/pipx packages installed last
The tools.txt file is the canonical inventory. When adding a new tool:
# 1. Add to tools.txt (with category)
## My New Category
my-new-tool
# 2. Include in relevant profiles
profiles/backend.txt
profiles/ai.txt
# 3. Test in dry-run
./install.sh --profiles backend --dry-run
# 4. Commit and push
git add tools.txt profiles/backend.txt
git commit -m "Add my-new-tool"git # Homebrew formula
python@3.13 # Specific version
tap: hashicorp/tap # Tap registration
hashicorp/tap/consul # Tap-qualified formula
npm:prettier # npm global package
pipx:poetry # pipx package# Create new profile
cat > profiles/custom.txt <<EOF
# My Custom Profile
git
python@3.13
npm:prettier
docker
docker-compose
EOF
# Test it
./install.sh --profiles custom --dry-run
# Use it
./install.sh --profiles custom --yesRun comprehensive QA suite:
./scripts/qa-validate.shThis validates:
- β All profiles exist and are readable
- β tools.txt syntax and contents
- β Profile contents and tool types
- β Script syntax and executability
- β Tool format validation
- β Dry-run mode functionality
- β Profile merging logic
- β Tool skipping mechanism
- β Installation detection logic
- β New features (AI, security, modern runtimes)
Solution: Install Homebrew first
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Solution: Fix permissions
sudo chown -R "$(whoami)" /opt/homebrew
# Or run installer with --yes flag to auto-fix
./install.sh --profiles base --yesSolution: Check prerequisites
# For npm packages
which npm && npm list -g --depth=0
# For pipx packages
which python3 && python3 -m pipx listSolution: Check logs
tail -f ~/Library/Logs/devopstools/install.logSolution: Use --skip-tools
./install.sh --profiles backend --skip-tools npm:prettier --yesWhen using interactive selector, it asks before installing:
Ready to proceed? [y/N]
>
Safe to run multiple times:
- Already-installed tools are skipped β
- No duplicate installations
- Configuration files not overwritten
- Non-destructive zsh management
All operations logged to:
~/Library/Logs/devopstools/install.log
Backups created by manage_zshrc.sh:
~/.zshrc.bak.<timestamp>
# GitHub Actions example
- name: Install DevOps Tools
run: |
brew tap saimeda32/devopstools
devopstools --profiles base,devops \
--yes --non-interactive --no-dry-runFrontend Team:
devopstools --profiles base,frontend,securityBackend Team:
devopstools --profiles base,backend,devops,securityML Team:
devopstools --profiles base,ai,fullstack,securityDevOps Team:
devopstools --profiles base,devops,security,observability,infra-modernWe welcome contributions! Follow this workflow:
# 1. Fork and clone
git clone git@github.com:YOUR_USERNAME/homebrew-devopstools.git
cd homebrew-devopstools
# 2. Create feature branch
git checkout -b feature/add-new-tool
# 3. Make changes
# - Add to tools.txt
# - Add to relevant profiles
# - Test with --dry-run
# 4. Run QA validation
./scripts/qa-validate.sh
# 5. Commit and push
git add -A
git commit -m "Add new-tool for ML workflows"
git push -u origin feature/add-new-tool
# 6. Create PR
gh pr create --fill- β
Test new tools with
--dry-runbefore PR - β
Add to both
tools.txtAND relevantprofiles/*.txt - β
Run
./scripts/qa-validate.shto pass QA - β Include rationale for new tools in PR description
- β Keep profiles focused (use multiple small profiles, not one giant one)
MIT License - See LICENSE for details.
- π§ Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Bug Reports: Use issue template
Made with β€οΈ for developers. Fork, contribute, and level up your team's setup!