Why rbterm?

How rbterm compares to PuTTY, iTerm2, Alacritty, and kitty — and where it makes a different set of trade-offs.

Feature Comparison

Feature rbterm PuTTY iTerm2 Alacritty kitty
Cross-platform binarymacOS / Linux / WinWindows onlymacOS onlyAll threemacOS / Linux
GPU-acceleratedraylib / OpenGLGDIMetal (macOS)OpenGLOpenGL
Built-in SSHlibssh (key + agent)Built-inNeeds ssh CLINeeds ssh CLINeeds ssh CLI
SFTP upload / downloadBuilt-in modalSeparate PSFTPNoNoNo
SSH key managerGenerate + install + deletePuTTYgen (separate)NoNoNo
SSH port forwarding (in-app)-L / -R / -D SOCKS5Manual -L/-RVia ssh CLIVia ssh CLIVia ssh CLI
Phone-paired ssh-agentYes (mobile app)NoNoNoNo
TabsUp to 16NoUnlimitedNo (use tmux)Unlimited
Split panesVertical + horizontalNoYesNoYes
Themes baked in252 palettesManual RGB~10 presetsTOML configconf file
Fonts baked in37 monospace fontsSystem fontsSystem fontsSystem fontsSystem fonts
Sixel imagesNativeNoYesNoNo (kitty protocol)
Kitty image protocolNativeNoNoNoNative
Session recordingGIF / WebP / MP4 / castLog to fileReplay (proprietary)NoNo
System-info HUDPer-pane overlayNoNoNoNo
OSC 8 hyperlinksCmd+clickNoYesRegex URLsYes
OSC 133 prompt navJump + gutter badgesNoYesNoPartial
Scrollback searchLive substringNoRegexVia tmux/screenRegex
Startup tab configSettings Launch tabNoProfiles + arrangementsNostartup_session
Quake-style global hotkeyCmd+CapsLockNoHotkey windowNoNo
Per-host cursor colorApp-wide + per-hostManual configPer-profileNoNo
Ligature shapingHarfBuzz + 7 fontsNoYesYesYes
Cinema pane effects20 presets (CRT, VHS…)NoNoNoNo
Single binary, zero deps~14 MB~5 MB~180 MB .app~8 MBPython runtime
Round-trip latency0.016 ms
Idle CPU~0.1%
Electron / web techNoneNoneNoneNoneNone
LanguageC99CObj-CRustC + Python

Measured, not marketing

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.

vs PuTTY

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.

  • No tabs, no panes. Every host is a separate window. rbterm gives you 16 tabs with vertical + horizontal splits, each with its own PTY and theme.
  • SSH + SFTP in one window. PuTTY needs a separate PSFTP program. rbterm has upload and download modals built into every SSH pane — pick a file, watch the progress toast.
  • Theming is manual. PuTTY makes you set 22 RGB values in a dialog. rbterm ships 252 themes — click one, it applies to the active tab instantly.
  • No images. Sixel, kitty graphics, inline images — PuTTY can't render any of them. rbterm handles both protocols natively.
  • Windows-only. If you switch between macOS and Linux, PuTTY isn't there. rbterm builds on all three from the same source.

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.

vs iTerm2

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:

  • Cross-platform. iTerm2 is macOS-only. If you also work on Linux or Windows, rbterm is the same binary everywhere — same keybindings, same themes, same config.
  • Everything is baked in. iTerm2 needs you to install fonts, download color schemes, configure profiles. rbterm ships 252 themes and 37 fonts inside the binary — scp it to a bare server and it works.
  • Built-in SSH with SFTP. iTerm2 shells out to ssh. rbterm connects via libssh directly, with per-host theme/font/HUD overrides and integrated file transfers.
  • Tiny footprint. iTerm2 is a ~180 MB macOS app bundle. rbterm is a ~14 MB self-contained binary.
  • Session recording to GIF/WebP/MP4. iTerm2 can replay sessions in its own format. rbterm records to standard formats you can share anywhere.
  • System-info HUD. Hostname, IP, CPU load, memory, disk — overlaid per-pane, including for SSH sessions (polled over the connection). iTerm2 has nothing equivalent built in.

iTerm2 wins on ecosystem depth (triggers, coprocesses, Applescript). rbterm wins on portability, self-containment, and SSH integration.

vs Alacritty

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."

  • Tabs, panes, search — no tmux required. Alacritty has no tabs, no splits, and no scrollback search. You need tmux or screen for all of that. rbterm has it built in.
  • Built-in SSH. Alacritty doesn't even know what SSH is. rbterm connects to hosts directly, manages saved hosts, and transfers files over SFTP.
  • Inline images. Alacritty deliberately doesn't support image protocols. rbterm renders sixel and kitty images natively.
  • 252 themes, 37 fonts, zero config. Alacritty requires a TOML config file and font installation. rbterm works out of the box with everything embedded.
  • Session recording. Alacritty can't record. rbterm captures to GIF, WebP, MP4, WebM, APNG, or asciicast.
  • Startup tab configuration. Alacritty opens one window. rbterm's Settings Launch tab lets you define which local and SSH tabs open automatically when you start.

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.

vs kitty

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:

  • C99 vs C + Python. kitty's core is C, but its UI and extension system run on Python. rbterm is pure C99 — no runtime interpreter, no garbage collector, no Python dependency chain.
  • Built-in SSH with SFTP. kitty has kitten ssh for shell integration, but it still shells out to ssh. rbterm connects via libssh natively and has built-in upload/download modals.
  • Self-contained binary. kitty installs Python packages alongside the binary. rbterm is one ~14 MB executable — scp it anywhere and run.
  • Both image protocols. kitty only supports its own image protocol. rbterm supports both sixel and the kitty protocol, so tools targeting either standard work.
  • 252 themes + 37 fonts embedded. kitty needs you to install themes via kitten themes and fonts via your OS. rbterm ships them all inside the binary.
  • System-info HUD. rbterm overlays hostname, IP, load, mem, disk per-pane — including over SSH. kitty has no equivalent.
  • Native recording. rbterm records panes to GIF/WebP/MP4 with built-in encoders. kitty doesn't record.
  • Windows support. kitty doesn't run on Windows. rbterm does (ConPTY backend).

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.

vs WezTerm

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: GUI vs Lua. WezTerm is configured by writing Lua. rbterm has a Settings modal and an ~/.config/rbterm/config.ini — no programming language to learn, no callbacks to wire up.
  • Built-in SSH UI, not just a CLI. WezTerm has SSH and multiplexing domains, but driving them is config-and-command work. rbterm gives you a connect form, a key manager, SFTP modals, port forwarding, and per-host overrides in the UI itself.
  • Cinema effects. rbterm ships 20 per-pane visual presets (CRT, VHS, and more). WezTerm focuses on faithful, fast rendering and leaves the eye-candy out.
  • Footprint. rbterm is a ~14 MB single binary with everything embedded. WezTerm's install is considerably larger.

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.

vs Ghostty

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:

  • Windows. Ghostty doesn't ship a Windows build. rbterm has a real ConPTY backend and runs as a single .exe on Windows 10 1809+.
  • Built-in SSH + SFTP. Ghostty is a terminal; SSH is whatever you run inside it. rbterm connects via libssh directly, with a key manager, file transfers, tunneling, and a phone-paired agent.
  • Recording. rbterm records panes to GIF / WebP / MP4 / asciicast with built-in encoders. Ghostty leaves that to external tools.
  • System-info HUD. Per-pane hostname, IP, load, mem, disk — including over SSH. Ghostty has no equivalent.

Ghostty wins on native polish and a thriving community. rbterm differentiates on Windows support and the batteries-included SSH/SFTP/recording/HUD stack.

vs Windows Terminal

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:

  • One file, no Store. Windows Terminal is an MSIX app delivered through the Microsoft Store / App Installer. rbterm is a single ~14 MB .exe you can drop on a machine and run — same binary concept as on macOS and Linux.
  • Built-in SSH. Windows Terminal launches whatever shell or ssh you point a profile at. rbterm has SSH, SFTP, a key manager, port forwarding, and per-host layouts built into the app.
  • Same everywhere. Windows Terminal is Windows-only. rbterm gives you the same tabs, themes, and keybindings on macOS and Linux too.
  • Images + recording + HUD. Sixel and kitty graphics, session recording, and a per-pane system-info overlay — all built in.

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.

vs Warp

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:

  • Open vs closed. Warp is closed-source. rbterm is MIT-licensed C99 you can read, fork, and build yourself.
  • No account, no login. Warp gates features behind sign-in and cloud services. rbterm needs no account and works fully offline.
  • No telemetry. Warp's AI features send data to the cloud. rbterm sends nothing — no analytics, no phone-home.
  • Cross-platform single binary. rbterm runs on macOS, Linux, and Windows from one ~14 MB executable, with built-in SSH/SFTP and recording.

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.

vs MobaXterm

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:

  • The shared ground. rbterm also gives you tunneling (-L / -R / -D SOCKS5), SFTP up/download, a key manager, and saved per-host sessions with layouts — the same workstation toolkit.
  • Cross-platform, not Windows-only. MobaXterm is a Windows application. rbterm is the same binary on macOS, Linux, and Windows.
  • Tiny, not bundled. MobaXterm ships a large bundle of integrated tools (Cygwin utilities, X server, plugins). rbterm is a ~14 MB single binary with no installer sprawl.
  • Phone-paired agent. rbterm pairs with a mobile app holding an on-device ed25519 key for agent auth — MobaXterm has nothing like it.

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.

The rbterm Pitch

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.