Skip to main content
Early Access. Commands and behavior can change between releases.
Factory commands live under architech factory, not mutagent factory. Run them in your shell. Inside Architech, /factory shows Factory state; it is not the shell CLI.
The catalog and per-command help describe the version installed on your machine. This page lists the commands you use. Stage sessions also have session finish, session lane and session ask; these use the stage’s own credentials, not your sign-in.

Output and shared options

With --json, each call prints one {ok, data, next} object to stdout. On failure, read error.code, error.reason and error.fix. next suggests next commands, with reasons; review them before you act. Consent URLs and streamed events go to stderr.

Configuration

--dry-run on push or pull writes and commits nothing; push still asks Cloud what would change. Pushing adds your installed release’s framework pin only if the file has none; an existing pin stays. A successful push can still leave the file uncommitted, for example on a detached HEAD or when the commit fails. See factory.yaml for how the versions differ.

Setup and connections

The Factory ID is metadata.name. Use the IDs commands return, including the binding ID from a board response.
Push reports linked, board and drift; status shows the same setup state. Push doesn’t link repositories or bind the board. Connect GitHub on Cloud, push the file, then run architech factory board bind <factory> once if the board is not bound.

Runs, gates and questions

runs approve --sub-item <key> restricts PR approval to one sub-item. Without it, PR approval covers all sub-items waiting at that gate; review their PRs before approving. A plan approval can’t carry corrections: a --note with changes is refused. Use --reject with your note, or the changes label.

Triggers

Triggers start work; they never approve a gate. Event kinds: board.status, board.label, board.comment, board.assigned, github.pr.approved, github.pr.merged, github.ci-failed, run.request, slack.mention, webhook and trace.threshold. With no triggers of your own, a Factory starts plan when an item gets a pickup label or is assigned to factory, and build when CI fails on a factory/* branch. Whichever trigger fires, a run from the board also needs every pickup label and no hold label.
The create example changes your Cloud configuration. List existing triggers first so you don’t duplicate board pickup. You can repeat --filter key=value. --priority <integer> decides which matching trigger runs first (higher first). An event file holds JSON such as:
Triggers can start plan, or build for github.ci-failed. They can’t skip an approval. triggers fire runs a schedule trigger (a routine) now, by its name in factory.yaml; add --factory <id> for another Factory and --key <key> to make a retry run it only once. See routines. The delete command above removes triggers created through the API, such as with triggers create. To change a trigger, edit triggers in the file and push; see factory.yaml triggers and the Triggers and routines.
triggers create and board unbind warn factory.yaml is now behind when this checkout has the matching file but the file can’t hold the change. A push after unbind reports the binding state; run board bind to reconnect. A trigger created through the API lives only on Cloud.

Workspace display setting

Workspace admins can turn the workspace’s Software Factory UI mode on or off. This doesn’t enable or disable a Factory’s triggers, and it isn’t a factory.yaml field.

Exit codes