Terminal
The terminal is a core part of the local development environment for running Git commands, package managers, local servers, build tools, and AI coding tools such as Codex CLI. On macOS, the team recommends using a dedicated terminal emulator with strong tab, pane, and profile support rather than relying only on the default Terminal app.
For most engineers, either Ghostty or iTerm2 is a good choice, paired with zsh and Oh My Zsh for shell configuration and quality-of-life improvements.
Installing Homebrew for macOS
Section titled “Installing Homebrew for macOS”Homebrew is a popular package manager for macOS. To install Homebrew, run the following command:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"After installation, add Homebrew to your shell environment in ~/.zprofile. This keeps shell bootstrap in your login shell config and leaves ~/.zshrc for interactive shell customization.
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofileeval "$(/opt/homebrew/bin/brew shellenv)"echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofileeval "$(/usr/local/bin/brew shellenv)"To verify that Homebrew is available, run:
brew --versionRecommended Terminal Applications
Section titled “Recommended Terminal Applications”| Application | Recommended When | Notes |
|---|---|---|
| Ghostty | You want a modern macOS-native terminal with fast rendering and clean defaults | Good default choice for most developers |
| iTerm2 | You want a mature feature set with extensive customization and session management | Good choice for power users and long-established workflows |
Ghostty
Section titled “Ghostty”Ghostty is a strong default option for day-to-day macOS development. It has a native macOS interface, GPU-accelerated rendering, and sensible defaults without requiring much setup.
Install with Homebrew:
brew install --cask ghosttyYou can also install Ghostty by downloading the macOS binary from the official Ghostty download page if you prefer not to use Homebrew.
Choose Ghostty if you want:
- A fast, minimal terminal experience
- Native macOS look and feel
- Simple configuration with modern defaults
iTerm2
Section titled “iTerm2”iTerm2 remains a strong option for engineers who want deep configurability, advanced window and profile behavior, or existing workflows built around it.
Install with Homebrew:
brew install --cask iterm2You can also install iTerm2 by downloading the macOS binary from the official iTerm2 downloads page if you prefer not to use Homebrew.
Choose iTerm2 if you want:
- Extensive profile customization
- Advanced pane, tab, and session workflows
- A widely adopted terminal with a long feature history
Baseline macOS Setup
Section titled “Baseline macOS Setup”After installing your preferred terminal, use the following baseline setup:
- Install Homebrew if it is not already available.
- Use
zsh, which is the default shell on modern macOS versions. - Keep your interactive shell customization in
~/.zshrc. - Install Oh My Zsh to manage shell plugins, themes, and defaults more easily.
- Install language runtimes and CLIs with Homebrew or the tool’s official installer as needed.
Oh My Zsh
Section titled “Oh My Zsh”Oh My Zsh is the recommended framework for managing your zsh configuration on macOS. It provides a cleaner starting point for prompt customization, Git integration, plugins, and general shell usability.
Install with official installer:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"After installation, use ~/.zshrc as the primary place for shell customization.
Keep your plugin list minimal at first, and only add plugins for tools you actually use.
A good way to structure your .zshrc file is in this order:
- Core shell and framework settings
- Plugin and theme declarations
typeset -U path PATH fpathto keep PATH-related arrays unique- Completion search paths and shell options that must be defined before Oh My Zsh loads
source "$ZSH/oh-my-zsh.sh"- Optional tool-specific PATH additions and runtime hooks
A practical starting point is:
export ZSH="$HOME/.oh-my-zsh"ZSH_THEME="gnzh"
plugins=(git)
# Keep PATH entries uniquetypeset -U path PATH fpath
source "$ZSH/oh-my-zsh.sh"Recommended Oh My Zsh Plugins
Section titled “Recommended Oh My Zsh Plugins”Two plugins are especially useful for day-to-day terminal work:
- zsh-autosuggestions suggests commands based on your shell history as you type
- zsh-syntax-highlighting highlights valid and invalid commands before you run them
Install both into your Oh My Zsh custom plugins directory:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsgit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingThen, update ~/.zshrc:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)Keep zsh-syntax-highlighting at the end of the plugin list so it loads last.
Optional Theme: Spaceship
Section titled “Optional Theme: Spaceship”If you want a more informative prompt, Spaceship Prompt is a good optional theme for Oh My Zsh. It adds contextual prompt segments for Git status, Node.js versions, package managers, containers, and other common development tools.
Install Spaceship into your Oh My Zsh custom themes directory:
git clone https://github.com/spaceship-prompt/spaceship-prompt.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/spaceship-prompt" --depth=1ln -s "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/spaceship-prompt/spaceship.zsh-theme" "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/spaceship.zsh-theme"Then, set the theme in ~/.zshrc:
ZSH_THEME="spaceship"Spaceship works best with a Nerd Font-compatible terminal font.
Recommended Terminal Preferences
Section titled “Recommended Terminal Preferences”Use these settings as a practical starting point:
- Choose a readable monospace font such as JetBrains Mono or Monaspace
- Use a font size that stays readable during pairing, demos, and screen sharing
- Enable tabs and split panes so you can keep servers, shells, and editors separated
- Keep scrollback large enough for build logs and test output
- Prefer a consistent theme and prompt setup across projects
If your prompt or tooling depends on glyphs or icons, use a Nerd Font-compatible font.
Suggested Workflow
Section titled “Suggested Workflow”A practical local setup for most engineers is:
- Terminal app: Ghostty or iTerm2
- Shell:
zsh - Shell framework: Oh My Zsh
- Optional theme: Spaceship
- Shell plugins:
git,zsh-autosuggestions, andzsh-syntax-highlighting - Editor: VS Code
- Source control: GitHub
This gives you a consistent environment for local development, Git workflows, and command-line tools across team projects.
- Apple’s built-in Terminal app is acceptable for light use, but it is not the recommended default for daily engineering workflows.
- Keep terminal-specific settings in the terminal application and shell-specific behavior in
~/.zshrc. - If you manage dotfiles in a repository, keep terminal and shell configuration there so new machines are easier to bootstrap.