1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 --- title: "My Setup: Claude Code + Ghostty + Worktrees on a Mac" date: 2026-03-11T23:55:00+01:00 draft: false slug: "claude-code-ghostty-worktrees-mac-setup" slug_en: "claude-code-ghostty-worktrees-mac-setup" description: "How I combine Ghostty, git worktrees, and Claude Code in my daily macOS development workflow. No flickers, massive scrollback, and true parallelism with worktrees." tags: ["claude-code", "ghostty", "git", "worktrees", "productivity", "mac", "workflow", "setup"] categories: ["tools"] translation: hash: "" last_translated: "" notes: | - "irse de cañas": "going out for beers". Spanish social ritual. Use local equivalent. - "dicho en cristiano": "in plain language". No religious connotation. - "de cojones": vulgar but affectionate intensifier meaning "really good / badass". Equivalent: "damn good" or "kickass". - "ñapa": "hack/bodge". Affectionate, not derogatory. - "currar": colloquial for "to work". Very common in Spain. - "mola": "it's cool / it's great". Casual. - "chapucilla": diminutive of "chapuza" (hack/kludge). Even more affectionate than "ñapa". - "Quick Terminal estilo Quake": reference to the dropdown console in Quake (1996 videogame). Widely known among devs. - "buffer del carajo": "huge-ass buffer". Vulgar but common intensifier. - "la guinda / el pastel": "the icing / the cake". Spanish version of "icing on the cake". social: publish: true scheduled_date: 2026-03-14 platforms: ["twitter", "linkedin"] excerpt: "Ghostty doesn’t flicker, has a massive scrollback buffer, and supports worktrees for running three Claude Code agents in parallel. My Mac development setup, step by step." wordpress: publish: true categories: [1] tags: ["claude-code", "ghostty", "git", "worktrees", "productivity", "mac"] video: generate: false style: "educational" --- I currently have three Claude Code sessions open. One is translating blog posts. Another is writing tests for a CLI. The third is helping me debug a data pipeline. Each one runs in its own *worktree*, each one in its own Ghostty *split*, while I jump between them using `Cmd+Alt+Arrow`. I haven’t opened iTerm2 in months. I haven’t touched tmux in weeks. Everything lives in a single Ghostty window. Is it the perfect setup? No. Is it the most productive setup I’ve ever had? Absolutely. ## Why Ghostty and not another terminal? I’ll be direct: Ghostty consumes battery like it’s mining Bitcoin. I already detailed this in [the post about GPU-powered terminals and battery drain](/posts/terminal-gpu-battery-macbook-ghostty-iterm2/). That hasn’t changed and it’s still its biggest downside. If I’m on battery, I close Ghostty and switch to Terminal.app without hesitation. But when I’m plugged in—about 80% of the time at my desk with the Studio Display—Ghostty wins for two reasons that have nothing to do with aesthetic nerdiness: **1. No flickering.** This sounds trivial until you spend eight hours a day staring at a terminal. iTerm2 has micro-flickers during fast *scrolling*, artifacts when resizing, and subtle *flickers* when switching tabs. Terminal.app is even worse. Ghostty, thanks to GPU rendering, offers a visual smoothness that doesn’t strain your eyes. When Claude Code spits out 200 lines of output and you *scroll* through it, the difference between a terminal that flickers and one that doesn’t is like the difference between reading a book in steady light versus someone flipping the light switch on and off. **2. You can give it a huge-ass scrollback buffer.** With `scrollback-limit = 50000`, I get 50,000 lines of history per panel. Claude Code is verbose: it generates code, explains it, runs it, displays the output, and sometimes rambles on for hundreds of lines. In iTerm2 or Terminal.app, the default *scrollback* isn’t enough, and you lose context. With Ghostty, I can *scroll* back to the start of a session from two hours ago and find exactly what I need. There are additional nice features too—native *splits* with `Cmd+D`, Quake-style *Quick Terminal* with `Ctrl+\``—but those are just the icing. The cake is no flicker and no lost scrollback history. ## The anatomy of my window When I’m in “parallel mode”—multiple independent tasks at once—my Ghostty window looks like this: ┌──────────────────────────────────┬──────────────────────────────────┐ │ │ │ │ Claude Code (worktree A) │ Claude Code (worktree B) │ │ feature/new-validation │ chore/translations │ │ │ │ │ │ │ ├──────────────────────────────────┴──────────────────────────────────┤ │ │ │ Main repo — tests, builds, git log │ │ │ └─────────────────────────────────────────────────────────────────────┘
...