Skip to content

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.

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, then
http://127.0.0.1:8090. Contexts live in ~/.config/wfx/contexts.json (0600).
Add --json to any listing for machine-readable output.
Command What it does
wfx adapters agents wfnexus drives over ACP (devin, opencode, codex) and whether each is installed
Command What it does
wfx answer <run-id> -m "text" answer an agent’s question
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)
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
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
Command What it does
wfx context add|use|ls|rm … the same profiles under their older name, kept as an alias
Command What it does
wfx doctor what is wired: default model, providers, classifiers, skills
Command What it does
wfx dryrun <workflow> [-i k=v] would it run here? no model, no repo, no writes
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
Command What it does
wfx eval <workflow> --corpus f.yaml --providers a,b [--json] the portability matrix: same workflow, N backends, pass/tokens/$
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
Command What it does
wfx install --skills install every agent skill into ~/.claude and ~/.agents
wfx install --list what this platform ships
Command What it does
wfx judge -q q.yaml --items f.jsonl calibrated typed questions per item (JEV); bands no|uncertain|yes
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)
Command What it does
wfx logout [--url <host>] revoke this host’s token and forget it locally
Command What it does
wfx logs <run-id> [-f] [-v] the activity log (-v: full transcript)
Command What it does
wfx mcp add <name> --set command="npx -y pkg" | --set url=U [--env NAME]… an MCP server; also rm, ls
Command What it does
wfx member add|rm|ls USER --project P | --workflow W [--role R] scoped roles
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
Command What it does
wfx messages [--channel c] [--run id] messages received on channels, newest first, with what each did
Command What it does
wfx models <provider> [--free] the models an acp provider’s agent offers, asked live
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)
Command What it does
wfx new <template> --as <name> copy one into a workflow of your own
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
Command What it does
wfx profile ls | use|switch <name> | current | rm <name> * marks the current one
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)
Command What it does
wfx projects every project: workflows and run activity
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)
Command What it does
wfx pull <digest> materialise a published bundle on the host
Command What it does
wfx reject <run-id> -m "why" reject it
Command What it does
wfx retry <run-id> [--step id] re-run from a step
Command What it does
wfx role ls the four roles
Command What it does
wfx run <workflow> -i k=v [-f] [-v] start a run (-f follows it; -v every tool call)
Command What it does
wfx runs [--project p] [--workflow w] recent runs, newest first
Command What it does
wfx show <run-id> a run, step by step
Command What it does
wfx skill add <name|git-url|path> [--ref r] agent skills onto the current profile’s server; also rm, ls
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
Command What it does
wfx sources [forget <name>] where workflows are loaded from
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
Command What it does
wfx status current context; for a via context, its tunnel
Command What it does
wfx sub ls|show|add|update|pause|resume|rm|validate subscriptions: which chat messages start which workflow (ADR 0026)
Command What it does
wfx team add <name> <pubkey> | remove <name> | list on the server: who may tunnel in
Command What it does
wfx templates [name] starting points to copy — the shape, minus your skills
Command What it does
wfx tool add <name>[@v] [--on worker] install a tool through the server’s carry; also rm, ls
Command What it does
wfx tunnel stop [context] close a context’s tunnel now (else 15 min idle)
Command What it does
wfx user ls | add NAME --role R | disable NAME | passwd [NAME] | role NAME R users (admin)
Command What it does
wfx validate <file.yaml> validate only; writes nothing
Command What it does
wfx version [--json] which binary this is, and where it came from
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
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
Command What it does
wfx workflows list workflows
wfx workflows show <name> every step’s harness: skills, tools, team, budget, gates