Skip to content

What's the Best Terminal Setup for Claude Code? Ghostty + tmux Configuration Guide

I ran into a problem with Claude Code. When multiple agents run in parallel, I need to see all their outputs at once. Traditional terminals lag with multiple panes, and the web interface can’t show concurrent sessions side by side.

I tried running three Claude Code sessions in iTerm2. After opening 6 panes, the terminal slowed down. Font rendering got blurry. Switching between sessions meant losing context on what each agent was doing.

The solution I found: Ghostty + tmux. Ghostty handles GPU-accelerated rendering for multiple panes without lag. tmux lets me run parallel Claude sessions with full visibility into each agent’s output.

The Setup I Use

I split my terminal vertically. Left panes run Claude Code sessions. Right panes run Neovim for editing. Claude does its work while I review and edit code in real-time.

┌─────────────────────────────────────────────────────────┐
│ Ghostty Terminal │
├──────────────────────┬──────────────────────────────────┤
│ │ │
│ Claude Code │ Neovim │
│ Session 1 │ (editing code) │
│ │ │
├──────────────────────┼──────────────────────────────────┤
│ │ │
│ Claude Code │ Claude Code │
│ Session 2 │ Session 3 │
│ │ │
└──────────────────────┴──────────────────────────────────┘

Ghostty provides fast, native GPU rendering. Splits are instant. Font rendering stays crisp. I can have 4-6 panes open without the lag I get in other terminals.

Why CLI Over Web Interface

The web interface limits what I can do with Claude Code. CLI gives me full access to skills, commands, and subagents. I can pipe output and script workflows.

Running multiple agents in parallel—each in its own pane—lets me see output directly. No switching tabs. No wondering what each agent is doing.

I organize my tmux sessions like this:

  • 3 windows for Claude Code sessions
  • 1 window for git operations
  • 1 window for running commands
  • 1 window for kanban tui
  • 1 window for a bash prompt

That’s 7 tmux windows for a complete workflow.

Installing Ghostty

On macOS, I installed Ghostty with Homebrew:

Terminal
brew install --cask ghostty

The key configuration options for Claude Code work:

~/.config/ghostty/config
font-size = 14
font-family = "JetBrains Mono"
theme = "tokyonight"
background-opacity = 0.95
window-padding-x = 10
window-padding-y = 10

This setup gives me readable fonts and enough transparency to see what’s behind the terminal when needed.

Setting Up tmux for Claude Code

I create a dedicated tmux session for Claude work:

Terminal
# Start a new tmux session
tmux new-session -d -s claude-work
# Create windows for different purposes
tmux rename-window -t claude-work:0 'claude-main'
tmux new-window -t claude-work -n 'claude-agent2'
tmux new-window -t claude-work -n 'git'
tmux new-window -t claude-work -n 'commands'
tmux new-window -t claude-work -n 'kanban'
# Split main Claude window vertically
tmux split-window -h -t claude-work:claude-main
# Left pane: Claude Code
tmux send-keys -t claude-work:claude-main.0 'claude' C-m
# Right pane: Neovim
tmux send-keys -t claude-work:claude-main.1 'nvim .' C-m
# Attach to the session
tmux attach-session -t claude-work

This creates a layout where I can run Claude on the left and edit with Neovim on the right.

Adding Completion Hooks

I don’t want to sit watching Claude work. I set up hooks to notify me when something completes.

~/.claude/settings.json
{
"hooks": {
"Stop": [
{
"command": "say 'Claude has finished working'",
"timeout": 5000
}
]
}
}

On macOS, the say command speaks a notification. I can step away and come back when Claude finishes.

Common Mistakes I Avoided

I made these mistakes before finding this setup:

Using iTerm2 with many panes. After 4-5 panes, scrolling got slow. Claude’s verbose output made it worse. Ghostty’s GPU rendering fixed this completely.

Running Claude sessions sequentially. I used to wait for one agent to finish before starting another. Now I run them in parallel and watch all outputs simultaneously.

Missing notifications. I wasted time checking if Claude finished. The hooks now alert me automatically.

No organization in tmux. I used random pane layouts. Now I group windows by function—Claude sessions, git, commands, tasks. Much easier to navigate.

Ignoring CLI for web interface. The web interface works for simple tasks. But CLI gives me skills, subagent orchestration, and piping. I switched to CLI for serious work.

Performance at Scale

The real test came when I had Claude working on a large refactor. Multiple files, multiple agents, lots of output.

Ghostty handled it without any slowdown. tmux kept everything organized. I could see each agent’s progress in its pane while editing the generated code in Neovim.

This setup turned Claude Code from a tool I used occasionally into my primary development environment.

Summary

In this post, I showed how to set up Ghostty and tmux for Claude Code. The key point is that GPU-accelerated rendering and terminal multiplexing let you run parallel Claude sessions with full visibility into each agent’s output.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments