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

CommandWhat it does
vect chatTalk to an agent in this directory. See an agent in your terminal.
vect roomSeveral agents in one directory, reading each other.
vect doctorWhether this machine can run an agent, and what is configured.
vect mcp serveRun the MCP server that hands an agent CLI Vect's own tools. See the MCP server guide.
vect sessionInspect sessions on this machine.
vect contextWork with context files.
vect skillManage skills.
vect templateManage session templates.
vect gitThe git helpers the app exposes.
vect appDrive the desktop app that is already open.
vect uiReserved 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.

CommandWhat it does
vect chatTalk 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 -cPick up the last session in this directory.
vect chat --resume <id>Pick up that one, by the id the listing shows.
vect chat sessionsWhat this directory has had. --agent-side asks the agent's own list.
vect room "<task>"Several agents here, reading each other between rounds.
vect doctorWhether 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:

CommandWhat it does
vect app pingCheck that the app is running, and on which port.
vect app sessionsThe 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 roomsThe rooms that are open.
vect app tasksThe 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.