Transform developer onboarding from days to minutes.
Reduce developer environment setup time from 2-5 days to 30 minutes total with developers productive in just 5 minutes.
Day 1: Install tools, configure shell (4-6 hours)
Day 2: Setup Node, Python, package managers (3-4 hours)
Day 3: Clone repos, install deps, configure IDE (4-6 hours)
Day 4: Git config, SSH keys, authenticate services (2-3 hours)
Day 5: Troubleshoot "works on my machine" issues (3-5 hours)
──────────────────────────────────────────────────────────────────
TOTAL: 2-5 DAYS of wasted developer time ❌
Minute 0-5: Critical tools → Developer can code ✅ PRODUCTIVE
Minute 5-15: Full dev stack (background) ✅ COMPLETE
Minute 15-30: Polish & optional tools (background) ✅ PROFESSIONAL
──────────────────────────────────────────────────────────────────
TOTAL: 30 MINUTES, productive after 5 ✓
- ⚡ Parallel Installation: 8+ concurrent tasks, ~8x speedup
- 📦 Incremental Stages: Stage 1 (5min critical) → Stage 2 (10min full) → Stage 3 (15min polish)
- 🔒 Version Locking:
Brewfile.lock.json+versions.lock= zero "works on my machine" - ✅ Verification:
devsetup verifychecks all tools match expected versions - 🔄 Idempotent: Safe to re-run, skips existing tools
- 🎨 Rich UI: Progress bars, colors, clear status indicators
- 🚀 Background Execution: Keep working while installation completes
┌──────────────────────────────────────────────────────────────┐
│ STAGE 1: CRITICAL PATH (5 min) - BLOCKING │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ ✓ Homebrew │
│ ✓ Git + SSH │
│ ✓ Node + pnpm (parallel) │
│ ✓ Python + uv (parallel) │
│ ✓ Zed/VS Code (parallel) │
│ ✓ Shell config │
│ │
│ 👨💻 DEVELOPER CAN NOW CODE │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ STAGE 2: FULL STACK (10 min) - BACKGROUND │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ ⚡ All Homebrew packages (8 parallel) │
│ ⚡ Zsh plugins (6 parallel clones) │
│ ⚡ Flutter wrapper + git config │
│ ⚡ Starship prompt configuration │
│ │
│ 👨💻 Developer continues working... │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ STAGE 3: POLISH (15 min) - BACKGROUND │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ ⚡ Nerd Fonts │
│ ⚡ Optional AI CLIs (Claude, Codex, Gemini) │
│ ⚡ Docker, Kubernetes tools │
│ │
│ 🎉 Complete professional environment │
└──────────────────────────────────────────────────────────────┘
- Language: Go 1.21+ (single binary, fast, concurrent)
- CLI Framework: Cobra (professional CLI with subcommands)
- Config Format: YAML (stages) + TOML (versions.lock)
- Package Manager: Homebrew (with Brewfile for declarative deps)
- Parallel Execution: Goroutines + semaphore pattern (8 concurrent max)
- Homebrew (if missing)
- Git with basic config
- Node.js + pnpm (parallel)
- Python + uv (parallel)
- Zed editor (parallel)
- Shell PATH configuration
- Dev tools: git-lfs, wget, jq, ripgrep, fd, bat, eza
- Starship prompt with Nerd Font symbols
- Zsh plugins: completions, syntax highlighting, autosuggestions, history search
- Flutter wrapper:
flutterwcommand - Git config templates: Review before applying
- Hack Nerd Font: For proper icon display
- AI CLIs: Claude Code, Codex, Gemini (best-effort)
- Docker Desktop (optional, large download)
- Modern CLI tools: fzf, tree, htop, tldr
curl -fsSL https://raw.githubusercontent.com/rkinnovate/dev-setup/main/bootstrap.sh | bashgit clone https://github.com/rkinnovate/dev-setup
cd dev-setup
make install
devsetup install# Install complete environment (3 stages)
devsetup install
# Fast mode (Stage 1 only - 5 minutes)
devsetup install --fast
# Skip optional tools (Stages 1 & 2 only)
devsetup install --skip-optional
# Preview what would be installed
devsetup install --dry-run
# Verify environment matches versions.lock
devsetup verify
# Auto-fix any mismatches
devsetup verify --fix
# Run diagnostics
devsetup doctor
# Check installation status
devsetup status
# Update versions.lock with current versions
devsetup update --capture-versions
# Show version
devsetup --version- Restart Terminal:
source ~/.zshrcor close/reopen terminal - Verify:
devsetup verify - Set Git Identity:
git config --global user.name "Your Name" git config --global user.email "your@email.com"
- Switch Terminal Font: Set to "Hack Nerd Font" for proper icons
- Authenticate AI CLIs (if installed):
claude auth codex login gemini login
All dependencies are version-locked for exact reproducibility:
- Homebrew packages:
Brewfile+Brewfile.lock.json - Git repositories:
versions.lock(commit SHAs or tags) - Custom tools:
versions.lock(version pinned)
# Check all tools match expected versions
devsetup verify
# Output:
✓ git@2.43.0
✓ node@20.10.0
✗ pnpm@8.11.0 (expected: 8.10.5) # Mismatch!
Environment verification FAILED (1 error)
Run 'devsetup verify --fix' to repairdevsetup verify --fix
# Automatically reinstalls mismatched tools to correct versions| Stage | Time | Blocking | What Happens |
|---|---|---|---|
| Stage 1 | 5 min | ✅ Yes | Install critical tools - developer can code after |
| Stage 2 | 10 min | ❌ No | Full dev stack installs in background |
| Stage 3 | 15 min | ❌ No | Polish/optional tools install in background |
| Total | 30 min | 5 min | Productive in 5 minutes ✓ |
-
Parallel Execution: 8 concurrent tasks (8x speedup)
# tasks with same parallel_group run simultaneously parallel_group: "homebrew-tools"
-
Shallow Git Clones:
--depth=1(5x faster)git clone --depth=1 --single-branch <repo>
-
Background Stages: Developer works while Stages 2 & 3 complete
-
Idempotency: Skip already-installed tools (instant on re-run)
dev-setup/
├── cmd/
│ └── devsetup/
│ └── main.go # CLI entry point
├── internal/
│ ├── config/
│ │ ├── models.go # Config structs
│ │ └── loader.go # YAML/TOML parsing
│ ├── installer/
│ │ ├── parallel.go # Parallel executor (core engine)
│ │ └── installer.go # Stage orchestrator
│ ├── ui/
│ │ └── progress.go # Progress bars, colors
│ └── verify/
│ └── checker.go # Version verification
├── configs/
│ ├── stage1.yaml # Critical path (5 min)
│ ├── stage2.yaml # Full stack (10 min)
│ └── stage3.yaml # Polish (15 min)
├── Brewfile # Homebrew packages
├── Brewfile.lock.json # Homebrew version lock
├── versions.lock # Non-Homebrew version lock
├── bootstrap.sh # One-line installer
├── Makefile # Build automation
└── go.mod # Go dependencies
# Build for current architecture
make build
# Build for all architectures
make build-all
# Install to ~/.local/bin
make install
# Run tests
make test
# Run linter
make lint
# Clean build artifacts
make clean
# Build and run
make run
# Build and dry-run
make dry-run# In Brewfile
brew "newtool"
# Then lock version:
brew bundle dump --force
git add Brewfile.lock.json# In configs/stage2.yaml
- name: "Install custom tool"
command: |
curl -fsSL https://example.com/install.sh | sh
parallel_group: "custom-tools"
required: false
timeout: 60s# In versions.lock
[tools.newtool]
version = "1.2.3"
installer = "https://example.com/install.sh"
verify_command = "newtool --version"| Language | Required | Forbidden |
|---|---|---|
| Python | uv |
pip, pipenv, poetry, conda |
| Node.js | pnpm |
npm, yarn, bun |
Lockfiles:
- Python:
uv.lock - Node.js:
pnpm-lock.yaml
name: "Stage Name"
timeout: 300s
parallel: true
tasks:
- name: "Task name"
command: "shell command to run"
parallel_group: "group-name" # Empty = sequential
required: true # Fail stage if fails
timeout: 60s
retry_count: 2
condition: "command -v tool" # Skip if condition fails[metadata]
schema_version = "1.0"
platform = "darwin"
updated = 2025-12-22T00:00:00Z
[homebrew.formulas]
git = { version = "2.43.0", tap = "homebrew/core" }
[git_repos.flutter-wrapper]
url = "https://github.com/user/repo"
commit = "abc123"
path = "~/.local/share/dev-setup/flutter-wrapper"
stage = 2All operations are safe to re-run:
devsetup install # First run: installs everything
devsetup install # Second run: skips existing, instantDeveloper productive immediately, environment completes in background:
[5 min] Stage 1 completes → Developer clones repos, starts coding
[15 min] Stage 2 completes → Full dev stack ready
[30 min] Stage 3 completes → Professional polish complete
Identical versions on all machines:
# Developer A (Monday):
git@2.43.0, node@20.10.0, pnpm@8.10.5
# Developer B (Friday):
git@2.43.0, node@20.10.0, pnpm@8.10.5 # Exact same!# Check what's wrong
devsetup doctor
# Re-run specific stage
devsetup install # Idempotent, safe to re-run
# Verbose output
export DEBUG=1
devsetup install# Identify mismatches
devsetup verify
# Fix automatically
devsetup verify --fix- "Homebrew not found": Ensure
/opt/homebrew/binor/usr/local/binin PATH - "Permission denied": Homebrew install requires sudo password
- "Network timeout": Check internet connection, retry with longer timeout
- "Version mismatch": Run
devsetup verify --fix
- ⏱️ Time to first commit: 2-5 days
- 💰 Cost per developer: $1,000-2,500
- 🐛 "Works on my machine" issues: Common
- 😫 Developer frustration: High
- ⏱️ Time to first commit: 5 minutes ✅
- 💰 Cost per developer: $31 ✅
- 🐛 "Works on my machine" issues: Zero ✅
- 😊 Developer satisfaction: High ✅
- Savings: $1,000-2,500 per developer
- Team of 10 devs/year: $10K-25K saved
- Development cost: ~$10K
- Payback: First 4-10 developers
See AGENTS.md for contribution guidelines including:
- Coding standards
- Documentation requirements
- Commit message format (Conventional Commits)
- Testing expectations
MIT License - see LICENSE file for details.
- GitHub: https://github.com/rkinnovate/dev-setup
- Issues: https://github.com/rkinnovate/dev-setup/issues
- Releases: https://github.com/rkinnovate/dev-setup/releases
Built with ❤️ by RK Innovate
Transforming developer onboarding from days to minutes.