04-tooling

ghostty claude code setup

Sat Feb 14 2026 19:00:00 GMT-0500 (Eastern Standard Time) ·tooling-guide ·source: x.com/@dani_avila7 ·by Daniel San
ghosttyclaude-codeterminaltmuxkeybindingssetup

My Ghostty Setup for Claude Code with SAND Keybindings

Source: @dani_avila7 (Daniel San, Head of AI) — 2.1K likes, 5.8K bookmarks, 1M impressions. Part 1 of 3 (Lazygit monitoring and parallel agents with worktrees to follow).

Config gist: https://gist.github.com/davila7/5b07f55a6e65a06c121da9702d10c2e2


Why Ghostty Instead of the VS Code Terminal

The VS Code terminal crashes on long Claude Code sessions. It’s not built for it. Ghostty is a dedicated GPU-accelerated terminal built by Mitchell Hashimoto (HashiCorp co-founder) — it handles sustained, context-heavy sessions without degrading.

For Claude Code work specifically, you need a terminal that doesn’t flinch when you have three instances running and a diff open. VS Code’s embedded terminal is a liability for that use case.


The SAND Keybinding System

SAND is a mnemonic for the four operations you do constantly when managing multiple terminal panes.

S — Split

Create new panes within the current window.

ActionGhostty
Split rightCmd+D
Split downCmd+Shift+D

A — Across

Move across tabs (windows within a session).

ActionGhostty
New tabCmd+T
Previous tabCmd+Shift+Left
Next tabCmd+Shift+Right

N — Navigate

Jump between open panes without touching the mouse.

ActionGhostty
Move to pane (directional)Cmd+Alt+Arrow
Equalize pane sizesCmd+Shift+E
Zoom current paneCmd+Shift+F

D — Destroy

Close what you no longer need.

ActionGhostty
Close current pane or tabCmd+W

Workflow Layout

The default layout for a Claude Code session:

This setup scales naturally to 2–3 parallel Claude Code instances running on separate git worktrees. Each worktree gets its own Claude + Lazygit pair; Yazi stays shared at the bottom.


SAND in tmux (for the Mac Mini)

We run tmux on the Mac Mini for the always-on channels agent (see 04-tooling/2026-03-29-infrastructure-decisions). The SAND operations map cleanly to tmux — if you’re working remotely into the Mac Mini or want consistent muscle memory between Ghostty and tmux, here’s the translation:

SANDGhosttytmux defaulttmux command
Split rightCmd+DCtrl-b %split-window -h
Split downCmd+Shift+DCtrl-b "split-window -v
New windowCmd+TCtrl-b cnew-window
Prev windowCmd+Shift+LeftCtrl-b pprevious-window
Next windowCmd+Shift+RightCtrl-b nnext-window
Navigate paneCmd+Alt+ArrowCtrl-b Arrowselect-pane -U/-D/-L/-R
Close paneCmd+WCtrl-b xkill-pane

tmux doesn’t have direct equivalents for equalize (Ctrl-b = spreads panes evenly) or zoom (Ctrl-b z toggles fullscreen on the current pane) — close enough.

If you spend meaningful time in the Mac Mini via SSH, consider adding SAND-aligned key bindings to ~/.tmux.conf so the muscle memory transfers.


New Computer Setup Checklist

Use this when configuring a fresh Mac for Claude Code work. Applies to the Mac Mini, a new laptop, or any machine that needs to run the agent reliably.

  1. Install Ghostty — or configure tmux with SAND-like bindings if it’s a headless/remote machine. Clone the config gist above.
  2. Install Claude Codenpm install -g @anthropic-ai/claude-code
  3. Install lazygit and yazibrew install lazygit yazi
  4. Set up 1Password CLI — install op, authenticate with service account token. All MCP secrets pull from here at runtime, never from .env files. See 02-sops/mcp-server-setup.
  5. Configure MCP servers — follow the MCP Server Setup SOP. Each server that needs credentials gets a start.sh wrapper that calls op at runtime.
  6. Verify tmux (if headless) — confirm session persistence and LaunchAgent plist if setting up an always-on agent. See 04-tooling/2026-03-29-infrastructure-decisions for the exact Mac Mini configuration.

Connections