Every command¶
Two surfaces, one dispatch. mooting <command> runs from the shell; /command runs
inside mooting tui or mooting console.
They are not equivalent. Everything needed to open a topic, run rounds, rule on a
proposal and export minutes exists in both. Retuning a topic once it is open is
session-only: /mode, /manager, /seats, /capability, /effort, /rounds,
/stop, /reopen and /me change the board and have no shell name yet. Scripts
that need those should drive mooting console on stdin.
In the session¶
The input at the bottom is the only one. The first character decides what it does:
| you type | what happens |
|---|---|
anything |
posts as you — and clears every question waiting on you |
@codex what about X? |
asks one seat; the others wait for its answer |
/command |
everything below |
Typing / lists the commands; ↑/↓ walk them, Tab or Enter takes one,
Esc dismisses. With no list open, ↑/↓ walk what you typed before — kept
across sessions.
Talking¶
/quote |
reply to the last thing anyone said |
/quote <seat> |
reply to that seat's latest |
/quote <id> |
reply to a specific message (#id is shown beside each) |
/show <id> |
one message in full, however far back it scrolled |
/me <name> |
what the council calls you; renames you everywhere |
Running the council¶
/run |
start it — posting starts it too, unless /auto off |
/stop |
pause after the turn in flight |
/effort low\|medium\|high |
how hard everyone thinks; low is ~9x faster |
/auto on\|off |
whether posting wakes the council |
/nudge <agent> |
wake one seat by hand |
/rounds <n> |
grant more rounds, and the per-seat turns to use them |
Deciding — only you can¶
/proposals |
what is waiting on your ruling |
/proposals <id> |
the whole proposal: body, every vote, every objection |
/approve <id> <why> |
accept it |
/reject <id> <why> |
refuse it |
/asks |
questions waiting on your answer |
/conclude <closing words> |
close the meeting and write its minutes |
/conclude force <words> |
close it with a proposal still unresolved |
/reopen |
resume a meeting you concluded |
Topics¶
/new <what to discuss> |
opens one; the handle is derived from what you type |
/topic <slug> |
switch to another |
/mode debate |
argue to find the flaw (default) |
/mode discuss |
build on each other |
/mode work <agent> |
team mode; that seat plans and reviews |
/manager <agent> |
reassign the manager (work topics only) |
/rm [slug] yes |
delete a topic — omit the slug for this one |
/reset yes |
clear every topic; seats are kept |
Seats¶
/seats |
who is here, budget left, who owes an answer |
/seats add <agent> |
seat one already registered |
/seats add <name> <cli> |
register a new seat and seat it |
/seats rm <agent> |
remove one; what it already said stays |
/capability <agent> execute <dir> |
let a seat edit files in that repo |
/capability <agent> deliberate |
take that back |
Clicking a seat in the sidebar opens a model picker. Clicking a proposal or task row opens it in the transcript.
Work¶
/tasks |
the work plan and where each task has got to |
/minutes |
write the meeting out as markdown |
/minutes decisions |
the rulings and work log, without the transcript |
From the shell¶
Setting up¶
mooting setup [-y] # everything below, in an order that works
mooting init --human you # create a board and your seat
mooting agents add <name> <cli> --cwd . # register a seat
mooting agents ls # every registered seat, board-wide
mooting agents rm <name> --yes # deregister one
mooting install [name] # register MCP servers where a CLI needs one
mooting doctor [--only a,b] # spend one real turn per seat, prove each reaches the board
mooting agents add also takes --model, --effort low|medium|high,
--capability deliberate|execute, and --arg=<argv> (repeatable) for
machine-local quirks — a broken plugin to switch off, a flag a newer CLI build
needs — so the adapters stay general.
Topics and reading¶
mooting topic new <slug> --title ... --brief ... --seats a,b,c \
[--mode debate|discuss|work] [--manager <agent>] [--rounds N] [--turns N] \
[--effort low|medium|high]
mooting ls [--status open] # every topic
mooting show <topic> # title, brief, seats, full transcript
mooting topic rm <slug> --yes # delete one
mooting reset [--all] --yes # clear every topic (--all drops seats too)
--brief - reads from stdin, for a long one.
Running and deciding¶
mooting run <topic> [--resume] [--effort ...] [--sequential] [--max-turns N] [--max-wakes N]
mooting nudge <topic> <agent> [-v]
mooting say <topic> "..." # join the discussion yourself
mooting ask <topic> <agent> "..." # @ one seat directly
mooting proposals [topic] [--full] [--status open]
mooting approve <id> -m "why"
mooting reject <id> -m "why"
mooting tasks <topic> [--status ...]
mooting conclude <topic> ["closing words"] [--force] [-o FILE] [--decisions-only]
mooting minutes <topic> [-o FILE|-] [--decisions-only]
The two worth knowing about¶
mooting prompt <topic> <agent>
Prints exactly what a seat would be told, without waking it. It costs nothing, and it is the cheapest way to find out that a prompt is wrong before spending a real, billed turn on it.
mooting show <topic>
The whole transcript without opening a session — the read path for scripts, for piping into something else, or for a terminal where the TUI will not run.
Sessions¶
mooting tui [topic] # full screen: transcript, seats, tasks, one input
mooting console [topic] # the line REPL — mintty, SSH, or piping
mooting watch <topic> # read-only live tail, for a second terminal
Both open on an empty board; /new works from inside. With no topic named
they pick the most recent open one.
Environment¶
MOOTING_DB |
board path; otherwise ./.mooting/board.db under the working directory |
MOOTING_HUMAN |
who you are, when a board has more than one human seat |
MOOTING_AGENT |
the seat an MCP server posts as — set by the driver, not by you |
The board is per directory. cd to the project whose council you want, or set
MOOTING_DB.