vllm-project/vllm · error · Error
{kind} parser `{name}` is not registered{}
Error message
{kind} parser `{name}` is not registered{} What it means
Thrown when a chat frontend requests a named structured-output or tool-call parser by name, but the parser registry has no creator registered under that name. The message is augmented by `available_parser_hint`, which appends the list of registered parser names (e.g. ` (available: guided_json, regex)`). Registry lookups happen in `rust/src/chat/src/parser/tool/mod.rs:156`, `parser/unified.rs:72`, `parser/reasoning/mod.rs:139`, and in `lib.rs:73/84` when the frontend config selects a parser.
Source
Thrown at rust/src/chat/src/error.rs:37
ChatTemplate(String),
#[error("multimodal input is not supported by this chat renderer")]
UnsupportedMultimodalRenderer,
#[error("unsupported multimodal content: {0}")]
UnsupportedMultimodalContent(&'static str),
#[error("`{modality}` input is not supported by this model")]
UnsupportedModality { modality: String },
#[error("At most {limit} {modality}(s) may be provided in one prompt.")]
MmLimitExceeded { modality: String, limit: usize },
#[error("multimodal preprocessing error: {0}")]
Multimodal(#[message] String),
#[error("{kind} parsing is not available for model `{model_id}`")]
ParserUnavailableForModel {
kind: &'static str,
model_id: String,
},
#[error("{kind} parsing is disabled by frontend configuration")]
ParserDisabled { kind: &'static str },
#[error(
"{kind} parser `{name}` is not registered{}",
available_parser_hint(.available_names)
)]
ParserUnavailableByName {
kind: &'static str,
name: String,
available_names: Vec<String>,
},
#[error("failed to initialize {kind} parser `{name}`")]
ParserInitialization {
kind: &'static str,
name: String,
#[source]
error: BoxedError,
},
#[error(
"gpt_oss uses native Harmony output parsing; generic {kind} parser override `{selection}` is not supported"
)]View on GitHub (pinned to c794754062)
Solutions
- Read the `(available: ...)` suffix in the message and switch the config to one of the listed names.
- Check the parser kind: tool parsers, unified (structured) parsers, and reasoning parsers each have separate registries; a name valid for one kind is invalid for another.
- If the parser should exist, rebuild the Rust workspace with the cargo feature that gates it (see rust/src/chat/src/parser/*/mod.rs registration lists).
- Search the codebase for the exact name string to confirm it is registered at startup.
Example fix
// before structured_outputs.parser = "json_mode"; // not registered // after structured_outputs.parser = "guided_json"; // name taken from the available list in the error
Defensive patterns
Strategy: validation
Validate before calling
let registered: &[&str] = registry.available_names(kind);
let name = config.parser_name.as_str();
if !registered.contains(&name) {
return Err(format!("parser `{name}` not registered; available: {registered:?}"));
} Type guard
fn is_registered_parser(registry: &ParserRegistry, kind: ParserKind, name: &str) -> bool {
registry.available_names(kind).iter().any(|n| n == name)
} Try / catch
match result {
Err(vllm_chat::Error::ParserUnavailableByName { name, available_names, .. }) => {
eprintln!("parser `{name}` unknown; pick from {available_names:?}");
}
other => other?,
} Prevention
- Derive parser-name config values from the registry's available_names at startup instead of hardcoding strings.
- Log the registered parser list once at server startup so misconfigurations are obvious.
- Add a config smoke test that resolves every configured parser name before accepting traffic.
When it happens
Trigger: Passing `structured_outputs.parser = "<name>"` or `tool_call_parser = "<name>"` in the Rust frontend config where <name> is misspelled or was compiled out (parser crates are behind feature flags). Calling `ParserRegistry::creator(name)` for a kind (tool / structured / reasoning) whose registry only contains a subset of names.
Common situations: Typos like `hermes` vs `llama3_json`; migrating from Python vLLM where a parser exists but the Rust build does not enable that feature; assuming hermetic-style names, then running against a build compiled without them.
Related errors
- gpt_oss uses native Harmony output parsing; generic {kind} p
- failed to initialize {kind} parser `{name}`
- failed to read chat template file
- chat template looks like a file path but does not exist
- cannot combine `--headless` with `--data-parallel-size-local
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/c7f0efcddc777560.
Report an issue: GitHub.