Zentty Docs
tmux Compatibility
Zentty can satisfy tmux-style pane operations for tools that expect tmux, while still rendering everything as native Zentty panes.
Applies to current public Zentty builds. Last updated May 11, 2026.
Why It Exists
Some agent tools coordinate multi-pane work by shelling out to
tmux. Zentty's Agent Teams mode puts a bundled tmux shim on
PATH so those calls can be translated into native Zentty pane operations
instead of launching a separate tmux server inside the terminal.
Should You Enable It
How Calls Are Routed
The shim re-execs into a hidden zentty __tmux-compat
subcommand. The CLI strips tmux global options such as -S,
forwards supported subcommands to the running Zentty instance, and validates
the normal pane routing environment before changing panes.
tmux split-window -h
tmux select-pane -L
tmux resize-pane -R
tmux wait-for -S ready Worked Example
- An agent starts in the leader pane with Agent Teams enabled.
- The tool runs
tmux split-window -h; Zentty creates a native team column to the right. - The tool runs
tmux send-keys; Zentty sends the subagent launch text to that pane. - The tool runs
tmux wait-for -S ready; the shim writes a local signal scoped to the Zentty instance. - When the subagent exits,
tmux kill-panecloses the native pane and the team anchor dissolves if it was the last one.
Supported Commands
| tmux Command | Zentty Behavior | Notes |
|---|---|---|
split-window / splitw | Create a native Zentty pane. | First team pane opens in a golden-ratio column; later panes stack in that team column. |
send-keys / send | Send text to a target pane or launch a deferred pane command. | |
select-pane / selectp | Update active pane selection and optional pane title. | |
kill-pane / killp | Close a pane and dissolve team anchors when the last subagent exits. | |
kill-window / killw | Close the leader pane or targeted pane. | |
list-panes / lsp | Render tmux-style pane rows with a supported -F format. | |
list-windows / lsw | Expose worklanes as tmux windows inside the current Zentty window. | |
display-message / display | Render pane/worklane format variables. | |
select-layout / selectl | Supports main-vertical and even-vertical for agent-team balancing. | |
resize-pane / resizep | Honors team-width intent while preserving Zentty's golden split. | |
capture-pane / capturep | Read visible text and scrollback, with line-limit support from -S. | |
set-buffer, load-buffer, show-buffer, save-buffer | Local buffer storage for agent workflows. | |
wait-for / wait | Local signal files scoped by Zentty instance or worklane. | Default timeout is 30 seconds; --timeout overrides it. |
show-options / show | Returns pragmatic option values for focus-events, mouse, and synchronize-panes. |
Agent Teams Layout
In Agent Teams mode, Zentty treats the launching pane as the leader. The
first split-window creates a team column to the right at a
golden ratio. Later subagent panes stack vertically inside that team
column, and select-layout main-vertical rebalances the stack
without letting tmux's exact width hints fight Zentty's layout model.
wait-for is handled locally through temporary signal files,
so synchronization commands do not require a running tmux server. The
default timeout is 30 seconds, and --timeout overrides it.
Tracing
Set ZENTTY_TMUX_COMPAT_TRACE_PATH to a writable file path to
collect JSONL trace records from both the shim and IPC handler. The trace
records include event name, subcommand, arguments, worklane id, pane id,
and selected result metadata.
{"event":"tmux.command","subcommand":"split-window","args":["-h"],"paneId":"pane_...","worklaneId":"lane_...","result":"created-pane"} Per-Session Control
Agent Teams is configured globally with
[agent_teams].enabled. For one-off debugging, launch the
agent in a normal pane with the real tmux earlier on PATH, or
launch from a clean shell after disabling the setting and reloading
configuration.
Coexistence With Real tmux
The shim is placed on PATH only for sessions Zentty owns. It does not
uninstall or modify your real tmux. Use which tmux inside the
agent pane to confirm whether the Zentty shim or your system tmux will
handle a command.
The compatibility target is pragmatic tmux 3.x-style client behavior for pane orchestration, not a full tmux server.
Troubleshooting
tmux command not foundConfirm Agent Teams is enabled and the agent was launched from a fresh Zentty pane.which tmux. If it points to Homebrew, your PATH order bypassed the shim.wait-for hangsUse --timeout and inspect the scoped signal path in the trace.ZENTTY_TMUX_COMPAT_TRACE_PATH points to a writable file, not a directory.Limits
Compatibility is intentionally pragmatic. It supports the tmux calls needed by agent workflows and pane control, not the full tmux feature surface. If a tool depends on deep tmux session management, run real tmux inside a Zentty pane instead.
- No tmux attach/detach server lifecycle.
- No full session/window model beyond Zentty windows and worklanes.
- No tmux plugin manager or status-line configuration.
- No nested server emulation.
- No guarantee that arbitrary tmux format strings map exactly.