You're running Claude Code agents and your terminal wasn't built for it.

Three parallel sessions and you have no idea which one needs your attention. Tab labels that say nothing about what's actually happening inside. This is the gap the tools below are targeting, with different approaches and very different platform coverage.

I ran Claude Code agents in five terminals: cmux, Ghostty, Warp, Herdr, and tmux. The right answer splits by OS.

Per-platform verdict

Mac: cmux if you want agent-native and you're Mac-only. Ghostty plus tmux if you need session persistence and scriptable layouts. Warp if you want built-in AI and team orchestration and you're comfortable with opt-out telemetry and a credit-based model.

Linux: no cmux (Mac-only). Ghostty plus tmux or Herdr. Herdr gives you per-agent state visibility that nothing else on Linux matches without bolting on extra tooling. Warp if your team is already evaluating cloud orchestration.

Windows: weakest field by a margin. No cmux, no Ghostty GUI. Warp is the most complete native option but Windows support is still rough. Herdr ships a native binary but it's beta and incomplete. WSL plus tmux is the practical baseline until the field matures.

ToolMacLinuxWindowsAgent-awareSession persist
cmuxYes (native)NoNoNotification ringsLayout, scrollback, agent sessions
GhosttyYes (SwiftUI)Yes (GTK)No GUINoNo
WarpYesYesYes (rough)Oz cloud harnessVia Oz sessions
HerdrYes (runs inside)Yes (stable)Yes (beta)4-state detectionNo
tmuxYes (runs inside)Yes (stable)WSL onlyNoYes (detach/reattach)

The five tools

cmux

cmux is a Mac-only terminal built on libghostty, which means it renders using the same engine as Ghostty and reads your existing Ghostty config: themes, fonts, colours. Native Swift and AppKit, not Electron. It's by manaflow-ai, launched at YC in March 2026. Current version v0.64.22, released 2026-08-03. There's now an iOS companion in TestFlight beta that pairs with your Mac and attaches to your terminals from your phone.

The agent-specific feature is notification rings: each tab lights up when an agent needs your attention. Rings fire off standard terminal escape sequences (OSC 9/99/777), so anything that emits them works, plus agent hooks and a CLI trigger. You also get a notification panel, subagent-to-pane promotion, and a socket-based control API. The pitch is that instead of polling six tabs, the tabs tell you.

Session restore has moved on since I first wrote this. cmux restores windows, workspaces, panes, working directories, and scrollback, and that state now survives a full computer restart rather than just an app quit. More importantly for agent work, supported agent sessions come back too: Claude Code, Codex, and OpenCode resume when cmux has captured their native session ID and the hooks are installed.

The limit that remains: cmux does not checkpoint arbitrary live process state. Shells, vim, tmux, and anything without its own resume integration still reopen as normal terminals. Agent recovery is an integration, not process persistence.

Other reported friction from HN around March 2026: tab auto-reordering when a notification fires can shift your per-session keyboard shortcuts mid-run; copy-paste reportedly weaker than native Ghostty. The "no SSH" complaint from that thread has aged out — cmux now attaches to remote tmux sessions natively (beta), and running cmux over SSH with tmux is a common setup.

I switched to cmux from Ghostty and it's my daily driver now. The notification rings earn their place once you're past two or three agents. I treat every ring as a priority interrupt: a tab lights up, I stop whatever light work I'm on, deal with it, go back. Without it you're polling tabs, and your attention is the thing that breaks first.

My widest clean run was 30 agents at once, components and pages in a Payload CMS. The only bottleneck was a slow CMS pipeline and the frontend tests, both infrastructure, not the agents. cmux handled the fan-out fine.

One thing I turn off: tab auto-reordering on notifications. It moves tabs around when a ring fires and I lose my place more than it helps. With it off, the rings still tell me what needs attention and my tab positions stay put.

Ghostty

Ghostty is a fast native terminal emulator. GUI on Mac (SwiftUI) and Linux (GTK). No Windows GUI at all. There's a libghostty-vt library for developers embedding the VT renderer, but that's a library for devs, not a terminal you run.

Current version v1.3.1, released 2026-03-13. Native splits, tabs, and multi-window work out of the box. v1.3.0 added scrollback search, native scrollbars, and click-to-move-cursor.

The session story is the weak point. Ghostty panes evaporate when the window closes. No session manager, no fuzzy finder for reattaching, no scrollback restore. The feature request thread was locked by the maintainer after becoming a pile of "+1" replies: acknowledged, not scheduled.

Use Ghostty for quick local visual sessions where you're actively watching output. Pair it with tmux for anything persistent, remote, or scriptable. They cover different ground.

This bit me on Ghostty before I moved to cmux. Close the window mid-run and the session is gone, agent included. It happened a few times and it's how I found out Claude Code keeps every session in state locally on the machine. You lose the live terminal, not the work. claude --resume and you're back in the session that was running.

The terminal losing your pane is annoying. It isn't losing the agent, because Claude Code's local session state is doing the recovery underneath. Worth knowing before you pick a terminal on persistence alone.

Warp

Warp is a Rust-and-GPU-rendered terminal. Not Electron: it uses wgpu with Metal, Vulkan, and DirectX12. It open-sourced in April 2026 under AGPL-3.0 with OpenAI as the founding sponsor. Native binaries on Mac (aarch64 and x86_64), Linux (x86_64), and Windows (x86_64). Calver versioning; dev builds ship approximately daily.

You no longer need an account to download and run Warp. AI and cloud features still require a login and a paid plan.

The piece that matters for agent work is Oz: Warp's cloud orchestration harness. Oz runs Claude Code as a subprocess inside a Warp-managed cloud harness. Claude Code still calls Anthropic directly for inference using your own key. Oz adds triggers, environments, secrets management, observability, and governance. You can spawn sessions via REST API, Oz CLI, Warp app, schedules, GitHub Actions, Linear, or Slack. Multi-agent runs use /orchestrate. Self-hosted execution is Enterprise-only.

Billing is dual-layer: Anthropic invoices inference directly, Warp meters platform and sandbox credits separately. Oz is a different category from a local terminal; it's governed cloud agents for teams. Don't put it head-to-head on the "best terminal" axis. It's competing with a different kind of tooling.

Pricing: Free ($0 with free AI credits), Build $18/month (1,500 credits), Max $180/month (18,000 credits), Business $45/user/month (1,500 credits per seat), Enterprise custom with shared credit pools and a self-hosted option.

Friction worth flagging: telemetry is opt-out by default. On Windows, CMD is still unsupported.

Herdr

Herdr is a Rust/Ratatui TUI multiplexer. It runs inside your existing terminal: Ghostty, iTerm2, Windows Terminal, anything. It's not a terminal emulator. It doesn't replace what you're already running; it adds a layer on top.

The agent-specific feature is four-state detection: blocked (red), working (yellow), done (blue), idle (green). Herdr observes terminal output and classifies each agent session. Supports Claude Code, Codex, Cursor Agent, OpenCode, and others. Official integrations add session-restore identity.

Version v0.8.0, released 2026-08-03. Stable on Linux and macOS. Two things changed in the project itself since June: the repo moved to github.com/herdrdev/herdr after a GitHub org migration, and the licence changed from AGPL-3.0-or-later to Apache-2.0. v0.8.0 also added Grok CLI and Antigravity CLI session reporting with native restore, a bottom tab-bar option, and herdr --skill to print the agent skill bundled with the binary.

The Windows build is a different story: native binary ships, but no direct terminal attach, no Unix FD handoff, no herdr --remote from the Windows binary, no live server handoff, partial CWD tracking in PowerShell, and no signed binary so SmartScreen will flag it on first run. The Windows preview download now bundles a modern app-local ConPTY runtime alongside the binary, which is an improvement, but the docs are explicit that the beta may graduate to stable, stay preview-only, or be reduced depending on feedback. Don't run production agent workflows on it yet.

Detection now runs in two classes. Agents with full lifecycle hooks report state directly. Everything else, including Claude Code, gets classified by TOML manifests evaluated against the bottom-buffer snapshot. That manifest overhaul shipped stable in v0.6.9 (themed "agent stability"), and detection rules now ship remotely and hot-reload into the running server with no binary update. v0.6.10 (2026-06-11) hotfixed a detection-reset loop where Pi and OpenCode lifecycle agents could flood logs, spike CPU, and freeze the UI.

The thing to know for Claude Code specifically: its integration gives you session identity for restore, but state still comes from screen manifest detection, not hooks. The screen-scraping caveat applies to Claude Code even with the integration installed.

tmux

tmux is the no-extra-tools baseline. Current stable: v3.7b (2026-07-01). The 3.7 line went final on 2026-06-26 and was followed by 3.7a and 3.7b the same week. 3.7 carries the fix for a security vulnerability present through 3.6a, which CISA flagged in SB26-166 on 2026-06-08. If you're still on the 3.6 line, upgrade — this is the one item in this post with a security reason attached.

tmux has zero agent-awareness. No rings, no state detection, no Claude Code session integration. Its edge is what it's always been: detach and reattach persistence, remote and SSH sessions, scriptable startup layouts. Nothing else in this list replicates that for remote work or long-running sessions.

The most-cited community pattern for parallel agents: tmux plus git worktrees, one claude per worktree. Anthropic's own docs push this explicitly for isolation: each session a separate git checkout, parallel agents never editing the same files.

Mac: what the field looks like

cmux is the only tool here built specifically for agent-aware Mac terminal work. Notification rings work for the problem they're solving: instead of polling tabs, tabs tell you. The libghostty rendering means you keep your Ghostty config.

Session restore used to be the thing I'd warn people about here, and it's now largely closed: cmux restores layout, scrollback, and working directories across a full restart, and supported agent sessions (Claude Code, Codex, OpenCode) resume with them. What it still doesn't do is checkpoint arbitrary processes, so a long-running build, a vim buffer, or an agent without a resume integration comes back as a fresh shell.

Ghostty plus tmux is the pairing that gets persistent sessions on Mac without giving anything up. Ghostty handles rendering and splits for active visual work. tmux handles everything persistent: reattach after close, SSH, scripted startup layouts. Most Mac engineers running agents in parallel end up using both.

Warp is the pick if your team wants cloud-orchestrated agents, not just a better local terminal. Oz is a legitimately different category from a terminal upgrade. If you're evaluating team orchestration for Claude Code at a company level, Warp competes there. As a personal local terminal replacement, the value proposition is thinner and the AI features need credits.

Linux: narrowed field

cmux doesn't run on Linux. Full stop.

Ghostty runs via GTK on Linux and it's a genuinely good terminal. Pair it with tmux for persistence and you get the same setup as Mac minus cmux. Native splits for visual work, tmux for anything you need to survive.

Herdr fills the agent-state gap on Linux. If you're running multiple Claude Code sessions and want to see which one is blocked versus working without switching to each tab, Herdr is the tool. It runs inside whatever terminal you have. The screen-scraping detection caveat applies here too. v0.6.10 fixed a real log-flooding bug, which tells you something about the maturity of the detection layer.

Warp runs natively on Linux x86_64. If your team is using Oz, it makes sense here too. As a standalone local terminal on Linux, the value proposition is the same as Mac.

Windows: honest about the field

No cmux. No Ghostty GUI.

Warp is the most complete native option: GPU-rendered, real Windows installer. Windows support is improving but CMD is still unsupported and the experience is behind Mac and Linux.

Herdr ships a native Windows binary. No terminal attach, no Unix FD handoff, partial CWD tracking in PowerShell, SmartScreen will flag it on first run. Worth watching as it matures. Not worth staking a production agent workflow on it yet.

WSL plus tmux is the practical baseline. Full detach/reattach persistence, nothing to work around, stable. Not agent-aware, but it works.

If you're primarily on Windows running Claude Code agents, the native options are limited and the good ones are works in progress. Worth knowing before you spend an afternoon on a setup that hits the gaps.

The session-persistence problem

Every tool here gives a different answer to the same question: what happens to a running agent when something closes?

tmux: the session survives. Detach, reconnect, agent still running.

cmux: layout, scrollback, and working directories survive a full restart, and supported agent sessions resume with them. Arbitrary processes do not — anything without a resume integration comes back as a fresh shell.

Ghostty: nothing survives. Window closes, session gone.

Warp with Oz: cloud-managed sessions have their own continuity, but that's the cloud harness, not the local terminal.

Herdr: no session persistence. It adds state visibility to a multiplexer, not process management.

One caveat across all of these: Claude Code persists its own sessions locally, so claude --resume recovers the conversation even when the terminal loses the pane. The terminal's persistence story is about the live shell and process, not the agent's state. If Claude Code is your only agent, this matters less than the table suggests. For anything without its own local session state, the terminal's persistence is the whole story.

For long autonomous runs, this is still the decision that matters most, but the answer is less lopsided than it was in June. tmux remains the only local option with real process persistence — anything running survives, agent or not. cmux gets you agent-session persistence specifically, which covers the common case if Claude Code is what you're running. If you need arbitrary long-running processes to survive, tmux is still the answer.

The verdict

Mac engineers who can stay Mac only: try cmux. The notification rings solve a real problem, and session restore now brings supported agent sessions back with your layout. Go in knowing it still won't checkpoint arbitrary processes.

Linux and Mac engineers who need persistent sessions: Ghostty plus tmux. Clean separation between what each does. Nothing to throw away.

Engineers who want agent-state visibility across platforms: Herdr inside whatever terminal you already have. Stable on Mac and Linux. Screen-scraping detection has known edge cases. Right tool for the state-visibility problem specifically.

Warp if your team is evaluating cloud orchestration via Oz. Don't pick it as a personal terminal upgrade unless the AI and credits fit your workflow.

Windows: WSL plus tmux until the native options mature. Warp if you need to stay native and want the most complete option. Herdr's Windows binary when you want to experiment, not when you need reliability.

No single answer fits every OS and workflow. The platform split is the answer.

Frequently asked questions

What is the best terminal for Claude Code on Mac?
cmux if you want agent-native features (notification rings, tab-per-session management, agent session restore) and you're Mac-only. Ghostty plus tmux if you need persistence for arbitrary processes, not just agents: tmux survives window closes and SSH drops, Ghostty does not. Warp if your team wants cloud orchestration via Oz and you're comfortable with opt-out telemetry and a credit-based AI model.
What is the best terminal for Claude Code on Linux?
Ghostty plus tmux for persistent sessions and native rendering. Herdr if you want four-state agent visibility (blocked, working, done, idle) running inside whatever terminal you already have. It's stable on Linux. cmux is Mac-only and not an option on Linux.
What is the best terminal for Claude Code on Windows?
The field is limited. Warp is the most complete native option. Herdr ships a Windows binary but it's beta and missing core features including terminal attach. WSL plus tmux is the practical baseline: not agent-aware, but stable. No cmux (Mac-only), no Ghostty GUI.
What is cmux and is it good for Claude Code?
cmux is a Mac-only terminal built on libghostty by manaflow-ai, with an iOS companion in TestFlight beta. It's designed for agent-aware work: notification rings light up tabs when an agent needs attention, and subagent-to-pane promotion lets you pull a subagent's output into its own view. Session restore brings back your layout, working directories, and scrollback across a full restart, and supported agent sessions (Claude Code, Codex, OpenCode) resume with them when hooks are installed. The remaining caveat: it does not checkpoint arbitrary processes, so anything without a resume integration reopens as a fresh terminal.
Does Ghostty work for running Claude Code agents?
Ghostty is a fast native terminal on Mac and Linux. It works fine for running Claude Code but has no agent-specific features and no session persistence. When the window closes, your agent session is gone. Pair it with tmux for persistence: Ghostty handles rendering, tmux handles detach/reattach.
What is Herdr and how does it help with Claude Code?
Herdr is a Rust/Ratatui TUI multiplexer with agent-state detection. It runs inside your existing terminal, not as a replacement. It classifies each Claude Code session as blocked (red), working (yellow), done (blue), or idle (green) by observing terminal output. Stable on Mac and Linux. The Windows build is beta. Detection works by screen-scraping, which has known edge cases.
Is Warp good for Claude Code?
Warp is a Rust-rendered terminal with built-in AI and a cloud orchestration feature called Oz that runs Claude Code as a managed subprocess. If you're evaluating team-level agent orchestration with triggers, secrets management, and observability, Oz is a serious option. As a plain local terminal upgrade, it's cross-platform and fast, but AI features need credits and a paid plan, and telemetry is opt-out. Not Electron: Rust plus GPU rendering.
Why do Anthropic's own docs recommend tmux plus git worktrees for parallel Claude Code agents?
Anthropic's parallel-agent docs push git worktrees for isolation: each session in a separate git checkout so parallel agents never edit the same files simultaneously. tmux is the natural pairing because it provides session persistence and scriptable layouts. The detach/reattach behaviour is what none of the newer agent-aware tools replicate for remote or long-running sessions.

Start by doing this

5 mins: Start two Claude Code sessions in whatever terminal you're using now. Notice how you track which one needs attention. That's the problem cmux (on Mac) and Herdr (cross-platform) are both trying to solve, from different directions.

15 mins: Run a session inside tmux. Kill the terminal window. Reconnect with tmux attach. The session is still there. That one behaviour is why tmux is still in the conversation after everything else in this list shipped.

30 mins: If you're on Mac, install cmux from github.com/manaflow-ai/cmux and run two agents. Watch whether the notification rings change how often you switch tabs to check status. If you're on Linux, install Herdr and watch the state colours for one working session. Both are worth a single real trial before you commit.