coleam00/Archon · error
Node '${node.id}': unknown provider '${provider}'. Registere
Error message
Node '${node.id}': unknown provider '${provider}'. Registered: ${getRegisteredProviders().map(p => p.id).join(', ')} What it means
The DAG executor validates, at node dispatch time, that the node's model provider is registered in the provider registry. If isRegisteredProvider(provider) is false it throws immediately rather than falling back, listing all registered provider ids to make the typo obvious.
Source
Thrown at packages/workflows/src/dag-executor.ts:1731
},
'dag.model_provider_conflict'
);
const delivered = await safeSendMessage(
platform,
conversationId,
`Warning: Node '${node.id}' sets provider '${conflict.declared}' but model '${conflict.modelRef}' resolves to provider '${conflict.resolved}' — using '${conflict.resolved}'.`,
{ workflowId: workflowRunId, nodeName: node.id }
);
if (!delivered) {
getLog().error(
{ nodeId: node.id, workflowRunId },
'dag.model_provider_conflict_warning_delivery_failed'
);
}
}
if (!isRegisteredProvider(provider)) {
throw new Error(
`Node '${node.id}': unknown provider '${provider}'. ` +
`Registered: ${getRegisteredProviders()
.map(p => p.id)
.join(', ')}`
);
}
// Get provider capabilities for capability warnings (static lookup, no instantiation)
const caps = getProviderCapabilities(provider);
// `webSearchMode:` is Codex's alone — no other provider reads it, and #2556
// decided it keeps no node-level form, making it the single workflow-level
// field with no per-node counterpart. There is deliberately no
// ProviderCapabilities axis for one provider's one field.
//
// Reasoning depth is NOT in this category any more: the loader translates the
// deprecated `modelReasoningEffort:` into `effort:`, so the executor sees one
// provider-agnostic field and needs no Codex branch for it.View on GitHub (pinned to 0773b97458)
Solutions
- Set the node's provider to one of the ids listed in the error's 'Registered:' list.
- Fix casing/spelling of the provider id (ids are exact strings).
- Ensure the provider package/registration code is loaded before the run starts (check provider pack setup).
- If the id was renamed in a new version, migrate node configs to the new provider id.
Example fix
// before provider: "anthropic" // after provider: "claude"
Defensive patterns
Strategy: validation
Validate before calling
import { isRegisteredProvider, getRegisteredProviders } from '@archon/providers';
if (!isRegisteredProvider(node.model.provider)) {
throw new Error(`Provider '${node.model.provider}' not registered. Available: ${getRegisteredProviders().map(p => p.id).join(', ')}`);
} Type guard
function isKnownProvider(p: string, known: readonly string[]): p is typeof known[number] {
return (known as readonly string[]).includes(p);
} Try / catch
try {
await runWorkflow(wf);
} catch (e) {
if (String(e).includes('unknown provider')) console.error('Fix provider id; registered:', listProviders());
else throw e;
} Prevention
- Use a shared constant/enum for provider ids, never raw strings in YAML.
- List providers with the CLI before authoring nodes.
- After provider-pack changes, re-run workflow validation.
When it happens
Trigger: A node (or run config) sets model provider to an id string that is not registered — e.g. 'Claude', 'gpt4', 'anthropic' instead of a registered id like 'claude', or a plugin/provider package was not loaded before the run.
Common situations: Typo or wrong casing in the provider field of a workflow node; using a provider from a provider pack that failed to register or was never imported; upgrading Archon and a provider id was renamed; custom provider registration code not running before the DAG starts.
Related errors
- Cannot adopt run '${options.adoptRunId}': workflow '${workfl
- Unknown alias '${ref}'. Defined aliases: ${list}
- Claude skill${unreachable.length === 1 ? '' : 's'} not found
- No chat in context
- Gitea API error: ${String(response.status)} ${response.statu
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/160e7a3a12203d8e.
Report an issue: GitHub.