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 togetherHere 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 lsNames 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 changesTo send different text in one submission, put each message after its target:
@p8 Okay, you got it. @p9 lsHere 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.
Slash actions
Section titled “Slash actions”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 testsUse 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 risksWithout @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.