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.

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.

Appendix: 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)