vllm-project/vllm · error · Error

{kind} parsing is disabled by frontend configuration

Error message

{kind} parsing is disabled by frontend configuration

What it means

EventPublisherFactory resolves the publisher kind from kv_events_config.publisher against a registry containing only 'null' and 'zmq' by default. The configured kind has no registered constructor, so no event publisher can be built.

Source

Thrown at rust/src/chat/src/error.rs:35

    MissingChatTemplate,
    #[error("chat template error: {0}")]
    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(

View on GitHub (pinned to c794754062)

Solutions

  1. Use publisher='zmq' (the only built-in external publisher) or 'null' to disable
  2. For a custom publisher, register it with EventPublisherFactory.register_publisher(name, ctor) in the same process before the engine builds the publisher, and set publisher to that exact name
  3. Check EventPublisherFactory._registry keys at startup to confirm which kinds are available

Example fix

# before
publisher = "kafka"  # not registered

# after
from vllm.distributed.kv_events import EventPublisherFactory, ZmqEventPublisher
EventPublisherFactory.register_publisher("myzmq", ZmqEventPublisher)
publisher = "myzmq"
Defensive patterns

Strategy: validation

Validate before calling

from vllm.distributed.kv_events import EventPublisherFactory
kind = kv_events_config.publisher
assert kind in EventPublisherFactory._registry, f'unknown publisher {kind}; registered: {list(EventPublisherFactory._registry)}'

Type guard

def is_registered_publisher(kind: str) -> bool:
    from vllm.distributed.kv_events import EventPublisherFactory
    return kind in EventPublisherFactory._registry

Prevention

When it happens

Trigger: Setting --kv-events-config publisher to a string other than 'null'/'zmq' (e.g. 'kafka', 'redis'); a publisher registered via register_publisher under a different name than configured; type Literal['null','zmq'] bypassed via raw dict/env config.

Common situations: Expecting a built-in publisher that does not exist in this vLLM version; plugin registered after config parsing or in a different process than the one constructing the publisher; typos in config files.

Related errors


AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14). Data as JSON: /api/errors/2b73f7ef564bc4f0. Report an issue: GitHub.