← multiplexers directory○ community

Multiplexer · Zellij contributors

Zellij.

If tmux is a Honda Civic, Zellij is a current-gen EV. Same job, same destination, but the controls are visible and the defaults already make sense.

$ brew install zellij

Zellij is what tmux would be if it were designed today. Rust-built, batteries-included, sensible defaults out of the box. The status bar tells you what every keybinding does. Floating panes are a primitive. The plugin system uses WASM. It is the multiplexer for people who like tmux's job but do not have the patience for tmux's learning curve.

The thing tmux migrants tend to underestimate is how much friction tmux's discoverability problem was costing them. Zellij's status bar means a keybinding never has to be looked up; the available bindings are right there, contextual, always. That single design choice is what makes the switch pay off within a day rather than a month.

§01What's different from tmux

The differences are not surface-level theming. They are the choices a multiplexer would make today rather than the choices that aged in from the early 2000s:

  • Discoverable. The status bar shows the current mode and the available bindings. New users can self-onboard without a cheat sheet.
  • Sensible defaults. Mouse support, scrollback search, copy mode, all working out of the box.
  • Floating panes as a first-class concept. tmux has popups; Zellij has full floating windows.
  • Layouts as code. Define the project layout in a KDL file, then zellij --layout work.kdl spins it up.
  • WASM plugins. Sandboxed, language-agnostic. The plugin ecosystem is younger but cleaner.

§02Layout-as-code

This is the killer feature for vibe coders running parallel agents. The project workspace becomes a checked-in file:

// ~/Code/vibgineer/work.kdl
layout {
  pane split_direction="vertical" {
    pane size="60%" {
      command "claude"
    }
    pane split_direction="horizontal" {
      pane {
        command "npm"
        args "run" "dev"
      }
      pane {
        command "git"
        args "status"
      }
    }
  }
}

Run zellij --layout work.kdl from the project root and the three-pane agentic workspace is up. Commit the file to the repo when the team would benefit from the same layout.

§03Setup

# install
brew install zellij    # macOS
# or:  cargo install zellij

# first launch — it generates a default config
zellij

# attach to an existing session
zellij attach

# list sessions
zellij list-sessions

§04Caveats

  • Younger ecosystem. tmux has 20 years of plugins, blog posts, and Stack Overflow answers. Zellij has fewer, though the active community is good.
  • Some breakage on weird terminals. Mostly fine on iTerm2, Wezterm, Alacritty, and Ghostty. Older terminals occasionally hiccup.
  • Memory of tmux conventions does not transfer. Different keybindings, different mental model. The first two days are friction; the friction stops paying after that.