CLI reference
This page is the output of wfx help on main, reorganised by verb. It is read from the
same string the binary prints, so a command that is not here does not exist.
Verbatim
Section titled “Verbatim”wfx — run agent workflows over a repository
wfx workflows list workflows wfx workflows show <name> every step's harness: skills, tools, team, budget, gates wfx workflow proposals [--project p] [--workflow w] pending workflow changes (git branches/PRs) wfx workflow approve <id> merge a proposal; the project's checkout pulls wfx workflow reject <id> --reason "why" close its PR and delete its branch wfx workflow drift [--project p] workflows changed on disk but never committed wfx workflow drift --propose <w> [--project p] open a proposal from that on-disk change wfx apply <file.yaml> [--project p] validate and install a workflow; a git-backed project gets a proposal wfx apply --from-run <id> install the workflow a run authored (validated first) wfx validate <file.yaml> validate only; writes nothing wfx run <workflow> -i k=v [-f] [-v] start a run (-f follows it; -v every tool call) wfx runs [--project p] [--workflow w] recent runs, newest first wfx login --url <host> sign in to a host (prints a code; no browser needed here) wfx login --url <host> --user N [--provider ldap-name] sign in with a password (WFX_PASSWORD, prompt or stdin) wfx login --approve <code> approve a sign-in code shown elsewhere (e.g. the web UI) wfx logout [--url <host>] revoke this host's token and forget it locally wfx user ls | add NAME --role R | disable NAME | passwd [NAME] | role NAME R users (admin) wfx member add|rm|ls USER --project P | --workflow W [--role R] scoped roles wfx role ls the four roles wfx ui [--url <host>] [--print] open the web UI signed in (one-time link, 60s) wfx profile create <name> --url U [--via ssh://user@host [--key k] [--accept-host-key]] register a server you can already reach (kubectl-style) wfx profile create <name> --install local|ssh://user@host|k8s [--compose|--image] [--version v] [--dry-run] provision the server (install.sh, docker compose, GHCR image or helm), register it, log in wfx profile ls | use|switch <name> | current | rm <name> * marks the current one wfx context add|use|ls|rm … the same profiles under their older name, kept as an alias wfx status current context; for a via context, its tunnel wfx tunnel stop [context] close a context's tunnel now (else 15 min idle) wfx team add <name> <pubkey> | remove <name> | list on the server: who may tunnel in wfx publish <file.yaml> --version v push a workflow and its skills to the host wfx publish <file.yaml> --version v --to <git remote> publish to a git repo instead (no login) wfx pull <digest> materialise a published bundle on the host wfx install --skills install every agent skill into ~/.claude and ~/.agents wfx worker install --to local|ssh://user@host|k8s [--image] [--version v] [--dry-run] put a runner on a machine; then "wfx workers" for its join line wfx skill add <name|git-url|path> [--ref r] agent skills onto the current profile's server; also rm, ls wfx mcp add <name> --set command="npx -y pkg" | --set url=U [--env NAME]… an MCP server; also rm, ls --env names an env-store key; its value is injected at run time, never stored here wfx tool add <name>[@v] [--on worker] install a tool through the server's carry; also rm, ls wfx config put <abs-path> <file> [--on worker] [--to ctx] place a config file; also get, ls, rm wfx config env set K=V | unset K | ls non-secret env defaults (names only are ever shown) wfx config log | rollback <n> | status carry history, roll back, is carry on wfx sync --from <ctx|local:DIR> --to <ctx|local:DIR> [--only files,env] [--dry-run] move config files and env defaults between places wfx version [--json] which binary this is, and where it came from wfx install --list what this platform ships wfx env [--project p] the platform's env store (values are never shown) wfx env set NAME [--plain] read a value without echoing it, store it encrypted wfx state list --workflow what this workflow remembers between runs wfx state set --workflow k v remember it (also --step, --project, --global) wfx state get --step k one value; empty when never written wfx memory ls --workflow w what previous runs of a workflow left behind (on by default) wfx memory show --workflow w the section the next run's agent steps will read, then every entry wfx memory forget --workflow w delete a workflow's memory (or: wfx memory forget <id>) wfx memory add --workflow w "t" write a lesson the next run's agent steps will read wfx memory edit <id> "text" rewrite one entry's text wfx expose hook|mcp <wf> a token-protected hook URL / MCP endpoint for one workflow (--rotate, --revoke) wfx expose mcp --project p one MCP token for every opted-in workflow of a project wfx prices what each model costs per 1M tokens (approx until set) wfx prices set MODEL IN OUT set it, e.g. claude-sonnet 3 15; MODEL * is the fallback wfx prices rm MODEL drop it; a built-in family returns to its default wfx templates [name] starting points to copy — the shape, minus your skills wfx new <template> --as <name> copy one into a workflow of your own wfx adapters agents wfnexus drives over ACP (devin, opencode, codex) and whether each is installed wfx models <provider> [--free] the models an acp provider's agent offers, asked live wfx workers machines in the pool, and the line that adds another wfx workers rm <id> forget a machine wfx workers rotate new join token; machines already joined keep working wfx show <run-id> a run, step by step wfx logs <run-id> [-f] [-v] the activity log (-v: full transcript) wfx approve <run-id> [--as who] approve the step waiting on a human wfx reject <run-id> -m "why" reject it wfx answer <run-id> -m "text" answer an agent's question wfx send [--channel c] [--file f | --url u] [--target t] text send on a channel (the server default if omitted); same path as a send: step wfx messages [--channel c] [--run id] messages received on channels, newest first, with what each did wfx channels channels, which is the default, inbound or not, allow-list size, last receive error wfx channels receive <name> poll an inbound channel now instead of waiting for its interval wfx sub ls|show|add|update|pause|resume|rm|validate subscriptions: which chat messages start which workflow (ADR 0026) wfx dryrun <workflow> [-i k=v] would it run here? no model, no repo, no writes wfx eval <workflow> --corpus f.yaml --providers a,b [--json] the portability matrix: same workflow, N backends, pass/tokens/$ wfx judge -q q.yaml --items f.jsonl calibrated typed questions per item (JEV); bands no|uncertain|yes wfx projects every project: workflows and run activity wfx project add <repo> [--as n] [--category c] add a repo that has .wfx/workflows/ wfx project new <name> [--dir path] [--category c] start an empty project wfx project set <name> --category c what kind of work it does (wfx project categories) wfx project rm <name> forget one (the clone stays on disk) wfx sources [forget <name>] where workflows are loaded from wfx doctor what is wired: default model, providers, classifiers, skills wfx retry <run-id> [--step id] re-run from a step wfx cancel <run-id> wfx registry [skills|tools|providers|classifiers|mcp] wfx skills import <git-url> [--ref r] [--path skills/] [--name n] import a git repo of skills; r is a branch, tag or commit (--branch = --ref) wfx module ls | install <git-url> [--ref r] | sync <source> | config <module> modules: task + module.yaml from the registry (ADR 0028) wfx skills sources skill sources: url, ref, commit, skill count and names wfx skills ref <source> <ref> switch a source to another branch, tag or commit (alias: branch) wfx skills refresh <source> pull a branch source again; a tag or commit is pinned wfx skills remove <source> unload its skills and delete the checkout wfx skills show <source> a source's skills
The API is --url, then $WFX_API, then the current context, thenhttp://127.0.0.1:8090. Contexts live in ~/.config/wfx/contexts.json (0600).Add --json to any listing for machine-readable output.By verb
Section titled “By verb”wfx adapters
Section titled “wfx adapters”| Command | What it does |
|---|---|
wfx adapters |
agents wfnexus drives over ACP (devin, opencode, codex) and whether each is installed |
wfx answer
Section titled “wfx answer”| Command | What it does |
|---|---|
wfx answer <run-id> -m "text" |
answer an agent’s question |
wfx apply
Section titled “wfx apply”| Command | What it does |
|---|---|
wfx apply <file.yaml> [--project p] |
validate and install a workflow; a git-backed project gets a proposal |
wfx apply --from-run <id> |
install the workflow a run authored (validated first) |
wfx channels
Section titled “wfx channels”| Command | What it does |
|---|---|
wfx channels |
channels, which is the default, inbound or not, allow-list size, last receive error |
wfx channels receive <name> |
poll an inbound channel now instead of waiting for its interval |
wfx config
Section titled “wfx config”| Command | What it does |
|---|---|
wfx config put <abs-path> <file> [--on worker] [--to ctx] |
place a config file; also get, ls, rm |
wfx config env set K=V | unset K | ls |
non-secret env defaults (names only are ever shown) |
wfx config log | rollback <n> | status |
carry history, roll back, is carry on |
wfx context
Section titled “wfx context”| Command | What it does |
|---|---|
wfx context add|use|ls|rm … |
the same profiles under their older name, kept as an alias |
wfx doctor
Section titled “wfx doctor”| Command | What it does |
|---|---|
wfx doctor |
what is wired: default model, providers, classifiers, skills |
wfx dryrun
Section titled “wfx dryrun”| Command | What it does |
|---|---|
wfx dryrun <workflow> [-i k=v] |
would it run here? no model, no repo, no writes |
wfx env
Section titled “wfx env”| Command | What it does |
|---|---|
wfx env [--project p] |
the platform’s env store (values are never shown) |
wfx env set NAME [--plain] |
read a value without echoing it, store it encrypted |
wfx eval
Section titled “wfx eval”| Command | What it does |
|---|---|
wfx eval <workflow> --corpus f.yaml --providers a,b [--json] |
the portability matrix: same workflow, N backends, pass/tokens/$ |
wfx expose
Section titled “wfx expose”| Command | What it does |
|---|---|
wfx expose hook|mcp <wf> |
a token-protected hook URL / MCP endpoint for one workflow (–rotate, –revoke) |
wfx expose mcp --project p |
one MCP token for every opted-in workflow of a project |
wfx install
Section titled “wfx install”| Command | What it does |
|---|---|
wfx install --skills |
install every agent skill into ~/.claude and ~/.agents |
wfx install --list |
what this platform ships |
wfx judge
Section titled “wfx judge”| Command | What it does |
|---|---|
wfx judge -q q.yaml --items f.jsonl |
calibrated typed questions per item (JEV); bands no|uncertain|yes |
wfx login
Section titled “wfx login”| Command | What it does |
|---|---|
wfx login --url <host> |
sign in to a host (prints a code; no browser needed here) |
wfx login --url <host> --user N [--provider ldap-name] |
sign in with a password (WFX_PASSWORD, prompt or stdin) |
wfx login --approve <code> |
approve a sign-in code shown elsewhere (e.g. the web UI) |
wfx logout
Section titled “wfx logout”| Command | What it does |
|---|---|
wfx logout [--url <host>] |
revoke this host’s token and forget it locally |
wfx logs
Section titled “wfx logs”| Command | What it does |
|---|---|
wfx logs <run-id> [-f] [-v] |
the activity log (-v: full transcript) |
wfx mcp
Section titled “wfx mcp”| Command | What it does |
|---|---|
wfx mcp add <name> --set command="npx -y pkg" | --set url=U [--env NAME]… |
an MCP server; also rm, ls |
wfx member
Section titled “wfx member”| Command | What it does |
|---|---|
wfx member add|rm|ls USER --project P | --workflow W [--role R] |
scoped roles |
wfx memory
Section titled “wfx memory”| Command | What it does |
|---|---|
wfx memory ls --workflow w |
what previous runs of a workflow left behind (on by default) |
wfx memory show --workflow w |
the section the next run’s agent steps will read, then every entry |
wfx memory forget --workflow w |
delete a workflow’s memory (or: wfx memory forget <id>) |
wfx memory add --workflow w "t" |
write a lesson the next run’s agent steps will read |
wfx memory edit <id> "text" |
rewrite one entry’s text |
wfx messages
Section titled “wfx messages”| Command | What it does |
|---|---|
wfx messages [--channel c] [--run id] |
messages received on channels, newest first, with what each did |
wfx models
Section titled “wfx models”| Command | What it does |
|---|---|
wfx models <provider> [--free] |
the models an acp provider’s agent offers, asked live |
wfx module
Section titled “wfx module”| Command | What it does |
|---|---|
wfx module ls | install <git-url> [--ref r] | sync <source> | config <module> |
modules: task + module.yaml from the registry (ADR 0028) |
wfx new
Section titled “wfx new”| Command | What it does |
|---|---|
wfx new <template> --as <name> |
copy one into a workflow of your own |
wfx prices
Section titled “wfx prices”| Command | What it does |
|---|---|
wfx prices |
what each model costs per 1M tokens (approx until set) |
wfx prices set MODEL IN OUT |
set it, e.g. claude-sonnet 3 15; MODEL * is the fallback |
wfx prices rm MODEL |
drop it; a built-in family returns to its default |
wfx profile
Section titled “wfx profile”| Command | What it does |
|---|---|
wfx profile ls | use|switch <name> | current | rm <name> |
* marks the current one |
wfx project
Section titled “wfx project”| Command | What it does |
|---|---|
wfx project add <repo> [--as n] [--category c] |
add a repo that has .wfx/workflows/ |
wfx project new <name> [--dir path] [--category c] |
start an empty project |
wfx project set <name> --category c |
what kind of work it does (wfx project categories) |
wfx project rm <name> |
forget one (the clone stays on disk) |
wfx projects
Section titled “wfx projects”| Command | What it does |
|---|---|
wfx projects |
every project: workflows and run activity |
wfx publish
Section titled “wfx publish”| Command | What it does |
|---|---|
wfx publish <file.yaml> --version v |
push a workflow and its skills to the host |
wfx publish <file.yaml> --version v --to <git remote> |
publish to a git repo instead (no login) |
wfx pull
Section titled “wfx pull”| Command | What it does |
|---|---|
wfx pull <digest> |
materialise a published bundle on the host |
wfx reject
Section titled “wfx reject”| Command | What it does |
|---|---|
wfx reject <run-id> -m "why" |
reject it |
wfx retry
Section titled “wfx retry”| Command | What it does |
|---|---|
wfx retry <run-id> [--step id] |
re-run from a step |
wfx role
Section titled “wfx role”| Command | What it does |
|---|---|
wfx role ls |
the four roles |
wfx run
Section titled “wfx run”| Command | What it does |
|---|---|
wfx run <workflow> -i k=v [-f] [-v] |
start a run (-f follows it; -v every tool call) |
wfx runs
Section titled “wfx runs”| Command | What it does |
|---|---|
wfx runs [--project p] [--workflow w] |
recent runs, newest first |
wfx show
Section titled “wfx show”| Command | What it does |
|---|---|
wfx show <run-id> |
a run, step by step |
wfx skill
Section titled “wfx skill”| Command | What it does |
|---|---|
wfx skill add <name|git-url|path> [--ref r] |
agent skills onto the current profile’s server; also rm, ls |
wfx skills
Section titled “wfx skills”| Command | What it does |
|---|---|
wfx skills import <git-url> [--ref r] [--path skills/] [--name n] |
import a git repo of skills; r is a branch, tag or commit (–branch = –ref) |
wfx skills sources |
skill sources: url, ref, commit, skill count and names |
wfx skills ref <source> <ref> |
switch a source to another branch, tag or commit (alias: branch) |
wfx skills refresh <source> |
pull a branch source again; a tag or commit is pinned |
wfx skills remove <source> |
unload its skills and delete the checkout |
wfx skills show <source> |
a source’s skills |
wfx sources
Section titled “wfx sources”| Command | What it does |
|---|---|
wfx sources [forget <name>] |
where workflows are loaded from |
wfx state
Section titled “wfx state”| Command | What it does |
|---|---|
wfx state list --workflow |
what this workflow remembers between runs |
wfx state set --workflow k v |
remember it (also –step, –project, –global) |
wfx state get --step k |
one value; empty when never written |
wfx status
Section titled “wfx status”| Command | What it does |
|---|---|
wfx status |
current context; for a via context, its tunnel |
wfx sub
Section titled “wfx sub”| Command | What it does |
|---|---|
wfx sub ls|show|add|update|pause|resume|rm|validate |
subscriptions: which chat messages start which workflow (ADR 0026) |
wfx team
Section titled “wfx team”| Command | What it does |
|---|---|
wfx team add <name> <pubkey> | remove <name> | list |
on the server: who may tunnel in |
wfx templates
Section titled “wfx templates”| Command | What it does |
|---|---|
wfx templates [name] |
starting points to copy — the shape, minus your skills |
wfx tool
Section titled “wfx tool”| Command | What it does |
|---|---|
wfx tool add <name>[@v] [--on worker] |
install a tool through the server’s carry; also rm, ls |
wfx tunnel
Section titled “wfx tunnel”| Command | What it does |
|---|---|
wfx tunnel stop [context] |
close a context’s tunnel now (else 15 min idle) |
wfx user
Section titled “wfx user”| Command | What it does |
|---|---|
wfx user ls | add NAME --role R | disable NAME | passwd [NAME] | role NAME R |
users (admin) |
wfx validate
Section titled “wfx validate”| Command | What it does |
|---|---|
wfx validate <file.yaml> |
validate only; writes nothing |
wfx version
Section titled “wfx version”| Command | What it does |
|---|---|
wfx version [--json] |
which binary this is, and where it came from |
wfx workers
Section titled “wfx workers”| Command | What it does |
|---|---|
wfx workers |
machines in the pool, and the line that adds another |
wfx workers rm <id> |
forget a machine |
wfx workers rotate |
new join token; machines already joined keep working |
wfx workflow
Section titled “wfx workflow”| Command | What it does |
|---|---|
wfx workflow proposals [--project p] [--workflow w] |
pending workflow changes (git branches/PRs) |
wfx workflow approve <id> |
merge a proposal; the project’s checkout pulls |
wfx workflow reject <id> --reason "why" |
close its PR and delete its branch |
wfx workflow drift --propose <w> [--project p] |
open a proposal from that on-disk change |
wfx workflows
Section titled “wfx workflows”| Command | What it does |
|---|---|
wfx workflows |
list workflows |
wfx workflows show <name> |
every step’s harness: skills, tools, team, budget, gates |