{"record":{"id":"b5012116d64993be","repo":"vllm-project/vllm","slug":"recipe-deploy-type-deploy-type-r-is-not-a-single","errorCode":null,"errorMessage":"Recipe deploy_type={deploy_type!r} is not a single-node deployment. A single config.yml would not fully represent this deployment.","messagePattern":"Recipe deploy_type=(.+?) is not a single-node deployment\\. A single config\\.yml would not fully represent this deployment\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"tools/recipes/recipe_json_to_vllm_config.py","lineNumber":550,"sourceCode":"            #   --no-enable-prefix-caching -> no-enable-prefix-caching: true\n            value: Any = True\n        elif len(raw_values) == 1:\n            value = coerce(raw_values[0])\n        else:\n            value = [coerce(v) for v in raw_values]\n\n        merge_value(config, normalize_key(key), value)\n\n    return config\n\n\ndef recipe_argv(recipe: dict[str, Any]) -> list[Any]:\n    deploy_type = recipe.get(\"deploy_type\")\n\n    # Current Recipes API's single-node rendering exposes `argv`.\n    if isinstance(recipe.get(\"argv\"), list):\n        if deploy_type not in (None, \"single_node\"):\n            raise ValueError(\n                f\"Recipe deploy_type={deploy_type!r} is not a single-node deployment. \"\n                \"A single config.yml would not fully represent this deployment.\"\n            )\n        return recipe[\"argv\"]\n\n    # Give a useful failure for other known rendered shapes.\n    multi_process_fields = [\n        k\n        for k in (\n            \"head_argv\",\n            \"worker_argv\",\n            \"worker_argvs\",\n            \"prefill\",\n            \"decode\",\n            \"vllm_argv\",\n        )\n        if k in recipe\n    ]","sourceCodeStart":532,"sourceCodeEnd":568,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/tools/recipes/recipe_json_to_vllm_config.py#L532-L568","documentation":"recipe_argv() accepts a recipe's 'argv' field only for single-node deployments. If the recipe object has an 'argv' list but its deploy_type is anything other than None or 'single_node' (e.g. 'multi_node', 'ray_cluster'), the tool refuses to emit one config.yml, since a single node config cannot faithfully represent a distributed deployment.","triggerScenarios":"Passing a recipe JSON whose deploy_type is multi-node/multi-process but which still carries an 'argv' field (some renderings include a representative head-node argv). The converter checks deploy_type first and fails fast.","commonSituations":"Selecting a multi-node recipe (e.g. Ray or deep-seek style P/D deployments) from the Recipes API; hand-passing a cluster recipe file to a tool explicitly designed for single config.yml generation.","solutions":["Check jq '.deploy_type' recipe.json — if it is not single_node/None, this recipe cannot be converted by this tool","Pick the single-node (usually single GPU or single node multi-GPU) hardware rendering for the model instead","For multi-node recipes, follow the Recipes API's own deployment instructions rather than generating config.yml","If you truly have a single-node deployment mislabeled in the JSON, fix deploy_type in the recipe"],"exampleFix":"# before\n{\"deploy_type\": \"multi_node\", \"argv\": [\"vllm\",\"serve\",\"m\",\"--tp\",\"8\"]}\n# after\n{\"deploy_type\": \"single_node\", \"argv\": [\"vllm\",\"serve\",\"m\",\"--tp\",\"8\"]}","handlingStrategy":"validation","validationCode":"dt = recipe.get(\"deploy_type\")\nif \"argv\" in recipe and dt not in (None, \"single_node\"):\n    raise SystemExit(f\"deploy_type={dt!r} cannot be converted to one config.yml\")","typeGuard":"def is_single_node_recipe(recipe: dict) -> bool:\n    return recipe.get(\"deploy_type\") in (None, \"single_node\") and isinstance(recipe.get(\"argv\"), list)","tryCatchPattern":null,"preventionTips":["Filter recipes by deploy_type before feeding them to the converter","Reserve this tool for single-node recipes; multi-node goes through dedicated deployment flows"],"tags":["vllm-recipes","deploy-type","multi-node"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}