Skip to content

Commander

Press Ctrl+Space Enter (or your configured prefix, then Enter). Commander opens as a persistent composer below the terminal panes. It does not create a layout leaf or change the selected pane, but it initially takes keyboard focus so you can type a message. The visible terminal area resizes while it is open. Drag the shared edge from either the pane above or Commander’s top border to change its height; Commander keeps its default five-cell minimum. If focus is elsewhere, press the same shortcut to return to Commander, then press it again to hide the strip. The draft disappears when you hide it or another TUI client takes control.

The strip is not modal: prefix shortcuts still change tabs, workspaces, panes, and other Luvus controls while it stays visible. Esc returns keyboard focus to the selected pane without hiding the strip. Clicking a tab, workspace, or pane works normally and leaves the draft intact; click the strip to type into it again. Navigating elsewhere does not silently change its explicit targets. You can also press the prefix and an arrow to preview focus between panes and the Commander strip. Down from the bottom pane highlights Commander; Up returns to that pane. Press Enter to focus the highlighted target or Esc to keep the original focus.

Mention a live agent by pane ID or Luvus alias to send a prompt. Mention a shell by pane ID or pane name to run a one-line command:

@p17 review the current diff
@reviewer check the tests
@p24 ls
@p17 @reviewer review this together

Here p17 and reviewer are agent panes, while p24 is a shell. A shell target executes its text as a command, so use a command valid for every selected shell.

The focused terminal pane’s @pID is filled in when Commander opens. Exact @pID mentions select panes anywhere in the message, including within the text. A named path can narrow an exact pane through its tab and workspace:

@tab:tests/pane:reviewer check the tests
@workspace:app/tab:tests/pane:p24 ls

Names with spaces use percent escaping (for example, review%20work). Type @tab: and press Tab to pick a tab name, then press Tab again to complete an exact pane; further presses cycle panes in that scope. Shift+Tab starts from the last choice. Space or Enter accepts a Tab-selected mention and adds a separator; Enter does not send while a completion is pending. Bare scopes do not broadcast. Adjacent mentions before any text share that text. Once text follows a mention, the next mention starts a separate message for its own target. The mentions themselves are removed from the delivered text. = is not a Commander target prefix. Type @ and press Tab to complete it in place to a pane name (or @pID when unnamed). Tab and Shift+Tab cycle a mention under the cursor. A unique agent kind such as @codex also works; an ambiguous kind requires a pane ID or alias. @pane:reviewer also addresses a named pane. Shells without a pane name require a pane ID. Targets can be in another tab or workspace of the same named session. @session:<current-name>/... may make the current session explicit, but cross-session delivery is not supported yet. The title shows recognized exact panes before you send.

Only recognized pane IDs, aliases, and named paths add inline recipients; package names such as @types/node and arguments such as =value remain prompt text. Prefix a mention with \ to send it literally, for example \@p24.

To send the same text to several panes, list their mentions together:

@p17 @p24 review the authentication changes

To send different text in one submission, put each message after its target:

@p8 Okay, you got it. @p9 ls

Here p8 receives only the sentence and p9 receives only ls. One Enter sends every segment directly; no confirmation is needed. Each agent receives a prompt; each shell executes its own text as a command. Shell commands must be one line, even if the composer contains a newline. Luvus validates every segment before sending and rechecks each pane, terminal lifetime, and agent/shell identity at dispatch. It reports each result and does not retry successful deliveries if another target fails. Use Up and Down to inspect receipts. If messages differ or only some panes receive them, the draft clears to prevent an accidental resend. A workspace, tab, or session name never expands into a broadcast. The limit is 16 explicit targets per send.

To split one exact pane, enter a standalone action instead of a message:

@reviewer:sv
@p24:sh

:sv splits side by side (new pane on the right); :sh stacks the new pane below. Each action opens a new shell beside its target, including a target in another tab or workspace, then focuses the new pane. Commander stays visible but gives keyboard focus to that pane. The draft changes to the new pane’s mention, so pressing Enter again cannot repeat the split. An action cannot be combined with message text or other targets. Named paths also work, for example @tab:tests/pane:reviewer:sv.

Type / at the start of the draft to use a Luvus action. If Commander still contains its initial @pID mention, typing / replaces that starter text. The picker matches Commander’s width and lists matching commands, their purpose, and the selected command’s usage while you edit the slash name. Type more letters to filter. Up/Down, PageUp/PageDown, or the mouse wheel browse the list; click a row to select it. On short terminals the list scrolls to keep the selected row visible. Tab and Shift+Tab still complete or cycle names. Space accepts the selection and starts arguments. Enter accepts a selected or partial name, starts required arguments, or runs a complete action. Use @ and Tab to complete an exact target where required.

/focus @p17
/focus @tab:tests
/focus @workspace:app
/read @p17
/fork @reviewer
/split @p24 right
/split @p24 below
/task
/task @workspace:app
/automation
/automation @workspace:app
/automation @p17
/task @workspace:app title: Review tests start: manual prompt: Check coverage
/automation @p17 title: Daily review start: daily schedule: 09:00 timezone: UTC prompt: Report risks
/mission
/diff
/files

/focus switches to one exact pane, tab, or workspace without sending input. /read shows a bounded snapshot of one pane’s recent output in Commander; use PageUp and PageDown to browse it. /fork uses the native agent session fork handler and requires a fork-capable agent with a known session. Bare /task, /automation, and their @target forms open the existing modal. Alternatively, write field: value pairs directly after the action and target to create from the Commander input in one Enter. Put prompt: last; everything after it is prompt text, including text that resembles another field. Tab completes a partial slash action or @target; after an exact action and target, Tab cycles pane choices without advancing. Press Space or Enter to accept a target and add a separator, then Tab inserts title:. Type the title and press Tab to add start:, then continue through the fields appropriate to a task, new-worker automation, or selected active agent. Tab and Shift+Tab cycle choices inside start:, schedule:, timezone:, agent:, mode:, and access:; Space or Enter accepts the displayed value, and the following Tab adds the next field. Custom schedule values and IANA timezones can be typed directly; finish them with Space before advancing. prompt: stays free text. Missing or invalid values keep the input and show an error. A successful send shows the new task or automation ID. /task guide and /automation guide remain available for a guided multiline draft inside Commander.

The optional @workspace:name binds a task or new-worker automation to that exact workspace; without it, Commander uses the current workspace. /task @p17 selects pane 17’s workspace and pre-fills its agent kind, but does not send to that pane. /automation @p17 instead targets that exact live agent. Tab can complete the names. These slash actions never forward their text to a terminal. To send an agent’s own slash command, put it after a target, such as @p17 /status.

For example, this creates a task directly from the input:

/task @workspace:app title: Review login tests start: now agent: codex mode: workspace prompt: Find and fix the failing login tests

Use start: manual to save without launching. paths:, deps:, and gate: are optional; mode: accepts worktree or workspace. Fields may also be separated by newlines, and Shift+Enter adds a line to the input. Use two spaces or a newline to make field boundaries unambiguous when a value mentions text such as start:.

/split creates a shell beside one exact pane: right places it alongside, below stacks it underneath. sv and sh are accepted direction aliases. For an existing live agent in pane 17, the inline form is:

/automation @p17 title: Daily review start: daily schedule: 09:00 timezone: Asia/Makassar prompt: Review today's changes and report risks

Without @p17, automation targets a new worker and also accepts agent:, mode:, access:, paths:, and gate:. Automation starts can be once, hourly, daily, or weekly. Schedules use YYYY-MM-DD HH:MM for Once, a minute from 00 to 59 for Hourly, HH:MM for Daily, or a value such as mon,fri 08:00 for Weekly. Use an IANA timezone. A Tab-suggested Once schedule keeps its instant if you change the timezone; a manually typed schedule is interpreted in the selected timezone. /mission opens Mission Control in the current workspace. /diff and /files focus their respective dock views. These navigation actions do not send terminal input. The picker contains only actions available in this version of Commander.

Enter sends to all listed targets. Shift+Enter adds a visible new line; Alt+Enter is a fallback for terminals that cannot report Shift+Enter. The composer remains open after sending. Pasted clipboard images appear as [Image #1] markers in the draft, while the receiving pane gets the staged image path. Text and image paste edit the draft only while the strip has keyboard focus; otherwise they follow the normal active pane or modal. Outside the slash picker, arrow keys, Home/End, Ctrl/Alt word navigation and deletion, Ctrl+U/Ctrl+K line deletion, and macOS Command editing chords work in the draft. Up and Down move between draft lines before cycling delivery receipts at the draft boundary. Select text with Shift plus navigation, then copy or cut it with Ctrl+C/Ctrl+X or Command equivalents. Paste uses the terminal’s normal paste event. A queued receipt means input was submitted atomically, not that the agent task or shell command has finished.

In Settings → General → Commander working-agent input, Auto-send (the default) queues input to a prompt-ready working agent immediately. Choose Ask to require a second Enter: the first preserves the draft and names the agents awaiting confirmation; editing the draft or pressing Esc cancels it. Both modes re-check the exact pane and prompt readiness before delivery. Neither mode answers or approves an agent’s own permission dialogs; blocked agents still need explicit interaction in their pane.

Commander does not yet approve blocked-agent dialogs or route to another named session or saved SSH machine. Use the existing controls for those operations.