Every verb, every flag, every alias — grouped, exact, and built to copy straight into a shell.
The index of every command. You already know roughly what you want; find the row, read the one-line note that disambiguates it, and get back to your run. To actually launch a plan, see Quickstart.
| command | args | what it does |
|---|---|---|
| loom | feature-plan.md | build the plan, with the live TUI monitor |
| loom | feature-plan.md --headless | build with plain line output (cron / remote / piped) |
| loom | feature-plan.md --detach | launch in a new session that outlives your shell |
| loom | feature-plan.md --sprints | force the flat sprint pipeline (skip milestone decomposition) |
| loom | feature-plan.md --milestones | force the milestone driver — the default; explicit peer of --sprints |
| loom | feature-plan.md --clean | wipe a botched run (worktree, branch, .loom) then build fresh |
| loom | feature-plan.md --remove | wipe a botched run and exit (abandon the plan) |
--clean first. Both --clean and --remove dry-run by default, printing what they would delete and asking; pass --yes (-y) to skip the confirmation.
Additive (--design) builds the listed surfaces consistent with the app's existing pages; from-scratch (--redesign) designs each from a blank slate. Both take all the same flags as a build run.
| command | args | what it does |
|---|---|---|
| loom | --design pages.md | design the listed pages to match the app's existing pages (additive) |
| loom | --redesign pages.md | design the listed pages from a blank slate (from-scratch) |
| loom | --design-dir / --design-system / --app-facts | override the artifact and discovery paths |
| command | args | what it does |
|---|---|---|
| loom list | — | table of every run: name, state, sprint progress, title (alias ls) |
| loom enter | [<name>] | open a shell in a run's worktree (no name ⇒ the lone active run) |
| loom status | <name> | a run's title, state, paths, branch, and raw ledger |
| loom logs | <name> [-f] | tail a run's activity journal (-f follows until no longer active) |
| loom remove | <name> | tear down a run by name — worktree, branch, .loom dir (alias rm) |
| loom resume | <name> | resume a run by name instead of re-passing its plan path |
| loom mcp | <name> | start a stdio MCP server scoped to one run (read tools for a brain) |
./list.
Name resolution is forgiving: a <name> is matched against display name, friendly handle, full plan id, and plan-id label, trying exact → unique prefix → unique substring. An ambiguous query lists the candidates so you can lengthen it.
| command | args | what it does |
|---|---|---|
| loom | --demo | run the scripted mock engine in the monitor (no agents) |
| loom | --snapshot | print one rendered frame and exit (layout check) |
| loom | --snapshot-session | print one frame with the session modal open (layout check) |
Build with one harness, review with another — one line. A per-role flag wins over the job-wide one; use the separate (--harness opencode) or inline (--harness=opencode) form.
loom --harness-build opencode --harness-review codex feature-plan.md
| flag | args | what it does |
|---|---|---|
| --harness | <id> | set the harness for every role |
| --harness-<role> | <id> | override one role — <role> ∈ plan · build · review · util |
precedence — first-hit-wins per role, all defaulting to claude: --harness-<role> → --harness → .loom/<plan>/harness.toml → claude. Unknown ids fail loudly at startup. For the full per-harness config, see Harnesses.