By the end of this walkthrough you’ll have Ghostty 1.3.1 installed, a minimal config that actually reflects your taste, and – critically – no more xterm-ghostty errors when you SSH into remote boxes. That last part is the one every tutorial glosses over, and it’s the reason most people uninstall Ghostty within a week.
The reason this piece exists right now: a new long-form interview with Mitchell Hashimoto hit the top of Hacker News. Read it – but it won’t tell you how to actually use the thing. So we’ll work backwards from a working terminal, mixing in what Hashimoto revealed about where Ghostty and Zig are headed.
What Ghostty actually is (and what the interview clarified)
Ghostty is a terminal emulator written in Zig by Mitchell Hashimoto – yes, the HashiCorp co-founder. It uses OpenGL on Linux and Metal on macOS, with a multi-threaded architecture (dedicated read, write, and render threads per terminal) and a SIMD-optimized parser. Fast because it treats a terminal like a real GPU-driven app, not a text widget.
What the new interview added: Hashimoto originally started it because after 15 years building CLIs, he didn’t understand how a terminal emulator actually worked – he wanted a project touching GPU, desktop, and Zig at once. He also dropped a detail about the future: he used AI to migrate large chunks of Ghostty across Zig language changes, with about 90% of the diffs done automatically while he was in the kitchen. Keep that in mind when you hear people call Zig “too risky for a big project.”
Installing Ghostty in under 5 minutes
On macOS, one line via Homebrew. The current cask is version 1.3.1, released March 13, 2026, and requires macOS 13 or later:
brew install --cask ghostty
On Linux, it depends on your distro – Arch has it in the AUR, Fedora has a COPR, Nix has a flake. Ubuntu users have historically had to build from source, though community packages exist now. The official download page lists current options.
Launch it. That’s the setup. Ghostty is designed to work out of the box with no configuration – sensible defaults, JetBrains Mono embedded as the default font. If you close the window and never touch a config file, you already have a faster terminal than Terminal.app or iTerm.
The one config change everyone should make first
Here’s the part tutorials skip. If you SSH into any remote server – a Raspberry Pi, an EC2 instance, a colleague’s dev box – Ghostty will break things. You’ll see errors like missing or unsuitable terminal: xterm-ghostty, Error opening terminal: xterm-ghostty, or WARNING: terminal is not fully functional. Backspace stops working. clear fails. tmux complains.
Why? Ghostty sets TERM=xterm-ghostty. The xterm- prefix exists because too many apps string-search for “xterm” to detect capabilities – during private beta they tried pure ghostty and too much broke. The remote host doesn’t have this terminfo entry, so it panics.
The fix is one line. Open your config at ~/.config/ghostty/config.ghostty and add:
shell-integration-features = ssh-env,ssh-terminfo
Fully quit and restart Ghostty. Per the official terminfo docs, the first time you SSH to a host, Ghostty installs its terminfo entry on the remote automatically. Successful installs get cached per user@host, so it’s a one-time cost per machine.
Stuck on a remote box right now? Reconnect with
TERM=xterm-256color ssh user@hostas a per-session escape hatch – no restart required.
Config aesthetics, then. SSH is handled.
Ghostty uses a flat key = value syntax; every config key is also a valid CLI flag. A working starting point:
font-family = JetBrains Mono
font-size = 14
theme = catppuccin-mocha
background-opacity = 0.95
shell-integration-features = ssh-env,ssh-terminfo
keybind = cmd+shift+enter=toggle_fullscreen
The full option list with defaults is in the official config docs.
Common pitfalls people hit
A few traps worth knowing before you commit:
- The ncurses trap. Newer ncurses versions do ship a Ghostty terminfo entry – but under the name
ghostty, notxterm-ghostty. So even an up-to-date server can still throw the error unless the entry is installed under the exact name Ghostty requests. Don’t assume a fresh Ubuntu 24.04 will “just work.” - Windows is not supported. Ghostty currently runs on macOS and Linux only. Windows support is on the roadmap; WSL2 works in the meantime, with GPU passthrough caveats. No dated commitment as of publishing.
- The 1.0-through-1.2 memory leak. Ghostty 1.3.0, released March 9, 2026, fixed a memory leak that had existed since 1.0. If you tried Ghostty a year ago, left a session open for days, and thought it felt bloated – that was real. Upgrade to 1.3.1.
- Don’t pin to 1.3.0. Version 1.3.1 (March 13, 2026) is a patch release that addressed regressions introduced in 1.3.0. If you installed recently and hit odd behavior, update first before debugging config.
How I’d actually choose between Ghostty, Kitty, and Alacritty
I’ve gone back and forth on this. Here’s the honest breakdown:
| Terminal | Pick it if | Skip it if |
|---|---|---|
| Ghostty | You want native macOS/Linux feel, GPU speed, and near-zero setup | You need Windows, or you want obscure protocol extensions Kitty pioneered |
| Kitty | You need the Kitty graphics protocol for inline images, remote control, or SSH kitten features | You dislike Python-heavy configs and cross-platform-but-not-native UIs |
| Alacritty | You already live in tmux/zellij and want the leanest possible renderer | You want tabs, splits, or a settings UI without a multiplexer |
Speed rarely decides this. Per the GitHub README, Ghostty and Alacritty are usually within a few percentage points of each other on benchmarks, and both are around 100x faster than Terminal.app and iTerm. At that scale, the differences you’ll actually feel are UX ones: how splits behave, whether tabs feel native, how the settings surface works.
The interesting angle from the new interview: Hashimoto said Zig keeps improving compilation tooling – they’ve even removed language features to make compilation faster, and he expects Zig 1.0 is still years away. That’s an unusual thing to prioritize in a terminal project. It hints at where Ghostty’s competitive edge will come from: fast iteration by contributors, not just fast pixels.
What’s next: libghostty and an open question for your IDE
Here’s something the features-list articles miss entirely. Ghostty’s terminal core is being extracted as a C-compatible library – libghostty, cross-platform and WebAssembly-capable. Code editors, AI coding agents, remote-dev tools – any of them could embed a full Ghostty-grade terminal rather than the stripped-down text widget most ship today. Whether any major IDE actually picks it up is an open question, but the architecture makes it possible in a way it wasn’t before.
Try Ghostty for a week. If SSH bites you, add the one-line shell-integration fix above. If you like it, skim the 1.3.0 release notes – the scrollback search (Cmd+F on macOS, Ctrl+Shift+F on GTK) alone will change how you debug.
FAQ
Is Ghostty free?
Yes, fully open source, no paid tier.
Can I use Ghostty on Windows through WSL2?
Sort of. You can run the Ghostty binary inside a WSL2 Linux environment, but you’ll hit GPU passthrough caveats – the native rendering path that makes Ghostty feel snappy assumes direct GPU access. Most people running Ghostty from Windows today are doing so as an experiment, not a daily driver. If Windows is your primary OS, wait for the official port that’s on the roadmap.
Does Ghostty replace tmux?
No, and it’s not trying to. Ghostty gives you splits and tabs at the emulator level, which covers a lot of what casual tmux users need. But tmux does something Ghostty can’t: it persists sessions across disconnects, which is essential for SSH work on flaky networks. A common setup is Ghostty locally, tmux on the remote side – you get native splits at home and session persistence on the server.