How rbterm compares to PuTTY, iTerm2, Alacritty, and kitty — and where it makes a different set of trade-offs.
| Feature | rbterm | PuTTY | iTerm2 | Alacritty | kitty |
|---|---|---|---|---|---|
| Cross-platform binary | macOS / Linux / Win | Windows only | macOS only | All three | macOS / Linux |
| GPU-accelerated | raylib / OpenGL | GDI | Metal (macOS) | OpenGL | OpenGL |
| Built-in SSH | libssh (key + agent) | Built-in | Needs ssh CLI | Needs ssh CLI | Needs ssh CLI |
| SFTP upload / download | Built-in modal | Separate PSFTP | No | No | No |
| SSH key manager | Generate + install + delete | PuTTYgen (separate) | No | No | No |
| SSH port forwarding (in-app) | -L / -R / -D SOCKS5 | Manual -L/-R | Via ssh CLI | Via ssh CLI | Via ssh CLI |
| Phone-paired ssh-agent | Yes (mobile app) | No | No | No | No |
| Tabs | Up to 16 | No | Unlimited | No (use tmux) | Unlimited |
| Split panes | Vertical + horizontal | No | Yes | No | Yes |
| Themes baked in | 252 palettes | Manual RGB | ~10 presets | TOML config | conf file |
| Fonts baked in | 37 monospace fonts | System fonts | System fonts | System fonts | System fonts |
| Sixel images | Native | No | Yes | No | No (kitty protocol) |
| Kitty image protocol | Native | No | No | No | Native |
| Session recording | GIF / WebP / MP4 / cast | Log to file | Replay (proprietary) | No | No |
| System-info HUD | Per-pane overlay | No | No | No | No |
| OSC 8 hyperlinks | Cmd+click | No | Yes | Regex URLs | Yes |
| OSC 133 prompt nav | Jump + gutter badges | No | Yes | No | Partial |
| Scrollback search | Live substring | No | Regex | Via tmux/screen | Regex |
| Startup tab config | Settings Launch tab | No | Profiles + arrangements | No | startup_session |
| Quake-style global hotkey | Cmd+CapsLock | No | Hotkey window | No | No |
| Per-host cursor color | App-wide + per-host | Manual config | Per-profile | No | No |
| Ligature shaping | HarfBuzz + 7 fonts | No | Yes | Yes | Yes |
| Cinema pane effects | 20 presets (CRT, VHS…) | No | No | No | No |
| Single binary, zero deps | ~14 MB | ~5 MB | ~180 MB .app | ~8 MB | Python runtime |
| Round-trip latency | 0.016 ms | — | — | — | — |
| Idle CPU | ~0.1% | — | — | — | — |
| Electron / web tech | None | None | None | None | None |
| Language | C99 | C | Obj-C | Rust | C + Python |
0.016 ms median round-trip latency.
Snappiness is easy to claim and hard to prove, so rbterm ships the proof. On a tight loop of CSI 6n cursor-position queries — write the query, parse the reply, read the answer — rbterm clocks a 0.016 ms median round-trip. That's roughly ~200× faster than kitty (3.486 ms) and ~1300× faster than iTerm2 (21.610 ms) on the same machine.
It's not a cherry-picked demo. Run it yourself: tools/bench-here.sh auto-detects the host terminal and writes the numbers to a file you can diff against any other terminal. Combined with a ~0.1% idle CPU floor on macOS — even with SSH panes and the HUD active — rbterm stays out of your way whether it's working or waiting.
PuTTY is the terminal you learned on. It works, it's small, and it's been rock-solid since 1999. But it was designed for a world where you SSH into one host at a time and scp files separately.
PuTTY is great if all you need is a single SSH session. Once you want tabs, file transfers, and a modern feature set without installing three separate tools, rbterm replaces the whole stack.
iTerm2 is the gold standard on macOS. It's mature, polished, and endlessly configurable. If you live exclusively on a Mac, it's hard to beat. rbterm makes different trade-offs:
ssh. rbterm connects via libssh directly, with per-host theme/font/HUD overrides and integrated file transfers.iTerm2 wins on ecosystem depth (triggers, coprocesses, Applescript). rbterm wins on portability, self-containment, and SSH integration.
Alacritty's philosophy is "do one thing well" — be a fast GPU terminal and delegate everything else to tmux. That's a valid design. rbterm's philosophy is "one binary, batteries included."
Alacritty is for people who already have tmux muscle memory and want the thinnest possible terminal layer. rbterm is for people who want a single app that replaces terminal + multiplexer + file transfer + system monitor.
kitty is the closest competitor in feature set. It has tabs, splits, image rendering, and a scripting layer. The differences are in architecture and philosophy:
kitten ssh for shell integration, but it still shells out to ssh. rbterm connects via libssh natively and has built-in upload/download modals.kitten themes and fonts via your OS. rbterm ships them all inside the binary.kitty's Python scripting layer makes it deeply extensible if you invest the time. rbterm trades that extensibility for zero-dependency portability and a more integrated SSH workflow.
WezTerm is the heavyweight of the modern crop — Rust, wgpu rendering, a Lua config language, and built-in multiplexing that survives disconnects. If you want a programmable terminal and a multiplexer in one, it's excellent. rbterm aims somewhere different: a single binary you don't have to script.
~/.config/rbterm/config.ini — no programming language to learn, no callbacks to wire up.WezTerm wins on programmability and built-in multiplexing depth. rbterm wins on a smaller binary, a click-not-code config, and an SSH workflow that lives entirely in the GUI.
Ghostty is the trendy newcomer — a native, fast, single-binary terminal with great defaults and a strong focus on platform-native feel on macOS and Linux. It's genuinely good. The differences are about scope and reach:
.exe on Windows 10 1809+.Ghostty wins on native polish and a thriving community. rbterm differentiates on Windows support and the batteries-included SSH/SFTP/recording/HUD stack.
Windows Terminal is Microsoft's modern default — tabs, panes, GPU text rendering, and tight integration with PowerShell, WSL, and cmd. On Windows it's the obvious starting point. rbterm offers a leaner, more portable alternative:
.exe you can drop on a machine and run — same binary concept as on macOS and Linux.ssh you point a profile at. rbterm has SSH, SFTP, a key manager, port forwarding, and per-host layouts built into the app.Windows Terminal wins on first-party WSL/PowerShell integration and being preinstalled. rbterm wins on a true single-binary build, cross-platform parity, and an SSH client you don't have to assemble from profiles.
Warp is the slick, AI-forward terminal — blocks, command suggestions, and cloud-backed features wrapped in a polished UI. If those workflows click for you, it's compelling. rbterm sits at the opposite end of the trust spectrum:
Warp wins if you want AI assistance and command blocks baked into the terminal. rbterm wins if you want an offline, auditable, no-account tool that respects your data.
MobaXterm is the closest peer to rbterm's "SSH workstation" idea — tabbed SSH, an embedded SFTP browser, X11 forwarding, tunnels, and a session manager, all on Windows. If your whole life is remote Windows admin, it's a powerhouse. rbterm covers the same core, smaller and everywhere:
MobaXterm wins on its built-in X11 server and the breadth of bundled Unix tools on Windows. rbterm wins on portability, a tiny footprint, and not being a Windows-only toolbox.
One binary. Every platform. Batteries included.
rbterm is what you get when you stop asking "which combination of terminal + multiplexer + SSH client + file transfer tool + theme manager + font installer should I use?" and just ship all of it in ~14 MB of C99. It won't replace a decade of tmux muscle memory overnight, and it doesn't try to be an extensible platform like kitty. What it does is give you tabs, splits, a 1,000,000-line scrollback per pane, a full SSH client with port forwarding (-L / -R / -D SOCKS5) and a phone-paired ssh-agent, SFTP, images, recording, 252 themes, 37 fonts, and a system-info HUD in a single executable you can scp to any machine and run.
And it's fast where it counts: 0.016 ms median round-trip latency — roughly 200× quicker than kitty and 1300× quicker than iTerm2 on the same CSI 6n benchmark — while idling at about 0.1% CPU on macOS even with SSH panes and the HUD running. Measured, reproducible, MIT-licensed, offline, and with no account or telemetry.