Factory CLI reference
On this page
The CLI commands that run the factory, read from @opvs-ai/cli 0.27.11. Every command takes --help. For boards, tasks, comments and the rest, see the CLI reference.
Install: npm install -g @opvs-ai/cli, then sign in with opvs auth request. The ids below are examples; use your own.
opvs ship: the ship line
All ship commands take --project <id|slug> and --format text|json. A slug that matches two projects is refused; pass the id from opvs projects list.
Command | Does |
|---|---|
| Shows on or off, Practice or Live, the repository, the Ship app connection, what happens after a merge, and the owners |
| Changes the ship line. Practice observes without shipping; Live can ship |
| Prints both ways to connect GitHub: install the Ship app, or link one already installed |
| Lists the pull requests the ship line knows |
| Stops one pull request from shipping |
| Lifts a hold |
| Approves an owner-class release at its exact 40-character head commit |
| Changes who may approve owner-class releases |
opvs ship status --project 9d7642c4-8151-4c3e-977e-9f30d5a52844
# → on a project with no ship line yet:
# → This project has no ship line yet. Start one with: opvs ship set --project 9d7642c4-8151-4c3e-977e-9f30d5a52844 --enabled off --mode practice --after-merge merge-onlyErrors
Message | When | What to do |
|---|---|---|
| The project has no ship line | Run the |
A slug refused as ambiguous | Two projects share the slug | Pass the project's UUID |
opvs builds: running builds
Command | Does | Needs |
|---|---|---|
| The build's current command, recent steps and messages |
|
| Sends the build a message, or saves it on the card |
|
opvs builds read WEB-12 --last 3
opvs builds tell WEB-12 "The API client lives in src/clients/v2"
# → on a card that does not exist:
# → Error: could not resolve card 'WEB-99999' (the board could not be reached).Errors
Message | When | What to do |
|---|---|---|
| The ref is wrong, or its board is not in your workspace | Pass a card ref such as |
opvs machines: machines
Command | Does |
|---|---|
| This workspace's machines: name, short id, status, sidecar version, last health check, whether the build loop runs, project |
| One machine, by id, short code or prefix |
opvs machines list
# → name short_id status sidecar_version last_health_check worker_loop_running worker_loop_changed_at project_id
opvs machines get env_3k9x2abErrors
Message | When | What to do |
|---|---|---|
| The id is not a short code, an 8+ character UUID prefix or a UUID | Use a short code like |
opvs engines: engines for the workspace
Command | Does |
|---|---|
| Which engines are on, off, expired or timed |
| Switches an engine off. |
| Switches it back on |
Harness names: claude_code, codex, openhands, opencode, cursor, grok, pi, agy.
opvs engines list
# → harness state reason set by
# → claude_code ON
opvs engines off codex --reason "Provider outage, retrying at 18:00Z" --until +2hErrors
Message | When | What to do |
|---|---|---|
|
| Add |
opvs env routines: scheduled prompts on a desk
Command | Does | Needs |
|---|---|---|
| The desk's routines and their last runs | |
| Replaces every routine from a JSON array | Workspace admin |
| Runs one now; skipped if that session is busy | Workspace admin |
opvs env routines list 3f2b9c1e-7a4d-4e8b-9c2f-1d5e6a7b8c9d
# → on an id that is not one of your desks:
# → Error: environment '3f2b9c1e-7a4d-4e8b-9c2f-1d5e6a7b8c9d' not foundErrors
Message | When | What to do |
|---|---|---|
| No desk with that id in your workspace | Find the id with |
|
| Ask a workspace admin |
opvs projects: projects for the factory
Command | Does |
|---|---|
| Creates a project |
| Adds a board |
| Defaults every card inherits. |
| Project and member-board health. Exit |
| The rules and commands every build in the project receives. |
| Lifecycle status |
| Hides the project; its boards leave it |
opvs projects create -n "Checkout rebuild"
opvs projects health 812228dc-9e9f-4d12-8acb-91054d41ee79 --profile factory
# → Project health — Checkout rebuild
# → Verdict: NOT HEALTHY — at least one check failedErrors
Message | When | What to do |
|---|---|---|
| The id is wrong or belongs to another workspace | Find it with |
Board and card commands the factory uses
Command | Does |
|---|---|
|
|
| Moves a board to one project, leaving the others in one step |
| Claim wiring, roles, dead dependencies. Exit |
| The cards a builder could claim right now |
The errors for these are in the CLI reference.
opvs scheduled-runs: start the factory later
Command | Does |
|---|---|
| Queues a run |
| Manage queued runs |
At --run-at (checked about once a minute) the project, or one board, is armed as if you pressed Play: builders start claiming and those builds spend. It stays armed until someone pauses it. Scheduling itself costs nothing.
opvs scheduled-runs create --project 812228dc-9e9f-4d12-8acb-91054d41ee79 --run-at 2026-11-07T08:00:00Z
opvs scheduled-runs list
# → [] when nothing is queuedErrors
Status | When | What to do |
|---|---|---|
| You are not a workspace admin | Ask a workspace admin |
| The project does not exist | Check the full project UUID |