A hands-on macOS guide — from install to advanced workflows
0 / 8 complete
Warp is a modern, GPU-accelerated terminal built in Rust. It's free for individual use
and the fastest way to level up your command-line workflow on macOS.
Install via Homebrew
bash
brew install --cask warp
Or download directly
Grab the latest version from warp.dev/download — drag to Applications and launch.
First launch checklist
Sign in with GitHub (or email) to activate your account
Grant Accessibility & Full Disk Access when prompted
Set Warp as your default terminal (Warp → Settings → Default Terminal)
Browse Preferences with ⌘ , to explore the settings
Warp's GPU-accelerated renderer means buttery-smooth scrolling and crisp text at any size.
Dial in the look before you start configuring the shell underneath.
Recommended settings
Font → JetBrains Mono Nerd Font, 13px (installed below)
Theme → Dracula, Tokyo Night, or your pick from the gallery
Compact Mode → On (Settings → Appearance → Compact Mode)
Window Opacity → 95% for a subtle transparency effect
Prompt → PS1 or Starship (configured in Section 03)
Install a Nerd Font
Nerd Fonts patch in thousands of icons used by CLI tools like eza, Starship, and Powerlevel10k.
bash
brew tap homebrew/cask-fontsbrew install --cask font-jetbrains-mono-nerd-font
Browse 50+ community themes at warp.dev/themes — you can preview and apply them instantly.
macOS ships with Zsh as the default shell. Oh My Zsh layers on a plugin system, themes,
and sensible defaults that make your shell dramatically more productive.
Install Oh My Zsh
bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Essential plugins
Add zsh-autosuggestions and zsh-syntax-highlighting — two plugins that will change the way you type commands.
bash
# Clone the plugins into Oh My Zsh's custom directorygit 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 ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
After editing ~/.zshrc, run source ~/.zshrc or open a new tab to apply changes.
Shell setup checklist
Oh My Zsh installed and running
zsh-autosuggestions and zsh-syntax-highlighting active
Aliases added to ~/.zshrc
Run source ~/.zshrc to reload
Your local dev stack — version managers, CLI tools, and Git config. Run these in Warp
and you'll have a fully equipped development environment in minutes.
Install everything at once
bash
# Node.js via nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bashnvm install --ltsnvm alias default node# Python via pyenvbrew install pyenvecho 'eval "$(pyenv init -)"' >> ~/.zshrcpyenv install 3.12pyenv global 3.12# GitHub CLIbrew install ghgh auth login# Useful CLI toolsbrew install eza bat fd ripgrep jq
Level up your ls and cat
Replace the defaults with modern alternatives that have color, icons, and Git integration.
eza shows file icons when you have a Nerd Font installed (Section 02).
bat adds syntax highlighting to file previews.
Configure Git globally
bash
git config --global user.name "Your Name"git config --global user.email "you@example.com"git config --global init.defaultBranch maingit config --global pull.rebase true# Generate SSH key (if you don't have one)ssh-keygen -t ed25519 -C "you@example.com"eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519# Copy public key to clipboard — paste into GitHub → Settings → SSH Keyspbcopy < ~/.ssh/id_ed25519.pub
Toolchain checklist
Node.js installed via nvm (check: node --version)
Python installed via pyenv (check: python --version)
GitHub CLI authenticated (check: gh auth status)
SSH key generated and added to GitHub
Modern CLI tools installed (eza, bat, fd, ripgrep, jq)
Claude Code is an agentic coding tool that lives in your terminal. It reads your codebase,
edits files, runs commands, and works as a first-class citizen alongside Warp's block-based UI.
# Add to ~/.zshrcalias cc="claude"alias ccr="claude 'review this code for bugs and improvements'"alias ccfix="claude 'fix the failing tests'"alias cctest="claude 'write tests for the recent changes'"alias ccdoc="claude 'add documentation to the undocumented functions'"
CLAUDE.md — project memory
Create a CLAUDE.md file in your project root. Claude Code reads this
automatically to understand your project's conventions, architecture, and commands.
markdown
# CLAUDE.md## ProjectBrief description of your project.## Commands```bashnpm run dev # Start dev servernpm run build # Production buildnpm test # Run tests```## Architecture- Framework and key tech decisions- Important file paths- Conventions to follow
Warp + Claude Code power moves
Blocks: Warp's block-based output means Claude Code's work is neatly
isolated — you can collapse, copy, or share individual command blocks without scrollback noise.
Warp Drive: Pin your Claude Code sessions as shareable runbooks with
Cmd + W. Great for onboarding teammates to your AI workflow.
Claude Code checklist
Claude Code installed globally (check: claude --version)
Aliases added to ~/.zshrc
CLAUDE.md created in your main project
Run a test session: claude 'explain the project structure'
Warp isn't just a pretty terminal — it has unique features like command blocks, AI assistance,
and Warp Drive that no other terminal offers. Learn the shortcuts and you'll fly.
Navigation shortcuts
Action
Shortcut
New tab
Cmd + T
Close tab
Cmd + W
Split pane right
Cmd + D
Split pane down
Cmd + Shift + D
Navigate panes
Cmd + Option + Arrow
Command palette
Cmd + P
Settings
Cmd + ,
Block navigation
Action
Shortcut
Select block
Cmd + Up
Copy block output
Cmd + Shift + C
Share block
Cmd + Shift + S
Collapse block
Click the block header
AI features
Action
Shortcut
Warp AI (natural language → command)
Ctrl + Space
Explain error
Click the error hint icon
Suggested commands
Start typing and review inline suggestions
Warp Drive (Cmd + Shift + W) lets you save and share
workflows, commands, and environment configs with your team. Think of it as bookmarks for terminal sessions.
Shortcuts checklist
Try split panes — run a server in one, tests in another
Use Warp AI to convert a natural language request into a command
Save a workflow to Warp Drive as a team runbook
The difference between a fast terminal and a great one is the workflows you build on top.
These scripts and tools will save you hours every week.
fzf — fuzzy find everything
fzf is a general-purpose fuzzy finder. It plugs into file search, command history,
Git branches, and anything else you can pipe into it.
bash
brew install fzf# Add to ~/.zshrcsource <(fzf --zsh)# Key bindings (add to ~/.zshrc)export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
Project switcher function
Jump to any project directory with fuzzy matching:
bash
# Add to ~/.zshrcp() { local dir dir=$(find ~/Development -maxdepth 2 -type d | fzf --preview 'eza -la --icons {}') if [[ -n "$dir" ]]; then cd "$dir" fi}
Session startup script
Create a script that boots your full dev environment in one command:
bash
#!/bin/bash# ~/bin/dev-start.sh — launch your dev environmentPROJECT=${1:-$(basename $PWD)}echo "Starting dev environment for $PROJECT..."# Open in Warp split paneswarp-cli split-pane --direction rightwarp-cli send-text --pane 1 "npm run dev"warp-cli send-text --pane 2 "npm run test -- --watch"echo "Dev environment ready."
Environment & secrets management
Use direnv to auto-load environment variables per project — no more manual source .env:
bash
brew install direnv# Add to ~/.zshrceval "$(direnv hook zsh)"# In your project directoryecho 'export DATABASE_URL="postgres://..."' > .envrcdirenv allow
Back up your ~/.zshrc before making changes. A simple
cp ~/.zshrc ~/.zshrc.backup can save you from a broken shell config.
Final power checklist
fzf installed and shell integration active (Ctrl+R for history, Ctrl+T for files)
Project switcher function added to ~/.zshrc
dev-start.sh script created and made executable (chmod +x)
direnv installed and hooked into Zsh
Back up your ~/.zshrc — you've earned it
Combine Warp's unique features with TypeScript, GitHub CLI, and Claude Code
to build a developer workflow that's faster than anything you've used before.
Scaffold a TypeScript project
Bootstrap a new project and push it to GitHub in under a minute:
bash
# Create a new project (pick your framework)npm create astro@latest my-app -- --template minimal --typescript strictcd my-app# Initialize Git and push to GitHubgit init && git add -A && git commit -m "init: scaffold project"gh repo create my-app --public --source=. --push
Warp Blocks: Each command's output is a separate block — copy the
scaffolding summary directly from the block without selecting text.
Feature branch workflow
A clean branch workflow using GitHub CLI — never leave the terminal:
bash
# Create and switch to a feature branchgit checkout -b feat/add-auth-middleware# ... make your changes ...# Stage, commit, and open a PR in one flowgit add -Agit commit -m "feat: add JWT auth middleware"gh pr create --fill# Check CI statusgh pr checks# Once CI passes, mergegh pr merge --squash --delete-branch
Warp Blocks: Each git command's output is independently
copyable and shareable — send a specific block to your reviewer instead of a screenshot.
Claude Code development loop
The real power: use Claude Code as a pair programmer inside Warp. This is the
workflow loop that replaces context-switching to a browser-based AI:
bash
# Step 1 — Ask Claude to implement a featureclaude 'add rate limiting middleware to the Express API routes'# Step 2 — Review what Claude changedgit diff# Step 3 — Ask Claude to write testsclaude 'write tests for the rate limiting middleware using vitest'# Step 4 — Run the testsnpm test# Step 5 — If tests fail, let Claude fix themclaude 'fix the failing tests'# Step 6 — Commit when greengit add -A && git commit -m "feat: add rate limiting with tests"
Collapse blocks: Click any completed Claude Code block header to
collapse it. This keeps your terminal clean while you iterate through the loop.
Multi-pane TypeScript workflow
Use Warp's split panes to run your full development environment simultaneously.
This is where Warp's GPU-accelerated rendering really shines — no lag across panes.
bash
# Pane 1 (main) — your working terminal# Already open# Pane 2 — split right for TypeScript watch mode# Press Cmd+D, then run:npx tsc --watch --noEmit# Pane 3 — split down from Pane 2 for test watch# Press Cmd+Shift+D, then run:npx vitest --watch# Pane 4 — split down from Pane 1 for dev server# Press Cmd+Shift+D, then run:npm run dev
Warp Drive: Save this pane layout as a Warp Drive workflow
(Cmd + Shift + W) to launch your entire dev
environment in one click.
Debug TypeScript errors with Warp AI
When TypeScript throws a cryptic error, use Warp AI to decode it instantly.
No more copy-pasting errors into a search engine.
bash
# Hit Ctrl+Space and type naturally:# "what does TS2345 mean and how do I fix it"# Or ask Claude Code for a deeper fix:claude 'the TypeScript compiler is throwing TS2345 on src/middleware.ts:42 — fix it'# Share the error block with your team:# Click the block → Cmd+Shift+S → share link generated
Error hints: Click the lightbulb icon on any failed command
block — Warp AI explains the error and suggests a fix in-line.
Ship it: PR → CI → merge
The full shipping flow from feature branch to merged PR:
bash
# Create PR with a structured descriptiongh pr create --title "feat: add rate limiting" --body "## Changes- Added rate limiting middleware (100 req/min per IP)- Added Redis-backed token bucket- Added tests for rate limit scenarios## Testing- npm test — all passing- Manual test: curl -v localhost:3000/api/health"# Watch CI in a split pane (Cmd+D)gh run watch# Once CI is green, merge and clean upgh pr merge --squash --delete-branchgit checkout main && git pull
Workflows checklist
Scaffold a TS project with strict: true and push to GitHub
Create a feature branch and open a PR with gh pr create
Use Claude Code to implement a feature and write tests
Run tsc --watch and vitest --watch in split panes (Cmd+D)
Use Warp AI (Ctrl+Space) to decode a TypeScript error
Ship a PR: gh pr create → gh run watch → gh pr merge