Four projects, free forever.
The Free plan includes every feature, so you only need Pro after you outgrow four projects.
Compare Ghostty on Mac and Linux with iTerm2 on Mac.
Official product sites
Ghostty runs on macOS and Linux and uses a text configuration file. iTerm2 runs on macOS and has profiles, triggers, scripting, and tmux control-mode integration. Both are free and open source.
Choose Ghostty if you want the same terminal configuration on Mac and Linux. Choose iTerm2 if you rely on its profiles or automation. You can use Solo alongside either terminal to manage dev servers, workers, and coding agents.
Start with your operating systems and the terminal features you use every day.
Ghostty fits best when you want platform-native UI, GPU acceleration, shell integration, and text configuration on both macOS and Linux.
iTerm2 fits best when you want hotkey windows, triggers, profiles, shell integration, scripting, and tmux control mode on Mac.
Run dev servers and workers with their own output, resource statistics, and restart settings. Launch installed coding agents in the same project.
| Feature | Ghostty | iTerm2 | Solo |
|---|---|---|---|
| Primary purpose | Fast, cross-platform terminal emulator with native UI | Feature-rich macOS terminal emulator | Local process dashboard for agents and project commands |
| Replaces your terminal | — | ||
| GPU-accelerated rendering | Yes — Metal on macOS, OpenGL on Linux | Yes — Metal renderer | N/A |
| Implementation language | Zig (core) + Swift/AppKit (macOS GUI) | Objective-C / Swift | Tauri + Rust + React |
| Shell integration | Auto-injects for bash, zsh, fish, elvish, Nushell — prompt marking, directory tracking, jump-to-prompt | Deep integration — command history, directory tracking, host tracking, remote file operations | Shell environment loading for correct PATH/toolchain |
| Hotkey/dropdown terminal | Quick Terminal (configurable size) | Hotkey window with dedicated profile | — |
| tmux integration | Standard tmux usage in terminal | Native — tmux sessions appear as iTerm2 tabs/panes without prefix keys | — |
| Scrollback search | Yes — Cmd+F (added in v1.3.0) | Yes — regex-capable Cmd+F with mouseless copy | Native terminal scrollback |
| Inline images | Yes — Kitty graphics protocol | Yes — imgcat and animated GIFs | — |
| Configuration | key=value text file; supported settings can reload at runtime | GUI settings, profiles, and JSON dynamic profiles | GUI + solo.yml for commands |
| Scripting API | AppleScript on macOS | Python API, AppleScript, and autolaunch scripts | MCP, local HTTP API, and Solo CLI |
| Triggers and automation | — | Yes — regex triggers, coprocesses, automatic profile switching | File-watch restarts, auto-restart, notifications |
| Session restore | Restores supported macOS window state, not running processes or terminal contents | Window arrangement and session restoration are available, subject to profile and system settings | Processes persist while app is running |
| Instant replay | — | Yes — step backward through terminal history | — |
| Paste history | — | Yes — all copied/pasted text stored and searchable | — |
| Local process dashboard | — | — | Yes — sidebar with CPU/memory stats per process |
| Restart after command exit | — | Profile option can restart the same command when a session ends; no rate-limited supervision policy | Automatic for command processes, with rate limiting |
| Process notifications | Command-finished notifications | Notification Center alerts for activity, bells, job completion, and trigger matches | Native desktop notifications, in-app toasts, and supported OSC sequences |
| Open source | Yes — MIT license | Yes — GPL-2.0-or-later | — |
| Price | Free | Free | Free (4 projects, 20 processes); Pro plan |
| Platform | macOS and Linux (no Windows yet) | macOS only | macOS and Windows |
Ghostty uses platform-native application shells on macOS and Linux around a Zig terminal core. Its key=value configuration file is easy to keep in dotfiles, and supported settings can reload while the app is running. The latest release reviewed is 1.3.1.
iTerm2 is macOS-only. Most settings live in GUI profiles, while dynamic profiles let teams or dotfile setups provide profile definitions as JSON. The latest stable release reviewed is 3.6.11.
Solo includes interactive terminals, but its main job is keeping local agents and project commands visible in one dashboard. Teams can share command definitions in solo.yml.
Ghostty provides automatic shell integration, prompt navigation, Kitty graphics and keyboard protocols, a quick terminal, key tables, scrollback search, and command-finished notifications. On macOS, AppleScript exposes application automation.
iTerm2 provides hotkey windows, regex triggers, profiles, instant replay, paste history, coprocesses, shell integration, and Notification Center alerts. Profiles may run a command and can restart that command when its session ends.
Solo supervises command processes separately from terminal sessions. Commands can restart after self-exit or watched-file changes, with rate limiting, CPU and memory views, and attention notifications.
Ghostty runs tmux as a normal terminal application. Its own automation options include key tables, the command palette, and AppleScript on macOS.
Running tmux with control mode (`tmux -CC`) maps tmux windows and panes into native iTerm2 windows and split panes. iTerm2 also provides Python and AppleScript APIs, dynamic profiles, captured output, and smart selection.
Solo exposes process controls through MCP, a local HTTP API, and the Solo CLI. The solo.yml file shares command definitions with your team. Solo does not integrate with tmux.
If Ghostty is your terminal, Solo can own background services that need restart policies, resource views, notifications, and version-controlled startup definitions.
iTerm2 can restart a profile command and react to output with triggers. Solo adds a project-level dashboard, rate-limited command restart, file-watch restart, resource views, and solo.yml shared commands.
Solo can run alongside either terminal as a dedicated workspace for background project commands.
Open the same repository in both terminals. Use your usual shell configuration so the comparison includes your prompt, plugins, and shortcuts.
Add the settings below to your Ghostty configuration. In iTerm2, set the same font at 12 points under Settings > Profiles > Text. Under Profiles > Terminal, set scrollback to 10,000 lines.
Ghostty measures scrollback in bytes. iTerm2 measures it in lines. These are starting settings, not equal memory limits for a benchmark.
Ghostty configuration
font-size = 12
scrollback-limit = 10000000Run the project tests and search their output. Connect to a host over SSH. Check that your shortcuts and shell integration work as expected.
If you use iTerm2 triggers, hotkey profiles, or tmux integration, test those tasks before switching. A terminal that draws text faster may still lack a feature you use every day.
To manage dev servers and queue workers in Solo, define their commands in solo.yml. Launch coding agents from the agent picker. You can continue to use either terminal for shell work. Solo does not import terminal profiles.
Ghostty and iTerm2 are both free and open source. The practical choice is macOS-and-Linux reach with text configuration or Mac-specific profiles and automation.
Ghostty
Ghostty is free and open source.
iTerm2
iTerm2 is free and open source.
Where Solo fits
Solo adds a separate workspace for agents, services, and project commands alongside either terminal emulator.
If you work on both Mac and Linux, try Ghostty with your existing shell configuration. On Mac, test the iTerm2 profiles, triggers, and tmux integration you use before switching. For dev servers and workers that need restart settings and resource monitoring, try Solo alongside your terminal.
Related comparisons
If you are evaluating Ghostty, iTerm2, Solo, these are the closest next comparisons in the matrix.
Start with one project and a small task. These guides walk through the setup and what to check when the work finishes.
Set up both tools in one project, give one agent implementation work, and ask the other to review the diff.
Read the guide →Give a lead agent a plan, shared todos, and a scratchpad so workers have clear assignments and a useful handoff.
Read the guide →Put a Laravel server, Vite, and a queue worker in solo.yml, then manage their output and restart behavior in Solo.
Read the guide →The Free plan includes every feature, so you only need Pro after you outgrow four projects.
Team seats
Buy seats under one Stripe subscription, then share a claim link in Slack or email. Each claimant signs in or registers and receives a normal Solo Pro license. Optional auto-grow adds prorated seats automatically when the pool is full, so your team never hits a license wall.
Seats 1–3
$99/seat/yr
Seats 4–10
$89/seat/yr
Seats 11–50
$79/seat/yr
Seats 51+
$69/seat/yr
Brackets apply per seat — a 10-seat team pays $99 each for seats 1–3 and $89 each for seats 4–10.
Free for four projects on macOS and Windows.
Start with a terminal and add the programmable meta-harness when you need to coordinate agents with your local development stack.
“I can't live without it.”