anthropic |
http |
claude-opus-4-5 |
ANTHROPIC_API_KEY |
Anthropic’s native Messages API — style anthropic, not the OpenAI framing. baseUrl from platform.claude.com/docs/en/api/messages (2026-09-24); the host is bare, /v1/messages is the path. ANTHROPIC_API_KEY is the SDK convention, not stated on that page. |
cerebras |
http |
qwen-3.8-27b |
CEREBRAS_API_KEY |
Cerebras inference, OpenAI-compatible. From inference-docs.cerebras.ai/resources/openai (2026-09-24). |
claude-cli |
cli (claude) |
|
|
The local claude CLI as the model — your own subscription seat, not an API key. Verified live 2026-09-24 (claude -p <prompt> --model <m>, 4.7s). READ THIS BEFORE AUTOMATING IT: Anthropic’s Consumer Terms, Prohibited Uses, say “Except when you are accessing our Services via an Anthropic API Key or where we otherwise explicitly permit it, to access the Services through automated or non-human means, whether through a bot, script, or otherwise.” A pipeline exec’ing this CLI is script-driven access on a subscription seat, so on the plain reading it is the thing that clause names. The clause’s own carve-out is an API key — use the anthropic http provider for automation. (anthropic.com/legal/consumer-terms, read 2026-09-24.) We enforce nothing; this is your call with your own account, and the entry says so rather than staying quiet. |
claude-headless |
cli (claude) |
sonnet |
|
claude -p (sonnet) as the model, headless: one turn per call, prompt on stdin, no built-in tools, no slash commands, no session persistence — the step’s tools and skills run in wfnexus’s in-built toolnexus loop, never inside claude. Same subscription-seat TERMS caveat as claude-cli; for unattended automation use the API-key http provider instead. |
codex-acp |
acp (codex) |
gpt-5.5 |
|
OpenAI Codex over the Agent Client Protocol, through Zed’s @zed-industries/codex-acp adapter (run with npx). Uses codex’s own login (codex login). Advertises gpt-5.5, gpt-5.4, gpt-5.4-mini… as a model option; measured live 2026-09-27. gpt-5.5 because a ChatGPT-account login refuses the others it advertises (gpt-5.4-mini: “not supported when using Codex with a ChatGPT account”, measured 2026-09-27); an API-key login can pick any. TERMS: the same as codex-cli — it runs on whatever codex is logged in with. A ChatGPT-account login is a subscription seat driven by a program, and OpenAI’s terms were not read (see codex-cli), so none is asserted; an API-key login is billed per token under OpenAI’s API terms. |
codex-cli |
cli |
|
|
OpenAI’s codex CLI as the model, on your own ChatGPT plan. codex exec is its documented non-interactive entry; –skip-git-repo-check because a turn runs in a scratch workdir, –color never so the reply carries no escapes. Verified live 2026-09-24 (12.7s, clean stdout). TERMS: UNVERIFIED — every OpenAI policy page returned HTTP 403 to the machine that checked on 2026-09-24, so no clause was actually read and none is asserted here. Treat it as you would claude-cli until you have read openai.com/policies/terms-of-use yourself: a subscription seat driven by a program may not be a permitted backend. The unambiguous path is the openai http provider with your own API key. |
copilot-cli |
cli |
|
|
GitHub Copilot’s CLI as the model, on your own seat. An explicit command rather than the preset because copilot’s own help calls –allow-all-tools “required for non-interactive mode”; without it the run waits for a confirmation nobody is there to give. Verified live 2026-09-24 (18.3s). TERMS: UNRESOLVED, and read conservatively. Neither the Copilot Product Specific Terms nor GitHub’s Acceptable Use Policies contain a clause on programmatic or scripted use of a seat; the nearest is the AUP’s ban on “excessive automated bulk activity”, which is a volume ceiling rather than a prohibition. So: not known to be forbidden, not known to be allowed, and bulk use is the part that is explicitly at risk. (Read 2026-09-24.) |
deepseek |
http |
deepseek-flash |
DEEPSEEK_API_KEY |
DeepSeek, OpenAI-compatible. Their docs show the bare host; /v1 also works and is not a model version. From api-docs.deepseek.com (2026-09-24). |
devin |
acp (devin) |
|
|
Devin as the model, over the Agent Client Protocol. Verified live 2026-09-24 (14.8s). TERMS: UNRESOLVED. Cognition’s Platform Terms §2.3 restrict competing products and making the Services available to anyone who is not an Authorized User, but say nothing either way about programmatic access by the seat holder themselves. Their Acceptable Use Policy was not fetched and may add a clause about autonomous interaction with third-party systems. One seat, one human — do not let a pipeline turn it into shared access. (Read 2026-09-24.) |
devin-headless |
cli (devin) |
|
|
devin -p as the model, headless: a fresh process per turn, prompt by –prompt-file, the step’s tools and skills run in wfnexus’s in-built toolnexus loop. Slower than the devin acp entry (no long-lived process) but needs no ACP session. Same TERMS caveat as devin: one seat, one human. |
fireworks |
http |
accounts/fireworks/models/llama-v3p1-8b-instruct |
OPENAI_API_KEY |
Fireworks AI, OpenAI-compatible. From docs.fireworks.ai/tools-sdks/openai-compatibility (2026-09-24). Their compat page reuses OPENAI_API_KEY as the variable name; FIREWORKS_API_KEY appears elsewhere in their docs but was NOT confirmed on a fetched page, so the name here is the one that was. |
gemini |
http |
gemini-2.5-flash |
GEMINI_API_KEY |
Google Gemini through its OpenAI-compatible endpoint (ai.google.dev/gemini-api/docs/openai): baseUrl + model verified live 2026-09-27 with a chat completion. A different vendor from the OpenRouter default, which is what an adversarial reviewer step wants; GEMINI_API_KEY is an AI Studio key. |
gpt |
http |
openai/gpt-4o |
OPENROUTER_API_KEY |
A second opinion from a different family, for review steps. |
gpt-oss |
http |
openai/gpt-oss-120b |
OPENROUTER_API_KEY |
OpenAI gpt-oss-120b through OpenRouter — a large open-weight second opinion for evaluating runs |
gpt5 |
http |
openai/gpt-5.6-luna |
OPENROUTER_API_KEY |
OpenAI gpt-5.6-luna through OpenRouter — a strong non-Claude model for reviewing what a Claude agent wrote. Chosen after gpt-4o, as workflow-doctor’s reviewer, approved without reading the diff and then could not extract one (2026-09-27). |
grok-cli |
cli |
|
|
Grok CLI headless (-p) — xAI agent on this machine, billed to the Grok login. TERMS: UNVERIFIED — it runs on your own Grok/xAI login and no xAI terms were read for this entry, so none is asserted; check xAI’s terms before letting a pipeline drive a personal seat. |
groq |
http |
openai/gpt-oss-120b |
GROQ_API_KEY |
Groq, OpenAI-compatible. The /openai segment in the path is required and is easy to drop. From console.groq.com/docs/openai (2026-09-24). |
haiku |
http |
anthropic/claude-haiku-4.5 |
OPENROUTER_API_KEY |
Cheaper and faster; good for survey and triage steps. |
llamacpp |
http |
local-model |
|
llama.cpp’s llama-server, OpenAI-compatible. Default port 8080, binding 127.0.0.1, from the llama.cpp server README (2026-09-24). The model id is the loaded GGUF — the docs name none, so the one here is a placeholder you must change. llama-server can enforce a key with –api-key. NO REAL KEY IS NEEDED. No apiKeyEnv: a self-hosted endpoint on your own network needs no key, and that is the point — the model is yours and nothing leaves. |
lmstudio |
http |
local-model |
|
LM Studio’s local server, OpenAI-compatible. Default port 1234, from lmstudio.ai/docs/developer/openai-compat (2026-09-24). The model id is whichever model you have LOADED — the docs name none, so the one here is a placeholder you must change. LM Studio can be configured to enforce a bearer token. NO REAL KEY IS NEEDED. No apiKeyEnv: a self-hosted endpoint on your own network needs no key, and that is the point — the model is yours and nothing leaves. |
mistral |
http |
mistral-medium-3-5-26-04 |
MISTRAL_API_KEY |
Mistral’s API, OpenAI-compatible. From docs.mistral.ai/api (2026-09-24). |
mock |
mock |
|
|
Produces turns without a model: it reads the step’s submit_output schema and submits a value that satisfies it. Needs no key, no binary and no network, so a workflow can be RUN — gates, facts, budgets, the typed contract — before anything is configured. It proves the WIRING and never the answer; every string it produces says mock so no output can be mistaken for a real one. Cost is a true $0.00. |
ollama-cli |
cli |
|
|
A local model through ollama run. No account, no key, no network, and no terms question — ollama is MIT and a local inference run touches no vendor service, so this is the free way to prove a workflow is portable. (ollama.com’s own terms do restrict automated access to their website and registry; that reads on ollama pull, not on a model already on disk.) NOTE: ollama run MODEL [PROMPT] takes the model POSITIONALLY and has no –model flag, so the model is baked into the command and modelFlag is empty; a step’s model: cannot override it — use ollama-http for that. Verified live 2026-09-24 (qwen3:4b, 2.9s). |
ollama-http |
http |
qwen3:4b |
|
Ollama’s own OpenAI-compatible endpoint — the same local models over HTTP instead of the CLI, so a step’s model: actually selects one (the CLI entry cannot, see ollama-cli). Default port 11434, from docs.ollama.com/api/openai-compatibility (2026-09-24). Verified live on this machine 2026-09-24: a real 200 with an OpenAI-shaped body. NO REAL KEY IS NEEDED. No apiKeyEnv: a self-hosted endpoint on your own network needs no key, and that is the point — the model is yours and nothing leaves. |
openai |
http |
gpt-6-astra |
OPENAI_API_KEY |
OpenAI’s own API. baseUrl from developers.openai.com/api/docs/quickstart (2026-09-24). |
opencode |
cli (opencode) |
opencode/ling-3.1-flash-free |
|
THE SHIPPED DEFAULT (WFX_DEFAULT_PROVIDER=opencode). opencode run -m <model> as the model, headless: a fresh process per turn, prompt on stdin, the step’s tools and skills run in wfnexus’s in-built toolnexus loop. Default is a FREE opencode Zen model (no key, no login): on 2026-10-14 opencode’s service began refusing the free models over ACP (“OpenCode’s free tier can only be used from within OpenCode”) while opencode run still serves them, so this — not opencode-acp — is the default. ling-3.1-flash-free answered a commit-classification check correctly in 4s that day (space-bunny-free 1s but dropped from the ACP free list; mimo-v2.6-flash-free 10s). opencode models | grep -- -free lists today’s free ids; a step picks one with model:. TERMS: opencode itself is MIT. The free Zen models run on opencode’s hosted service; any other provider you configure carries that provider’s terms. |
opencode-acp |
acp (opencode) |
opencode/space-bunny-free |
|
NOT THE DEFAULT ANY MORE: since 2026-10-14 opencode refuses its free Zen models over ACP (“OpenCode’s free tier can only be used from within OpenCode”), so every call on the model below fails; use the opencode cli entry for free models, and this one only with a logged-in paid provider (model: <provider>/<id>). opencode over the Agent Client Protocol: one warm session per step, the model chosen over the protocol. Its model was a FREE model (opencode Zen, no key): space-bunny-free was the fastest of the free models that scored 7/7 on a commit-classification check (10s; ling/muse 21s, mimo 37s, nemotron-ultra 76s; longcat returned invalid JSON, nemotron-lightning hung) on 2026-09-27. wfx models opencode-acp --free lists them all. TERMS: opencode itself is MIT. The credential is whatever opencode is configured with: the free Zen models need no key and run on opencode’s hosted service; any other provider carries that provider’s terms (see opencode). |
openrouter |
http |
anthropic/claude-sonnet-4.5 |
OPENROUTER_API_KEY |
OpenRouter’s whole catalogue behind one key — name any of its models with a step’s model:. From openrouter.ai/docs/quickstart (2026-09-24). |
sonnet |
http |
anthropic/claude-sonnet-4.5 |
OPENROUTER_API_KEY |
Claude Sonnet 4.5 via OpenRouter — the default worker. |
together |
http |
meta-llama/Llama-3.3-70B-Instruct-Turbo |
TOGETHER_API_KEY |
Together AI, OpenAI-compatible. From docs.together.ai/docs/openai-api-compatibility (2026-09-24). |
vllm |
http |
Qwen/Qwen2.5-1.5B-Instruct |
|
A self-hosted vLLM server, OpenAI-compatible — the enterprise case: their own weights, their own hardware, nothing leaves. Default port 8000, from docs.vllm.ai quickstart (2026-09-24). Point baseUrl at your own host and set model to whatever you served. NO REAL KEY IS NEEDED. No apiKeyEnv: a self-hosted endpoint on your own network needs no key, and that is the point — the model is yours and nothing leaves. |
xai |
http |
grok-4.7 |
XAI_API_KEY |
xAI (Grok), OpenAI-compatible. From docs.x.ai/docs/overview (2026-09-24). |