Aider on a Mac: A Terminal Setup That Makes It Pleasant (2026)
·Terminal Candy ·6 min read
Aider is the agent I reach for when I know exactly what I want changed. It is fast, it commits as it goes, and it does not try to have a conversation about it.
It is also, out of the box on a Mac, kind of ugly. Muddy colors, a code theme that fights whatever your terminal is doing, diffs that are hard to scan. Fixable, all of it. Here is the setup I actually run.
Install it without wrecking your Python
Do not pip install this into your system Python. Aider pulls a lot of dependencies and you will regret it.
The clean way is uv:
brew install uv
uv tool install --force --python python3.12 aider-chat@latest
That gives you an isolated tool install with its own interpreter, on your PATH, upgradable with one command:
uv tool upgrade aider-chat
Then keys. Put them in your shell profile, not in a project file you might commit:
export ANTHROPIC_API_KEY=sk-ant-...
export OPENAI_API_KEY=sk-...
Sanity check:
cd ~/code/some-repo
aider --model sonnet
Aider wants a git repo. If you point it at a directory that is not one, it will offer to make one. Let it, or move.
The config file is the whole game
Almost everything below can be a flag, but flags are how you end up with a 400 character shell alias. Use the YAML config instead.
Global defaults go in ~/.aider.conf.yml. Per project overrides go in .aider.conf.yml at the repo root, which is a good place for model choice and file conventions.
Mine looks roughly like this:
model: sonnet
dark-mode: true
code-theme: monokai
auto-commits: true
gitignore: false
watch-files: true
A few of those deserve explanation.
dark-mode: true is not cosmetic sugar. Aider picks a set of default colors assuming a light background, and if you never set this, half its output renders in colors chosen to contrast with white. On a dark terminal that is the washed out grey text you have been squinting at.
watch-files: true is the underrated one. Aider watches for # ai comments in your files and acts on them. Write the comment in your editor, save, aider picks it up. It turns the terminal into a background worker rather than a chat window.
Fix the colors
Aider exposes each output channel separately. This is more control than most CLI tools give you, and it is worth ten minutes.
user-input-color: "#7dcfff"
tool-output-color: "#9ece6a"
tool-error-color: "#f7768e"
tool-warning-color: "#e0af68"
assistant-output-color: "#c0caf5"
completion-menu-color: "#a9b1d6"
completion-menu-bg-color: "#1a1b26"
Those are Tokyo Night values. Swap for whatever you use. The important part is that error and warning are visually distinct from tool output, because aider prints a lot of tool output and you need failures to jump.
code-theme is separate and takes a Pygments theme name. Useful ones: monokai, dracula, nord, gruvbox-dark, github-dark, one-dark. If your terminal background is a photo or a gradient rather than a flat color, monokai holds up better than most because its palette is saturated.
Fix the diffs, which is the real complaint
Aider shows you edits. Git shows you what landed. The second one is where most people's terminal experience is bad, and it has nothing to do with aider.
Turn on git's own color intelligence in ~/.gitconfig:
[color]
ui = auto
[color "diff"]
meta = yellow
frag = magenta bold
old = red bold
new = green bold
whitespace = red reverse
[diff]
colorMoved = zebra
algorithm = histogram
colorMoved = zebra is the one that changes your life. Moved code shows in a different color from added code, so a refactor stops looking like you deleted 200 lines and wrote 200 new ones.
If you want to go further, install delta:
brew install git-delta
[core]
pager = delta
[delta]
navigate = true
line-numbers = true
syntax-theme = Monokai Extended
[interactive]
diffFilter = delta --color-only
Delta gives you side by side diffs, syntax highlighted, with n and N to jump between files. Reviewing what an agent just did is most of the job now, so paying attention to the diff viewer pays back more than paying attention to the agent.
Fonts
Aider draws boxes and rules with Unicode. A font with bad box drawing coverage makes its output look broken.
What I would pick, in order:
- Berkeley Mono if you are willing to pay. Best box drawing, best long session comfort, ligatures optional.
- JetBrains Mono free, tall x-height, excellent at 13 to 14pt, good ligatures.
- IBM Plex Mono free, narrower, fits more columns, slightly less comfortable at small sizes.
- SF Mono already on your Mac, fine, no ligatures, box drawing is decent.
On ligatures: they are a real preference split. They make !== and => prettier and they make diffs slightly harder to character count. I leave them on for editing and off for review. Two profiles solves it.
Size matters more than font. I ran 12pt for years because more code fit. I moved to 14pt and stopped getting headaches. Aider output is dense text you read, not code you scan.
Running it beside Claude Code
This is where a Mac terminal setup either works or falls apart.
My layout is three tabs. Claude Code for anything that requires planning across files. Aider for surgical changes where I know the target. A plain shell for git, tests, and running the app.
Two problems show up immediately.
You lose track of which tab is which. Three tabs of scrolling monospace look the same. Tab titles help until they truncate. What actually works is giving each tab a visually distinct look, which is the argument I made at length in skin your AI agent. Different background, different accent, and you stop reading tab titles entirely.
You do not notice when aider needs you. Aider pauses for confirmations, for "add these files to the chat?", for anything ambiguous. It waits forever, quietly. Claude Code at least has a hook system you can wire to osascript. Aider does not have an equivalent, so the DIY approach has nothing to hook.
This is exactly why Terminal Candy does agent detection at the terminal layer instead. It recognizes aider along with eight other CLI agents, per tab, and tells you when one finishes or goes quiet waiting for input. No config file, and it works for tools that ship no notification API of their own. The full breakdown of the options, including the free ones, is in AI agent alerts on Mac, and the tool specific page is at /for/aider/.
Small things that add up
/architectmode for anything nontrivial. It plans with one model and edits with another. Slower, better./undoreverts aider's last commit. Learn it before you need it./addand/dropaggressively. Aider's output quality tracks how tight the file context is more than anything else.Ctrl+Conce cancels the current response. Twice quits. Do not panic on the first one.--no-auto-commitsif you like staging things yourself, but then you own the cleanup.
Where I landed
A YAML config with dark mode and real colors, delta for diffs, JetBrains Mono at 14, three tabs that look different from each other, and something that tells me when an agent is waiting.
That last piece is the one nobody sets up and everybody needs. If you run more than one agent, it is the difference between orchestrating and hovering.
If you want the same setup for Codex CLI and Gemini CLI, that is covered in the Codex and Gemini CLI setup post.
Terminal Candy is a native macOS terminal, Apple Silicon, AppKit and SwiftTerm, no Electron. $10 once, 14 day trial. Try it and browse the skin gallery while your agent works.