Skip to content

wb-flow CLI Reference Annex ​

The wb-flow command line interface acts as the backbone for the slash-command ecosystem, providing infrastructure orchestration, linting, model discovery, and archiving capabilities.

Below is a comprehensive list of all native wb-flow subcommands and their supported flags.

⚡wb-flow CLI Subcommand Explorer
Model Roster & Fallback Writer
wb-flow model --pick --probe --all
terminal execution — wb-flow model
Key Flags:
--pick (-i) — Interactive tree-picker UI--probe — Live API reachability & balance test--all (-a) — Pre-probe catalog (ordered by Role)--all=raw — Stream every result, failures included--all=<provider> — Probe one provider only (anthropic, openai…)--all=<role> — Probe one role only (planner, worker…)

1. wb-flow init ​

Role: Wires the /wb* slash-commands into your installed AI assistants and seeds the model roster.

FlagShortcutDescription
--scope=<val>global (machine-wide) or project (local to .wb/)
--agents=<val>Comma-separated list of agents to wire (e.g., claude,opencode)
--templates=<path>Reuse an existing templates root directory
--yes-yRun unattended, accepting defaults
--force-fOverwrite existing wrappers/files
--dry-run-nPreview changes without writing
--help-hShow usage

2. wb-flow model ​

Role: The single writer of the model roster. Pre-probes catalogs, manages default AI selections via interactive pickers, and supports .env credential loading.

FlagShortcutDescription
--pick-iOpens an interactive tree-picker annotated with qualification badges
--probeDispatches real inference calls to verify balance and reachability
--all-aPre-probes catalog. Default orders by Role (reachable only).
--all=rawStreams all models as probed (including unreachable).
--all=<provider>Filters pre-probe to a specific provider, grouped by role (same as --all=<role>).
--all=<role>Filters pre-probe to a specific role.
--detect--resetRe-derive available models from installed CLIs
--set <role>=<slug>Manually set a model for a specific role (planner, worker, etc.)
--timeout=<ms>Max timeout for model probe requests (default 45000)
--file=<path>Custom output file for the roster (default commands/model_recommendations.md)
--models=<path>Custom path to the JSON catalog (models.json)
--jsonPrint the model roster in JSON format
--yes-yAutonomous execution mode
--dry-run-nPreview changes without writing
--help-hShow usage

Both --probe paths behave identically. wb-flow model --probe --all[=…] works the same with or without --pick: the same catalog-authoritative routing (so anthropic/* probes via claude and openai/* via codex, not opencode) and the same filters. --all= with an empty value means --all, and an unrecognised filter reports an error rather than probing nothing.


3. wb-flow wave ​

Role: The wave orchestration engine. Converts a plan file's ## 🌊 Next Executable Sequence DAG matrix into collision-free parallel background dispatches.

FlagShortcutDescription
--validateRuns the wave in validation mode
--sessionsReuses one warm opencode session per model for speed
--summaryStreams only decision lines (G1/G2/G3, VERDICT) to the terminal
--no-summaryStreams full raw output to terminal for debugging
--printPrints the wave evaluation state
--listDry-run the routing: prints 📋 Roster in effect: (the resolved roster file), the full model chain per role, and the model each cell would dispatch to. Read-only — spawns nothing. This, not wb-flow model --show, is authoritative for what a wave will run.
--self-test-gatesInternal testing flag for wave gating
--self-test-oracleInternal testing flag for wave oracles
--help-hShow usage

4. wb-flow watch ​

Role: Live dashboard of background cells. Renders progress as a share of the plan's budget, marking cells as hung, running, or ended.

FlagShortcutDescription
--run=<name>Watch a specific running wave
--plan=<path>Watch waves tied to a specific plan
--interval=<sec>Refresh interval in seconds (default 5)
--once-1Print a single static snapshot and exit
--listList the recent wave runs
--help-hShow usage

5. wb-flow archive ​

Role: Retires superseded daily reports so a scope's reports/ tree holds only the current file per category, keeping paths intact.

FlagShortcutDescription
--recursive-RArchive files across a whole monorepo
--keep=<num>Number of newest reports to keep (default 1)
--before=<date>Archive reports older than YYYYMMDD
--type=<val>Comma-separated list of types to target
--include-standupsExempts standups from the ignore list (danger)
--include-tracksExempts tracks from the ignore list (danger)
--no-bannerSuppresses the archive stamp injected into files
--no-logSuppresses archive logging
--listPrints candidate files without moving them
--allTarget everything
--jsonOutput JSON array of targeted files
--dry-run-nPreview changes without moving
--help-hShow usage

6. wb-flow snap ​

Role: Snapshots and pins the output of a run into a static reference folder (.wb/snaps/).

FlagShortcutDescription
--label=<val>Names the snapshot folder
--copyFreezes the content physically (instead of a symlink)
--root=<path>Explicit path to project root
--listList available snapshots
--jsonOutput in JSON format
--dry-run-nPreview without creating
--help-hShow usage

7. wb-flow lint ​

Role: Checks plan files against the output conventions and sync rules to catch structural errors before closing a plan.

FlagShortcutDescription
--help-hShow usage

8. wb-flow next ​

Role: Calculates the ## 🌊 Next Executable Sequence matrix and determines the next logical dispatch.

FlagShortcutDescription
<plan.md>Path to the plan file to evaluate
--embedModifies the target plan.md in place to embed the block
--jsonOutputs the calculated next state in JSON
--help-hShow usage

wb-flow model --sync-catalog ​

Fills models.json from what this machine can actually reach — enumerating each installed CLI, curating the result, and three-way-merging it into the existing catalog.

FlagEffect
--sync-catalog (--sync)refresh every provider already in the catalog
--add=<a,b,c>scoped sync over named providers; aliases accepted (codex=openai, zen=opencode-zen, go=opencode-go, agy=antigravity, grok=xai)
--remove=<a,b,c>drop providers; refuses one the live roster names without --force
--strictwith --add, fail if any named provider could not be filled (default: partial success exits 0)
--from-picker / --from-file=<p>fill a non-enumerable provider from its own interactive picker text
--probeconfirm entitlements by dispatching one call per candidate — real API calls, never under a plain sync
--prunedelete retired models instead of marking them
--forceallow --prune/--remove to touch a roster-referenced slug
--dry-run / --jsonboth write nothing

Writes atomically (.tmp + rename) keeping the previous file as .bak, and refuses to overwrite a catalog it cannot parse.

Model chains on any dispatch flag ​

-M / --model= and the per-role --planner= --validator= --worker= --mech= (short: -p= -v= -w= -m=) all accept a fallback chain:

bash
-M=openai/gpt-5.5,anthropic/claude-fable-5,gemini-3.1-pro-high   # commas — the emitted form
-M=$WORKER                                                        # a role variable

Links are tried left to right, advancing only on a Gate-1/INFRA failure, and every link is validated at parse time — a typo in position 3 is reported immediately, not hours later when the head rate-limits. See model-fallback-chains.md.