GuideMarch 17, 20268 min read

Set Up a New MacBook for Development in 5 Minutes

Go from factory-fresh to fully configured with a single command. No more spending half a day reinstalling everything.

We Have All Been There

You unbox a new MacBook. It is fast, the screen is beautiful, and you cannot wait to start working. Then reality hits: you need to install Xcode Command Line Tools, Homebrew, your shell config, git settings, SSH keys, VS Code with all your extensions, Node.js, Python, Docker, database tools, cloud CLIs, and dozens of other things you have accumulated over years.

Two hours later you are still at it. You Google "how to export iTerm2 settings" for the third time. You realize you forgot to save your global npm config. Your shell aliases are gone because you never committed your .zshrc to that dotfiles repo you set up once and never maintained.

There has to be a better way. There is.

The Old Way: A Checklist That Never Ends

Here is what a typical manual MacBook setup looks like:

The manual setup process
# Step 1: Xcode CLI tools (wait 5 minutes) $ xcode-select --install # Step 2: Homebrew (wait 3 minutes) $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Step 3: Install packages (from memory, hope you don't forget any) $ brew install git node python3 go rust docker wget jq ripgrep fd # Step 4: Clone your dotfiles repo (if you have one) $ git clone https://github.com/you/dotfiles.git # Step 5: Manually symlink or copy configs $ cp dotfiles/.zshrc ~/.zshrc $ cp dotfiles/.gitconfig ~/.gitconfig # Step 6: SSH keys — generate new ones or find your backup # Step 7: VS Code — install extensions one by one # Step 8: Terminal settings — import from... somewhere? # Step 9: Global npm/pip/cargo configs # Step 10: Project repos — clone them all, set up .env files # ...2 hours later...

The worst part is not the time. It is what you forget. That one CLI tool you use twice a month. The git alias you rely on in every PR review. The SSH config that routes traffic through your company's bastion host. You will not remember it is missing until you need it and it is not there.

The ConfigSync Way: One Command

With ConfigSync, you generate a one-time setup URL from your dashboard or CLI. On your new machine, you run a single command:

One-command setup
$ curl -fsSL configsync.dev/install?token=cs_abc123 | sh

That single command does everything:

  1. Installs ConfigSync and its dependencies
  2. Authenticates with your encrypted cloud vault
  3. Pulls your latest snapshot
  4. Restores all tracked configs, packages, and secrets
  5. Runs your bootstrap script for anything that needs custom setup

Five minutes later, your new MacBook is identical to your old one.

What ConfigSync Restores

ConfigSync tracks your environment through 24 built-in modules. Each module knows how to capture and restore a specific category of configuration:

Modules restored during pull
$ configsync pull --verbose Restoring from snapshot 2026-03-19T14:22:00Z... ✓ shell ~/.zshrc, ~/.zprofile, ~/.zsh/ (3 files) ✓ git ~/.gitconfig, ~/.gitignore_global (2 files) ✓ ssh ~/.ssh/config, 2 key pairs (5 files, encrypted) ✓ homebrew Installing 47 packages from Brewfile... ✓ vscode Settings, keybindings, 23 extensions ✓ node ~/.npmrc, global packages ✓ python ~/.pip/pip.conf, global packages ✓ macos Dock layout, keyboard settings, Finder prefs ✓ repos Cloning 12 git repositories... ✓ env Restoring 4 project .env files (encrypted) ✓ gpg Keyring restored (2 keys) ✓ aws ~/.aws/config, credentials (encrypted) Restored 24 modules in 4m 32s.
Sensitive files like SSH keys, GPG keys, AWS credentials, and .env files are encrypted with AES-256-GCM before they ever leave your machine. ConfigSync uses zero-knowledge encryption — even the server cannot read your data.

Homebrew Integration

One of the biggest time sinks in a new machine setup is reinstalling packages. ConfigSync's homebrew module tracks your installed formulae, casks, and taps as a Brewfile. When you pull on a new machine, it runs brew bundle to install everything.

Brewfile managed by ConfigSync
# Auto-generated by ConfigSync homebrew module tap "homebrew/bundle" tap "oven-sh/bun" brew "git" brew "node" brew "python@3.12" brew "ripgrep" brew "fd" brew "jq" brew "gh" brew "awscli" cask "visual-studio-code" cask "iterm2" cask "docker" cask "1password" cask "raycast"

You never have to maintain this file manually. ConfigSync updates it every time you push, capturing any packages you have installed since your last sync.

Bootstrap Scripts for Everything Else

Some things cannot be captured as files: macOS system preferences, fonts, or tools installed via custom scripts. ConfigSync supports a bootstrap.sh script that runs after all modules are restored:

~/.configsync/bootstrap.sh
#!/bin/bash # Runs after configsync pull completes # Install oh-my-zsh if not present if [ ! -d "$HOME/.oh-my-zsh" ]; then sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended fi # Install coding fonts brew tap homebrew/cask-fonts 2>/dev/null brew install --cask font-jetbrains-mono font-fira-code 2>/dev/null # macOS defaults defaults write com.apple.dock autohide -bool true defaults write NSGlobalDomain AppleShowAllExtensions -bool true defaults write com.apple.finder AppleShowAllFiles -bool true killall Dock Finder 2>/dev/null echo "Bootstrap complete."

The Comparison: Manual vs ConfigSync

TaskManualConfigSync
Install CLI tools & packages20-30 minAutomatic (brew bundle)
Restore shell config10-15 minAutomatic
Set up SSH keys5-10 minAutomatic (encrypted)
Install & configure editor15-20 minAutomatic
Clone project repos10-15 minAutomatic
Restore .env files20-30 min (find them first)Automatic (encrypted)
System preferences10-15 minBootstrap script
Total time2+ hours~5 minutes

The time savings compound when you factor in the things you forget. With manual setup, you will be discovering missing configs for weeks. With ConfigSync, everything is there from minute one because it was captured automatically from your working machine.

Getting Started

If you already have a configured machine, getting started takes two minutes:

Set up ConfigSync on your current machine
# Install ConfigSync $ npm install -g configsync # Sign in to your account $ configsync login # Capture your current environment $ configsync push Scanning 24 modules... Encrypted 142 files. Pushed snapshot to cloud (2.3 MB). # That's it. Your environment is backed up and ready.

The next time you set up a new machine — or need to recover from a catastrophic failure — your entire development environment is one command away.

Ready to try ConfigSync?

Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.