MacBook Setup for AI Engineering: macOS Tools, Python, Docker, and Terminal Workflow

This is my checklist for turning a fresh macOS install into an AI engineering workstation: command-line tools, Homebrew, Python, Docker, terminal defaults, and editor setup.

TL;DR: This is the setup I use on a new MacBook: Homebrew, Python with uv, the bundled Zsh with Oh My Zsh and Powerlevel10k, Docker, my editors, and local AI tools. Keep the commands and dotfiles in version control so the setup is repeatable.

1. Install Xcode Command Line Tools

xcode-select --install

This opens a dialog that walks you through the install.

2. Install Homebrew

Homebrew is the package manager I use for everything else on this list:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

The installer explains what it will change and asks for confirmation. On Apple Silicon, Homebrew uses /opt/homebrew by default. Follow the brew shellenv command printed at the end; Homebrew does not silently make the command available in every shell.

3. Install the core tools

brew install openssl readline sqlite3 xz zlib uv htop gitmoji pandoc ncdu tmux

Roughly grouped by what they’re for:

Python environment

Before adopting uv, I used pyenv as the foundation of my Python environment management. uv now covers that everyday workflow for me, including Python installation and project environments.

Install pyenv separately when you need that source-build path:

brew install pyenv

System libraries

Productivity tools

For more on uv itself, see my Quick-Guide on managing Python on macOS with uv.

4. Pick a terminal

The default macOS Terminal is fine. I used iTerm2 for years and recently moved to Warp, a Rust-based terminal with built-in AI features. The choice is personal; none of the later setup depends on it.

Optional: iTerm2 setup

If you stick with iTerm2, the two settings I always change:

Enable natural text editing

  1. Preferences → Profiles → Keys → Key Mappings
  2. Click the Presets… dropdown
  3. Select “Natural Text Editing”

Pick a color theme

  1. Browse themes at iTerm2-Color-Schemes
  2. Preferences → Profiles → Colors → Color Presets…
  3. Click Import and select your downloaded theme

5. Set up Zsh

macOS already includes Zsh and uses it as the default login shell. I use the bundled /bin/zsh; install Homebrew’s Zsh only when you need a specific newer upstream version.

Check the installed Zsh and your current login shell:

echo "$SHELL"
command -v zsh
zsh --version

If Zsh is installed but not selected as your login shell, switch to the bundled copy:

chsh -s /bin/zsh

Open a new terminal after changing the login shell.

Oh My Zsh adds the defaults and plugin system I use on top. Its official installer is:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

The project recommends inspecting an unfamiliar installer before running it. It also documents that an existing .zshrc is renamed to .zshrc.pre-oh-my-zsh during installation.

6. Add Zsh plugins

Edit your ~/.zshrc to load these plugins:

plugins=(
    aws bgnotify brew docker docker-compose
    emoji forklift gcloud git history iterm2
    keychain kubectl macos pre-commit
    pyenv pylint python screen themes
    tmux virtualenv vscode
    zsh-autosuggestions zsh-syntax-highlighting
)

Remove pyenv from the plugin list if you skipped the optional pyenv install.

Descriptions for all of these are in the Oh My Zsh plugins wiki.

The last two need a separate install:

Follow the install instructions on each repo.

7. Theme it with Powerlevel10k

Powerlevel10k is the Zsh theme I use. It shows the working directory, git status, and active Python environment in the prompt, and it has an interactive wizard for tweaking the look. Install instructions are on the GitHub page.

Fonts in other editors

If you use VSCode or another editor with an integrated terminal, set the terminal font so the Powerlevel10k icons render:

  1. Open your editor’s settings
  2. Search for terminal.integrated.fontFamily
  3. Set it to MesloLGS NF (installed alongside Powerlevel10k)

Full font setup is in the Powerlevel10k font guide.

8. Editor and AI assistants

I always end up with one IDE open and an AI tool or two running next to it.

IDEs

AI assistants

These days that’s Cursor with Codex and Claude Code running in parallel.

9. The rest

A few extras I install on every machine:

10. That’s the setup

That’s what I install on every new MacBook before doing real work. Adjust to taste.


Key takeaways

  1. This is a personal setup, not a minimal or universal macOS baseline. Remove anything you do not use.
  2. The bundled /bin/zsh is sufficient for this setup. Install Homebrew’s Zsh only when you need a specific newer upstream version.
  3. uv now owns Python installation and project environments in my everyday workflow. pyenv remains optional for source-built or custom CPython interpreters.
  4. Keep install commands, secret-free dotfiles, editor extensions, and model locations documented so the next setup is mechanical.

References