CLI Reference
Vect ships a vect command alongside the desktop app. Most of it is a
companion to the app rather than a second way to run it: opening projects and
everything else with a window belongs to the desktop app, and the CLI covers
the parts that are useful from a terminal or from another agent. The one
exception is vect chat, which is a whole agent session in the terminal, on
the same code the window runs.
There is no npx vect. The name vect on npm belongs to an unrelated
package, so installing it that way gets you somebody else's library.
Subcommands
| Command | What it does |
|---|---|
vect chat | Talk to an agent in this directory. See an agent in your terminal. |
vect room | Several agents in one directory, reading each other. |
vect doctor | Whether this machine can run an agent, and what is configured. |
vect mcp serve | Run the MCP server that hands an agent CLI Vect's own tools. See the MCP server guide. |
vect session | Inspect sessions on this machine. |
vect context | Work with context files. |
vect skill | Manage skills. |
vect template | Manage session templates. |
vect git | The git helpers the app exposes. |
vect app | Drive the desktop app that is already open. |
vect ui | Reserved for serving the browser client. Not implemented yet; it exits with a message saying so. |
An agent in your terminal
vect chat opens an agent session where you are, with the streamed answer, the
tool calls, the permission prompts and the project's memory that the window has.
| Command | What it does |
|---|---|
vect chat | Talk to an agent here. |
vect chat "<prompt>" | Same, starting with this. |
vect chat -p "<prompt>" | Print the answer and exit, for pipes. --json for one object. |
vect chat -c | Pick up the last session in this directory. |
vect chat --resume <id> | Pick up that one, by the id the listing shows. |
vect chat sessions | What this directory has had. --agent-side asks the agent's own list. |
vect room "<task>" | Several agents here, reading each other between rounds. |
vect doctor | Whether an agent can start, and what MCP servers it would get. |
--agent chooses between claude-code, codex and hermes; --model chooses the
model where the agent lets a client choose one, and /model inside a session
lists what that agent offers.
A room is seated with --with a,b. By default the seats take rounds: everyone
answers, everyone reads, everyone answers again, and the room says so when two
of them touched one file in the same round. --rounds until-quiet runs up to
six and stops at the first round that changes nothing. --free drops the
rounds entirely, so a seat that finishes goes again without waiting for the
others and says when it has nothing left to add.
This half needs Node 22 or newer, which is not an extra requirement: the agents themselves are launched with npx or uvx.
Driving the app that is already open
The window and the terminal are two front-ends onto one process. Vect listens
on localhost while it runs, and vect app speaks to it:
| Command | What it does |
|---|---|
vect app ping | Check that the app is running, and on which port. |
vect app sessions | The agent sessions running in it right now. |
vect app send <id> "<message>" | Send a message into one, as if you had typed it there. |
vect app read <id> | Print what that session has written. |
vect app rooms | The rooms that are open. |
vect app tasks | The task list. |
vect app call <action> '<json>' | Any bridge action by name, for the ones with no subcommand yet. |
A session listed here is the session on screen: a message sent from the
terminal lands in that transcript and the reply appears in both places. Every
one of these needs the app to be running; none of them starts a second copy of
anything. Add --json to any of them for the raw answer.
The second screen
The phone client is served by the desktop app itself, not by the CLI. Turn on Reachable on this network in Settings and any browser on your network can open it. See Vect on your phone.
The browser client is a second screen: it reads along, replies, and answers permission prompts. It cannot start an agent, because a browser has no terminal to run one in.