Zellij Terminal Workspace
Remote-control zellij sessions for interactive CLIs by sending keystrokes and scraping pane output.
Remote-control zellij sessions for interactive CLIs by sending keystrokes and scraping pane output.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Use zellij only when you need an interactive TTY. Prefer exec background mode for long-running, non-interactive tasks.
DATA_DIR="${CLAWDBOT_ZELLIJ_DATA_DIR:-${TMPDIR:-/tmp}/moltbot-zellij-data}" mkdir -p "$DATA_DIR" SESSION=moltbot-pythonzellij --data-dir "$DATA_DIR" new-session --session "$SESSION" --layout "default" --detach zellij --data-dir "$DATA_DIR" run --session "$SESSION" --name repl -- python3 -q zellij --data-dir "$DATA_DIR" pipe --session "$SESSION" --pane-id 0
After starting a session, always print monitor commands:
To monitor: zellij --data-dir "$DATA_DIR" attach --session "$SESSION" zellij --data-dir "$DATA_DIR" pipe --session "$SESSION" --pane-id 0
CLAWDBOT_ZELLIJ_DATA_DIR (default ${TMPDIR:-/tmp}/moltbot-zellij-data).pane-id (numeric) to target specific panes.zellij --data-dir "$DATA_DIR" list-sessions --long or use list-panes.sh.zellij --data-dir "$DATA_DIR" list-sessions.{baseDir}/scripts/find-sessions.sh --all (uses CLAWDBOT_ZELLIJ_DATA_DIR).zellij action to send keystrokes: zellij --data-dir "$DATA_DIR" action --session "$SESSION" write-chars --chars "$cmd".zellij --data-dir "$DATA_DIR" action --session "$SESSION" write 2 (Ctrl+C).zellij --data-dir "$DATA_DIR" pipe --session "$SESSION" --pane-id 0.{baseDir}/scripts/wait-for-text.sh -s "$SESSION" -p 0 -p 'pattern'.Ctrl+p d (zellij default detach).python3 -q.PYTHON_BASIC_REPL=1.darwin/linux and requires zellij on PATH.zellij excels at running multiple coding agents in parallel:
DATA_DIR="${TMPDIR:-/tmp}/codex-army-data"Create multiple sessions
for i in 1 2 3 4 5; do zellij --data-dir "$DATA_DIR" new-session --session "agent-$i" --layout "compact" --detach done
Launch agents in different workdirs
zellij --data-dir "$DATA_DIR" action --session "agent-1" write-chars --chars "cd /tmp/project1 && codex --yolo 'Fix bug X'\n" zellij --data-dir "$DATA_DIR" action --session "agent-2" write-chars --chars "cd /tmp/project2 && codex --yolo 'Fix bug Y'\n"
Poll for completion (check if prompt returned)
for sess in agent-1 agent-2; do pane_id=$(zellij --data-dir "$DATA_DIR" list-sessions --long | grep ""$sess"" | jq -r '.tabs[0].panes[0].id') if zellij --data-dir "$DATA_DIR" pipe --session "$sess" --pane-id "$pane_id" | grep -q "❯"; then echo "$sess: DONE" else echo "$sess: Running..." fi done
Get full output from completed session
zellij --data-dir "$DATA_DIR" pipe --session "agent-1" --pane-id 0
Tips:
pnpm install first before running codex in fresh clones❯ or $) to detect completion--yolo or --full-auto for non-interactive fixeszellij --data-dir "$DATA_DIR" delete-session --session "$SESSION".{baseDir}/scripts/cleanup-sessions.sh "$DATA_DIR".| Task | tmux | zellij |
|---|---|---|
| List sessions | | |
| Create session | | |
| Attach | | |
| Send keys | | |
| Capture pane | | |
| Kill session | | |
| Detach | | |
{baseDir}/scripts/wait-for-text.sh polls a pane for a regex (or fixed string) with a timeout.
{baseDir}/scripts/wait-for-text.sh -s session -p pane-id -r 'pattern' [-F] [-T 20] [-i 0.5]
-s/--session session name (required)-p/--pane-id pane ID (required)-r/--pattern regex to match (required); add -F for fixed string-T timeout seconds (integer, default 15)-i poll interval seconds (default 0.5){baseDir}/scripts/find-panes.sh lists panes for a given session.
{baseDir}/scripts/find-panes.sh -s session [-d data-dir]
-s/--session session name (required)-d/--data-dir zellij data dir (uses CLAWDBOT_ZELLIJ_DATA_DIR if not specified)No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.