Just Fucking Use Tmux

Let me guess. You've got 47 terminal windows open. You SSH'd into a server three hours ago to run a migration. Your WiFi burped for half a second and now that connection is fucking gone. The migration? Who knows. Probably half-finished. Your database is now in some cursed intermediate state because you couldn't be bothered to learn a tool that's been around since 2007.

This is your fault.

Every single time you lose work because "my SSH dropped" or "my laptop died" or "I accidentally closed the wrong tab," that's on you. You had the solution sitting right there. Free. Preinstalled on half the servers you touch. But no, you were too busy opening yet another terminal window like some kind of feral raccoon organizing garbage.

What the fuck is tmux

Tmux is a terminal multiplexer. It runs on the machine, not in your precious little terminal emulator. Your terminal is just a window looking at tmux. Close the window? Tmux doesn't give a shit. It keeps running. Your processes keep running. Your entire layout, your scrollback, your carefully arranged panes — all still there, waiting for you to pull your head out of your ass and reconnect.

SSH dies? tmux attach. Laptop battery dies? tmux attach. You accidentally type exit like an idiot? tmux attach. It's always there. It's always waiting. It's the only thing in your workflow that actually has your back.

But I just open more terminal windows!

Oh, you sweet summer child.

You've got six terminal windows. Which one has your dev server? Which one has the logs? Which one is SSH'd into production? You don't know. You're clicking through them one by one like you're playing fucking Minesweeper with your own workflow.

And when you close your laptop? They're all dead. Every single one. That dev server you had running? Gone. Those log tails? Gone. That SSH session where you were in the middle of debugging something? Absolutely annihilated. You come back tomorrow and get to set everything up again from scratch, like some kind of productivity Sisyphus, forever pushing terminal windows up a hill only to watch them tumble back down.

But iTerm2 has splits!

Cool. Does it work on the Linux server you SSH into? No? Then what's the fucking point?

Your fancy Mac-only terminal emulator with its pretty splits and its tabs and its profiles doesn't help you when you're three machines deep into a production incident at 2 AM. You know what works there? Tmux. Because tmux doesn't care what terminal you're using. It doesn't care what OS you're on. It doesn't care if you're connecting from your MacBook, a Chromebook, or a fucking potato with an SSH client.

iTerm2's own documentation tells you to use tmux. They literally built a "tmux integration mode" because they know their native splits are toys compared to the real thing.

But VS Code has a terminal!

VS Code's terminal is a terminal the same way a hotel room microwave is a kitchen. Sure, technically you can heat things up. But you're not cooking Thanksgiving dinner in there.

Switch VS Code projects and your terminals evaporate. Your SSH connection drops and everything dies. The terminal exists to run npm install and maybe git status. It is not a workflow. It is not a tool. It is a checkbox on a feature list so Microsoft can say "yes, we have a terminal."

But WezTerm has multiplexing!

Ah yes, WezTerm. The terminal emulator that promised to make tmux obsolete. Let's talk about that.

WezTerm's multiplexing requires WezTerm to be installed on both the client AND the server. And not just installed — the same version. Server running one build, client running another? Error. "Please install the same version of wezterm on both the client and server!" Imagine seeing that shit at 2 AM during an outage. Meanwhile tmux just needs to be on the server. That's it. And it's already there because every sane sysadmin installed it years ago.

And about those versions: WezTerm's last stable release was February 2024. It's been nightly builds ever since — two and a half years of them. There's an open issue where users are literally begging for a stable release "once a year or so." So that same-version requirement you need for multiplexing? You get to satisfy it with nightlies. On your production servers. Bold strategy.

The funniest part? WezTerm power users eventually just... run tmux inside WezTerm. They went through the whole five stages of grief — denial, configuring Lua files, more denial, installing plugins — and ended up right back where they started. Terminal emulators come and go. Tmux stays.

But Ghostty is the future!

Ghostty is genuinely fast. Ghostty is genuinely nice. And Ghostty cannot detach a session, because they decided it never will: it's officially "not a multiplexer." Session persistence, detach/reattach, remote panes — scoped out on purpose. Their own answer for that stuff? Use tmux or zellij. The future of terminals ships with a note telling you to go use the thing from 2007.

So what did the community do? They took Ghostty's terminal parser, compiled it to WebAssembly, and started building session-persistence daemons out of the parts. One of them describes itself as — I swear this is real — "think screen(1) but in Go." Congratulations, everyone. We speedran forty years of terminal history and arrived back at Screen. There are proof-of-concept forks for persistent SSH sessions, third-party attach/detach tools, whole GitHub discussions of people rebuilding tmux around a terminal whose pitch was that you wouldn't need tmux.

There's a blog post called "You Might Not Need Tmux" that Ghostty fans love to share. The author's solution to replacing tmux? Use three separate tools instead. Shpool for persistence (which has "active bugs" with terminal state restoration). A window manager for splits. SSH config hacks with RemoteCommand. Three buggy tools duct-taped together to poorly replicate what one tool does out of the box. That's not progress. That's a coping mechanism.

Look, Ghostty is great for local work. But "I don't need tmux" really just means "I don't SSH into servers" or "I haven't been burned yet." Give it time.

But Zellij is the modern one!

Zellij is the strongest objection on this page, so let's be fair: it's good. Written in Rust, discoverable keybindings, floating panes, a nice first-run experience. If tmux didn't exist, Zellij would be a fine thing to build.

But tmux does exist. It's on the server already. Zellij isn't — so now you're installing a chunky Rust binary with a WebAssembly plugin runtime on every box you touch, assuming the box's package manager even has a recent version, which it doesn't, so now you're curling binaries onto production like it's 2012. Five years in and it's still version 0.4x. Meanwhile tmux shipped 3.7c this month — the "old" tool has newer releases than the modern one has stable APIs.

Zellij's own fans say it: great on your laptop. The moment the work is on a machine that isn't yours, you're back to the tool that's already everywhere. There's a reason the Zellij-vs-tmux articles all end with "if you're happy on tmux, stay."

It's 2026. Your agents live in tmux.

Here's the part nobody saw coming: the AI coding agents everyone runs now? They live in tmux. Detached sessions running unattended agents overnight. send-keys as the universal API for driving a terminal program that thinks. Robert C. Martin — Uncle Bob, the Clean Code guy — published an agent-swarm orchestrator this year and its foundation is literally tmux sessions and git worktrees. The hot new multi-agent frameworks are tmux scripts wearing a trench coat.

Think about why. An agent needs exactly what you need at 2 AM: a session that survives disconnects, that can be observed without being interrupted, that something else can attach to and read. That problem was solved in 2007. Every terminal emulator that "makes tmux obsolete" solves the easy half — pretty splits on your laptop — and punts on the half that matters. The agents don't care about your ligatures. They need a session that doesn't die.

The commands

Fine. Here. This is all you need:

# Start tmux
tmux

# Detach (it keeps running, you can leave)
Ctrl+b d

# Come back later, reattach
tmux attach

# Split your screen because you're not an animal
Ctrl+b %    # vertical
Ctrl+b "    # horizontal

# Move between panes
Ctrl+b arrow-keys

That's it. That's the whole thing. Five commands. You could learn this in the time it takes to complain about losing your SSH session. But instead you'll keep doing what you're doing, losing work, and wondering why your life is hard.


Stop being a victim of your own laziness. Stop blaming your WiFi. Stop blaming your laptop battery. Stop blaming SSH. The tool exists. It's free. It works. It's been battle-tested by millions of developers who got tired of losing their shit.

Just fucking use tmux.

sudo apt install tmux && tmux

Or brew install tmux. Or pacman -S tmux. Or whatever. It's everywhere. You have no excuse.