Introduction
kitty is the GPU-accelerated terminal by Kovid Goyal (also creator of Calibre). It strikes a unique balance: extremely fast rendering, a rich feature set (tabs, splits, mouse clickable hyperlinks, graphics), and a scriptable remote-control protocol that lets external programs drive the terminal.
With over 32,000 GitHub stars, kitty is the default in several modern dotfiles (especially among Neovim + tmux users). The kitty image protocol (also supported by Ghostty and ~5 other terminals) lets CLI tools display images inline at full fidelity.
What kitty Does
kitty uses OpenGL for rendering, supports true color + 24-bit, and ships with built-in tabs and splits ("windows"). It can be remote-controlled via an Unix socket to spawn tabs, send text, resize panes, etc. Kittens (small Python programs) extend the terminal with features like icat (image viewer), diff, hyperlinked_grep, unicode_input.
Architecture Overview
[kitty process]
OpenGL rendering (dedicated thread)
|
+----+----+
| |
Tabs Remote control socket
| |
Splits [Kittens: icat, diff, ssh, unicode_input, ...]
|
[Graphics Protocol]
base64 PNG -> inline images
used by: icat, mpv, ranger/yazi, timg, fzf-preview, w3m-imgSelf-Hosting & Configuration
# Remote control + session restore
allow_remote_control yes
listen_on unix:/tmp/kitty
enabled_layouts fat, tall, grid, stack
# Clickable hyperlinks in terminal output
allow_hyperlinks yes
scrollback_lines 10000
# SSH-aware — propagate terminfo and themes to remote
map cmd+shift+s ssh user@host# Remote control examples
kitty @ new-window --title "logs" tail -f app.log
kitty @ send-text --match title:logs "q"
kitty @ set-colors --all background=#000000
# Display image inline
kitty +kitten icat cat.png
# Compare files with syntax highlighting
kitty +kitten diff file1 file2Key Features
- GPU rendering — OpenGL-backed, very fast
- Tabs + Splits — built-in multiplexing, no tmux needed
- Graphics protocol — inline image rendering used across CLI ecosystem
- Remote control — script the terminal from outside
- Kittens — Python plugins for diff, icat, ssh, unicode_input, etc.
- SSH kitten — propagates terminfo/theme/env to remote hosts
- Ligature & emoji — first-class fonts support
- Cross-platform — macOS, Linux (Windows via WSL)
Comparison with Similar Tools
| Feature | kitty | Alacritty | WezTerm | Ghostty | iTerm2 |
|---|---|---|---|---|---|
| Tabs/Splits | Yes | No | Yes | Yes | Yes |
| Image protocol | Yes (kitty) | No | Yes (kitty + sixel) | Yes (kitty) | Yes (iTerm proto + sixel) |
| GPU | OpenGL | OpenGL | Metal/OpenGL | Metal/OpenGL | Partial |
| Remote control | Yes | No | Yes | Partial | AppleScript |
| Config language | kitty.conf | TOML | Lua | ghostty.conf | GUI |
| Best For | Feature-rich hacker terminal | Pure speed | Scriptable | Modern macOS | Mac GUI users |
FAQ
Q: kitty vs WezTerm? A: Both are feature-rich. WezTerm uses Lua for config + scripting (more power, more complexity). kitty has kittens (Python) and remote control via socket. Pick based on scripting style preference.
Q: Is the image protocol worth it? A: Huge upgrade for CLI file managers (yazi/ranger), media tools (mpv), and previewing images inline. If you live in the terminal, once you have it you don't go back.
Q: Does it work over SSH? A: Yes. The ssh kitten propagates kitty's terminfo and graphics protocol, so icat and other features work on remote machines.
Q: Windows support? A: Not native. Use WSL2 and run kitty inside Linux. For native Windows, WezTerm or Windows Terminal are better options.
Sources
- GitHub: https://github.com/kovidgoyal/kitty
- Website: https://sw.kovidgoyal.net/kitty
- License: GPL-3.0