vllm-project/vllm · error · ValueError

Recipe JSON does not contain an `argv` field

Error message

Recipe JSON does not contain an `argv` field

What it means

recipe_argv() found neither an 'argv' field nor any of the known multi-process fields (head_argv, worker_argv, worker_argvs, prefill, decode, vllm_argv). The JSON object is structurally valid but uses a schema the converter does not recognize at all, so it fails with the generic 'no argv field' error.

Source

Thrown at tools/recipes/recipe_json_to_vllm_config.py:575

    multi_process_fields = [
        k
        for k in (
            "head_argv",
            "worker_argv",
            "worker_argvs",
            "prefill",
            "decode",
            "vllm_argv",
        )
        if k in recipe
    ]
    if multi_process_fields:
        raise ValueError(
            "This recipe is a multi-process deployment and cannot be represented "
            "by one config.yml. Found fields: " + ", ".join(multi_process_fields)
        )

    raise ValueError("Recipe JSON does not contain an `argv` field")


def write_config(
    path: str,
    source: str,
    recipe: dict[str, Any],
    config: dict[str, Any],
) -> None:
    metadata = [
        "# Generated from vLLM Recipes JSON.",
        f"# Source: {source}",
    ]
    for key in ("hardware", "strategy", "variant", "deploy_type"):
        if recipe.get(key) is not None:
            metadata.append(f"# {key}: {recipe[key]}")

    body = yaml.safe_dump(
        config,

View on GitHub (pinned to c794754062)

Solutions

  1. jq 'keys' recipe.json to see which command field it actually has
  2. If a command-like field exists under another name, either rename it to 'argv' locally or update the vllm checkout for the new schema
  3. Make sure you passed the per-hardware recipe JSON (the one with argv/recommended_command), not the model-level JSON
  4. If the API legitimately changed schema, extend recipe_argv() to recognize the new field

Example fix

# before
{"command": ["vllm","serve","m"]}
# after
{"argv": ["vllm","serve","m"]}
Defensive patterns

Strategy: validation

Validate before calling

if "argv" not in recipe:
    raise SystemExit(f"recipe keys: {sorted(recipe)} — no 'argv'; wrong file or schema?")

Type guard

def has_argv(recipe: dict) -> bool:
    return isinstance(recipe.get("argv"), list)

Prevention

When it happens

Trigger: Recipe JSON from a future/older API version with a renamed command field (e.g. 'command', 'cli', 'rendered'); a minimal test fixture containing only metadata; passing an unrelated JSON object (e.g. a models.json entry) as the source.

Common situations: API schema drift; passing the wrong JSON file (model JSON instead of the per-hardware recipe); hand-authored JSON missing the command rendering.

Related errors


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