Docs / Control CLI
tmux-style control, terminal included.
A running QuorumTerm listens on a Unix control socket. The bundled quorum-term CLI talks to it like tmux: query state as JSON, drive splits and focus, publish agent metadata, or type into any pane — from scripts, hooks, or your own tools.
How it works
The CLI sends its argv as a JSON array over the socket and prints the one-line reply. Queries are answered from a state snapshot the GUI keeps current — they never touch the event loop. Actions are handed to the main thread and acknowledged immediately, fire-and-forget, exactly like tmux. Override the socket path with QUORUM_TERM_SOCK.
Driving it from a script or an agent? Lead with --format json (shorthand --json) and every reply — success or failure, including a GUI that isn't running — becomes exactly one line of JSON ready for jq: queries return {"ok":true,"data":…}, actions are acknowledged with {"ok":true}, and failures return {"ok":false,"error":…} with a non-zero exit code.
Queries (print JSON)
| list-panes | lsp | Every pane across all tabs |
| list-tabs | lst | Tabs with their panes |
| info | status | Full state: mode, active tab, tabs |
| agents [--state s] | Panes with a detected agent; filter by idle/working/blocked |
Tabs
| new-tab | neww | Open a new tab (agent tab in agent mode) |
| next-tab / prev-tab | Cycle tabs |
| select-tab <n> | Activate tab by index |
Panes
| split | splitw | Split focused pane / add agent side pane |
| focus <id> | Focus a pane by id |
| close-pane [id] | Close the focused pane, or one by id |
| move-pane <dest> [id] | Move a pane into another tab, or `new` |
| break-pane [id] | Pull a pane out into its own tab |
Mode & worktrees
| mode <agent|default> | Switch the active tab's layout mode |
| worktree | wt | Open the worktree picker (⌘⇧W) |
| worktree up [path] | Run the project's up scripts, one pane each |
| worktree down [path] | Run down scripts, close the env panes |
Metadata & input
| report-agent … | Publish status / title / display name for a pane, with TTLs |
| send-keys … | Send tmux-style keys or literal text to any pane |
send-keys
Each word is a tmux-style key name (Enter, Escape, C-c, M-x, F1–F12, arrows, paging) or literal text. --literal forces plain text, --enter appends a carriage return, --pane targets any pane.
quorum-term send-keys "git status" Enter
quorum-term send-keys C-c
quorum-term send-keys --pane 3 --literal "npm run dev" --enter
# a full scripted layout
quorum-term split && quorum-term split
quorum-term send-keys --pane 2 --literal "claude" --enter
quorum-term --json agents --state blocked | jq .data