Homebrew
shft captures the brew list (formulas, casks, taps) on the source Mac and lays down a re-bootstrap script on the destination. You run one command and your toolchain is back.
Use case · Developer migration
Engineers don’t dread new Macs because of the hardware. They dread two days of reinstalling Homebrew, restoring dotfiles, finding the SSH keys, remembering which Node version that one project pins, and discovering at 5pm that the IDE profile didn’t come over.
Migration Assistant copies the bytes. shft also reasons about what those bytes are, so the new Mac actually works.
shft captures the brew list (formulas, casks, taps) on the source Mac and lays down a re-bootstrap script on the destination. You run one command and your toolchain is back.
~/.zshrc, ~/.bashrc, ~/.config, ~/.gitconfig, and the rest of your shell environment move intact. If you symlink from a dotfiles repo, the symlinks come with you.
Keys move with permissions preserved. The known_hosts file and config come too — you don't have to re-trust every server on day one.
nvm, asdf, rbenv, pyenv, mise. Installed versions are detected. The post-migration checklist tells you which managers to re-run install for.
VS Code settings, extensions, and keybindings; JetBrains IDE settings; Sublime, Cursor, Zed — anything that stores config in ~/Library or ~/.config gets carried over.
~/dev, ~/src, ~/code — pick what you want, skip what you don't. Build artifacts (node_modules, target, .venv) are smart-skipped by default and re-generated via the included script.
Copying node_modules across machines is the wrong move. Architecture-specific binaries, broken symlinks, partial installs — you’ll spend a day chasing weirdness.
shft detects build directories and skips them by default. The destination Mac gets a regeneration script that re-runs npm install, cargo build, bundle install per repo so you get a clean tree without losing the day.
shft writes a Markdown checklist to ~/shft-migration-report.md on the new Mac. It calls out exactly what to verify: brew doctor, ssh-add -l, signed-in IDEs, anything that needs re-authorization on the new hardware.
By the time you’ve worked through the checklist — usually 10-15 minutes — the Mac is ready. No two-day rebuild.
Personal license covers unlimited migrations across your own machines. Lifetime — no expiry, no subscription.