Most of my day is spent in a terminal, talking to coding agents. This is the setup that makes that pleasant. Everything here lives in my dotfiles.
Terminal
Ghostty. Fast, native, and the config is a plain text file. The one setting that matters: macos-option-as-alt = left, so alt shortcuts reach my terminal apps instead of typing ∆ and ˚.
The shell is zsh with oh-my-zsh and powerlevel10k, plus the usual replacements:
fzffor fuzzy history and file searchzoxidesoz tinygradjumps to the right foldereza,bat,fdandrgin place ofls,cat,findandgrepdirenvfor per-project environments
Multiplexer
herdr, a terminal workspace manager built for AI coding agents. It knows which panes are running an agent and whether that agent is working or waiting on me.
I gave it tmux keys so my muscle memory carries over. The prefix is ctrl+s, and in Ghostty cmd+s sends it too. On my Mac caps lock is command, so the prefix is caps+s, the same finger as on my HHKB.
| Keys | Action |
|---|---|
prefix c, prefix n / p | new tab, next / previous tab |
prefix % / " | split |
prefix h j k l | move between panes |
alt+up / alt+down, alt+1-9 | switch workspaces |
prefix shift+c | new workspace running Claude |
prefix f | find an old session and resume it |
My tmux config mirrors these bindings, so it works the same on machines without herdr.
Agents
Claude Code, mostly with permission prompts off inside herdr. c is my alias for claude --dangerously-skip-permissions.
threadr
After a few months I had hundreds of conversations and no good way back into them. So I built threadr:
threadr <terms>searches every past session by what it was about, puts me back in its directory and resumes it./branch-outforks the conversation I’m in into a new herdr workspace, so I can try something without losing the main line.threadr treedraws which conversations were forked from which.
Claude Code doesn’t record where a fork came from, so threadr reconstructs it from the message ids the two conversations share. How that works.
Keyboard
An HHKB, with control where caps lock usually is. On the MacBook, Karabiner turns caps lock into command and swaps backspace with backslash, so both keyboards feel about the same.