Skip to content
Bridger Tower

Design Generalist

Mac for Web Development (2026)

A curated, opinionated checklist for spinning up a fresh macOS machine in 2026. This is the actual setup I run on my daily driver, not a theoretical list.

Goal: Be fully productive (coding, design, comms) in ~30 minutes with repeatable commands and sensible defaults.

What changed since last year: the terminal is now the primary interface for AI, not the editor. Half of this guide is about coding agents that didn't exist eighteen months ago. Docker Desktop is gone, replaced by OrbStack. Shottr gave way to CleanShot X. And Node moved to 24 LTS.


System & UX Setup

1. Update macOS

Ensures the latest security patches, Xcode SDKs, and firmware. macOS 26 (Tahoe) is the current release.

  1. Open System Settings → General → Software Update.
  2. Install any pending updates, then reboot before continuing.

2. Install Homebrew

The package manager for everything that isn't on the Mac App Store.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)" # add to ~/.zprofile

3. System Apps

Core utilities that shape the desktop experience.

brew install --cask ghostty raycast cleanshot rectangle maccy monitorcontrol
  • Ghostty — minimal GPU-accelerated terminal, the fastest text rendering on macOS
  • Raycast — Spotlight replacement with extensions, clipboard history, and window management
  • CleanShot X — screenshot and screen recording with instant markup, scrolling capture, and pinned overlays. Replaced Shottr for me because the recording and annotation tools are better
  • Rectangle — window manager for quick ⌥⌘→ tiling, multi-display aware
  • Maccy — clipboard manager with plain-text history synced across apps
  • MonitorControl — brightness and volume for external displays from the keyboard

Ghostty config lives at ~/.config/ghostty/config (or ~/Library/Application Support/com.mitchellh.ghostty/config). Note that it is a plain key/value file, not TOML:

font-family=Menlo
theme=Flexoki Dark
font-size=14
window-padding-balance=true
window-padding-x=8
window-padding-y=8
keybind = cmd+left=goto_split:left
keybind = cmd+down=goto_split:down
keybind = cmd+up=goto_split:up
keybind = cmd+right=goto_split:right
keybind = cmd+k=unbind
keybind = global:cmd+grave_accent=toggle_quick_terminal
quick-terminal-position = right

The cmd+grave_accent quick terminal is the single best keybinding here — a global drop-down terminal from anywhere in the OS. cmd+k is unbound so it passes through to whatever agent is running in the terminal.

4. Browsers

You need more than one for testing, and each has a job.

brew install --cask google-chrome chromium firefox@developer-edition thebrowsercompany-dia
  • Chrome — default dev target, DevTools, Lighthouse
  • Chromium — clean profile for testing without extensions or a signed-in account
  • Firefox Developer Edition — catches layout bugs Chrome forgives
  • Dia — AI-native browser, worth keeping around for research
  • Safari — already installed, and you must test in it

Development Environment

5. Developer Tooling

xcode-select --install
brew install gh wget neovim ripgrep fzf zoxide btop tmux tree nmap ffmpeg yt-dlp
  • gh — GitHub CLI for PRs, issues, and git credential auth
  • ripgrep — the search tool every coding agent shells out to; install it even if you never type rg
  • fzf — fuzzy finder for shell history and file pickers
  • zoxidecd that learns your habits
  • btop — resource monitor, useful when a build or a local model eats the machine
  • tmux — persistent sessions, essential once you run long agent jobs
  • neovim — for quick edits over SSH and in tmux panes

Note that git comes from the Xcode Command Line Tools, so you don't need the Homebrew formula.

Platform CLIs, install the ones you actually deploy to:

brew install supabase/tap/supabase stripe/stripe-cli/stripe railway flyctl
npm i -g vercel wrangler turbo

6. Node, pnpm, Bun, Deno

Node 24 is the current LTS.

brew install node nvm # nvm for per-project version pinning
npm install -g pnpm@latest-10
brew install oven-sh/bun/bun
brew install deno
  • pnpm 10 — my default package manager for app work
  • Bun 1.3 — scripts, one-off tooling, and anything where install speed matters most
  • Deno 2 — sandboxed scripts and edge-shaped work

7. Editors

brew install --cask cursor zed visual-studio-code
  • Cursor — primary editor, the AI features are still the most complete
  • Zed — fastest editor on the machine, with a genuinely good built-in agent panel. What I open for a single file
  • VS Code — the fallback that always works, and the one with every extension

My Zed config worth stealing (~/.config/zed/settings.json):

{
"buffer_font_family": "Menlo",
"buffer_font_size": 13,
"autosave": "on_focus_change",
"format_on_save": "on",
"agent": { "dock": "right", "default_profile": "write" },
"project_panel": { "dock": "left" }
}

8. Oh My Zsh (+ Plugins)

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions \
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting

.zshrc snippet:

ZSH_THEME="robbyrussell"
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

One warning for 2026: every agent installer wants to append a PATH line to your .zshrc. Mine has picked up a dozen of them. Read what you paste, keep secrets in a .env or the keychain rather than exported inline, and audit the file every few months.

9. Handy Aliases

# pnpm
alias p='pnpm'
alias pb='pnpm build'
alias pd='pnpm dev'
# Bun
alias b='bun'
alias bi='bun install'
alias bd='bun dev'
alias bu='bun upgrade'
# Git
alias gs='git send'
# Claude Code, no interruptions
alias lfg='claude --dangerously-skip-permissions'

That last one is a loaded gun. It skips every permission prompt, so only point it at a repo you can throw away or a worktree you're willing to lose.

10. Global Git Config

[alias]
send = "!f() { git add . && git commit -m \"${1:-wip}\"; }; f"
[user]
name = Bridger Tower
email = bridgertower@gmail.com
[init]
defaultBranch = main
[core]
excludesfile = ~/.gitignore_global
[credential "https://github.com"]
helper =
helper = !/opt/homebrew/bin/gh auth git-credential

git send used to push too. I dropped the push after one too many agent-authored commits landed on a remote before I'd read them.

11. Neovim

git clone https://github.com/nvim-lua/kickstart.nvim.git \
"${XDG_CONFIG_HOME:-$HOME/.config}"/nvim

AI Coding Agents

This is the section that didn't exist in the 2025 guide, and it's now the part I'd set up first. The terminal agents matter more than the editor.

12. Terminal Agents

# Claude Code — my default
curl -fsSL https://claude.ai/install.sh | bash
# OpenAI Codex
npm i -g @openai/codex
# OpenCode — open source, model agnostic
brew install anomalyco/tap/opencode
# Cursor Agent — Cursor's model in the terminal
curl https://cursor.com/install -fsS | bash
  • Claude Code — the one I live in. Skills, subagents, MCP servers, and hooks make it the most configurable
  • Codex — strong second opinion, especially on long refactors
  • OpenCode — model agnostic, good when you want to point an agent at a local or cheap model
  • Cursor Agent — the same model as the editor, useful when you're already in a Cursor project

Also worth trying: Factory's droid and Grok CLI. Running two agents against the same repo in separate git worktrees is the single biggest workflow change of the last year.

13. Desktop AI Apps

brew install --cask claude chatgpt granola wispr-flow macwhisper
  • Claude and ChatGPT — desktop apps for the non-coding half of the work
  • Granola — meeting notes that actually get used, because it transcribes in the background and never joins the call
  • Wispr Flow — voice-to-text everywhere in the OS. Talking to an agent is faster than typing at it
  • MacWhisper — local transcription for files you don't want going to a server

14. Local Models

brew install ollama
brew install --cask lm-studio
  • Ollama — CLI and API for local models, good for scripting and offline work
  • LM Studio — GUI for browsing, downloading, and testing models before you commit to one

Point OpenCode at Ollama and you have a fully local coding agent, which is genuinely useful on a plane or against a codebase you can't send anywhere.


Productivity & Collaboration

15. Messaging

brew install --cask slack discord whatsapp telegram microsoft-teams zoom

16. Productivity Apps

brew install --cask notion notion-calendar obsidian todoist-app craft spotify
  • Notion — team wiki and project tracking
  • Notion Calendar — the best calendar client on macOS, and it's free
  • Obsidian — local markdown vault, which doubles as a context directory agents can read
  • Todoist — tasks, with a CLI (brew install todoist) if you want to capture from the terminal
  • Craft — documents that need to look good

17. Screen Recording & Demos

brew install --cask screen-studio obs
  • Screen Studio — automatic zoom and smooth cursor motion. Every product demo I ship comes out of this
  • OBS — streaming and multi-source recording when you need real control

18. Design Apps

brew install --cask figma adobe-creative-cloud affinity eagle imageoptim
  • Figma — where the work happens
  • Affinity — the whole suite is free now, and it's a real Adobe alternative
  • Eagle — visual asset and reference library, better than a folder of screenshots
  • ImageOptim — drag images in before they hit a repo

19. Infrastructure & Data

brew install --cask orbstack tableplus proxyman tailscale-app
brew install postgresql@15
  • OrbStack — Docker and Linux VMs, dramatically faster and lighter than Docker Desktop. I stopped opening Docker Desktop entirely
  • TablePlus — database GUI for Postgres, MySQL, and SQLite
  • Proxyman — HTTP debugging, essential for webhook and API work
  • Tailscale — private network across your machines, plus easy access to a home server

TablePlus, Proxyman, and a handful of others come with Setapp if you'd rather pay one subscription than five.

Other apps to install from the Mac App Store

  • Bear — markdown notes
  • Things 3 — if you prefer it to Todoist
  • DaVinci Resolve — video editing

macOS Customization

Automated macOS Defaults Script

Use the following script to set macOS defaults for a cleaner and more developer-friendly experience.

Run each command individually, or save them in a shell script (e.g., macos-defaults.sh) and execute it with bash macos-defaults.sh.

# Show all filename extensions in Finder
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Set Finder view to Column by default
defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
# Show Path Bar in Finder
defaults write com.apple.finder ShowPathbar -bool true
# Set fast key repeat rate
defaults write NSGlobalDomain KeyRepeat -int 1
defaults write NSGlobalDomain InitialKeyRepeat -int 10
# Disable auto-correct
defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
# Always expand save and print panels by default
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
# Prevent Photos from opening automatically when devices are plugged in
defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true
# Set screenshot location to ~/Desktop/Screenshots
mkdir -p ~/Desktop/Screenshots
defaults write com.apple.screencapture location ~/Desktop/Screenshots
# Save screenshots in PNG format
defaults write com.apple.screencapture type -string "png"
# Copy screenshots to the clipboard as well as saving them
defaults write com.apple.screencapture target -string "clipboard"
# Restart Finder to apply changes
killall Finder

These defaults help streamline Finder, boost typing responsiveness, and reduce distractions. The KeyRepeat -int 1 setting is the one you'll notice most — it's faster than the System Settings slider allows.


The Short Version

If you only install six things: Ghostty, Raycast, Claude Code, Cursor, CleanShot X, and OrbStack. Everything else is a preference. Those six changed how the machine feels.

Enter your email address to subscribe.

Work with me