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
- jq 'keys' recipe.json to see which command field it actually has
- If a command-like field exists under another name, either rename it to 'argv' locally or update the vllm checkout for the new schema
- Make sure you passed the per-hardware recipe JSON (the one with argv/recommended_command), not the model-level JSON
- 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
- Confirm you are passing the per-hardware recipe JSON, not a model or listing JSON
- Assert the expected schema keys in test fixtures for recipe files
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
- Cannot merge nested option {'.'.join(path)!r}: {part!r} is a
- Expected recipe argv to start with: ['vllm', 'serve', MODEL,
- Expected model after 'vllm serve', got {model!r}
- -O is missing its value
- {token} is missing its value
AI-assisted analysis of vllm-project/vllm@c794754062 (2026-08-14).
Data as JSON: /api/errors/1a5f1008269b3360.
Report an issue: GitHub.