Multiplexers
Which terminal multiplexers Moshi supports and how deeply — detection, session picker, shortcut panels, hooks, and the moshi launcher.
A terminal multiplexer keeps shells, agents, and TUIs running on the host when the mobile terminal disconnects or the network drops. Moshi treats multiplexers as first-class: it detects them on connect, lists their sessions in the picker, and ships per-multiplexer shortcut panels.
This page is the support matrix. For setup and day-to-day use, jump to the page for your multiplexer.
What we support today
Legend: a check means full support, a dash means not implemented or not applicable, and a string is a one-line clarification of the cell.
tmux
The default workspace Moshi is built around. See tmux for attach patterns, windows and panes, the agent workflow, and the most common detection issue (tmux missing from the non-interactive SSH PATH).
Zellij
Detected on connect and surfaced in the session picker, with a dedicated shortcut panel, a tab quick-access row, and tap-to-open straight from an agent event. The remaining gap versus tmux is the moshi DIR project launcher. See Zellij for the full feature set.
Herdr
Herdr is an agent-aware multiplexer with persistent named sessions, workspaces, tabs, and panes. Moshi detects herdr, lists running sessions via herdr session list --json, and ships a Herdr shortcut panel pre-bound to the default Ctrl-B prefix (configurable, like tmux). Hook integration surfaces kind=herdr plus the session and workspace in inbox events.
What's not there yet: a moshi DIR project-launcher equivalent. Herdr is otherwise at parity — the tab 1–20 quick-access row, the Hide tab selector toggle, and tap-to-open from an agent event all work. See Herdr for setup and the keybinds Moshi pre-binds.
Picking one
For the tmux-versus-Herdr decision in full — the honest cases for each, and when to run both — see tmux or Herdr?. The short form:
- New hosts and long-running agents that need the deepest Moshi integration: pick tmux. It's the only one with the
moshi DIRproject launcher, it has the most-tested detection path, and it's what both moshi-hook and the moshi CLI optimize for. - Agent-heavy workflows where you want blocked/working/done state in the multiplexer itself: pick Herdr. You give up only the
moshi DIRlauncher; you keep prefix customization, the tab quick-access row, tap-to-open from agent events, the shortcut panel, and full hook context — and Herdr's own agent awareness layers on top. - Already on Zellij: keep it. Moshi detects it, lists sessions, and shows the right shortcut panel.
- Mixing several on one host: also fine. Each multiplexer is detected independently and the session picker groups them under separate tabs.
Recent directories
When a host has no live multiplexer sessions — or alongside the ones it does — the picker offers a Recent tab of the project folders you last worked in, pulled from your Claude, Codex, Cursor, and OpenCode history on the host. Each row shows the folder, its parent path, how long ago it was touched, and an icon for every agent that used it.
Tap a folder to land in it: a fresh tmux session rooted there when tmux is available and enabled, or a plain cd into a login shell otherwise. Moshi builds the list with moshi-hook cwd-list when the hook is installed, falling back to a read-only scan of the agents' transcript files over SSH. Toggle it under Settings → Integration → Shell with Detect recent directories on connect.
How detection works
On connect, Moshi runs an SSH preflight that probes command -v tmux, command -v zellij, and command -v herdr over a non-interactive shell, then lists sessions for whichever it finds. The probe has a short timeout so a slow host does not block the terminal opening.
If a multiplexer is installed but Moshi does not detect it, the cause is almost always the non-interactive SSH PATH missing the directory that holds the binary. The tmux troubleshooting section covers the fix; the same approach applies to Zellij and Herdr.