{"record":{"id":"35296e59ba3aa7e7","repo":"sgl-project/sglang","slug":"unknown-serve-backend-name-r-available-values","errorCode":null,"errorMessage":"Unknown serve backend {name!r}. Available values: {available}.","messagePattern":"Unknown serve backend (.+?)\\. Available values: (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/cli/serve_backends.py","lineNumber":128,"sourceCode":"        return discovered\n\n    @property\n    def available_names(self) -> tuple[str, ...]:\n        \"\"\"Return backend names without importing out-of-tree packages.\"\"\"\n\n        external_names = sorted(set(self._entry_points) - set(self._builtins))\n        return (*self._builtins, *external_names)\n\n    def get(self, name: str) -> RegisteredServeBackend:\n        \"\"\"Return one backend, importing only the explicitly requested plugin.\"\"\"\n\n        if name in self._loaded:\n            return self._loaded[name]\n\n        candidates = self._entry_points.get(name, [])\n        if not candidates:\n            available = \", \".join((\"auto\", *self.available_names))\n            raise ValueError(\n                f\"Unknown serve backend {name!r}. Available values: {available}.\"\n            )\n        if len(candidates) > 1:\n            providers = \", \".join(\n                sorted(\n                    self._entry_point_provider(candidate) for candidate in candidates\n                )\n            )\n            raise RuntimeError(\n                f\"Multiple distributions register serve backend {name!r}: \"\n                f\"{providers}. Uninstall one provider or choose another backend name.\"\n            )\n\n        entry_point = candidates[0]\n        try:\n            factory = entry_point.load()\n            if not callable(factory):\n                raise TypeError(\"the entry point must resolve to a callable factory\")","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/cli/serve_backends.py#L110-L146","documentation":"Raised by ServeBackendRegistry.get() when the requested backend name has no matching entry point in the 'sglang.serve_backends' registry group. The CLI resolves backends via Python entry points, so a typo or an uninstalled provider package yields this ValueError. The message lists 'auto' plus all registered backend names.","triggerScenarios":"Calling sglang serve --model-type <name> with a name not in registry.available_names; calling registry.get(name) programmatically with a misspelled or unregistered backend; a provider package whose entry points were not installed (pip install -e without regenerating metadata).","commonSituations":"Typo in --model-type (e.g. 'difusion' vs 'diffusion'); expecting a backend from a plugin package that isn't installed in the current venv; stale environment after switching branches of a provider package.","solutions":["Re-run with a name from the message's available list (or omit --model-type to use auto detection).","Fix the typo in --model-type / the name passed to get().","Verify the provider package is installed and exposes an entry point under the 'sglang.serve_backends' group: `pip show <pkg>` and inspect its dist-info entry_points.txt.","If developing a backend, register it via pyproject [project.entry-points.'sglang.serve_backends'] and reinstall."],"exampleFix":"# before\nsglang serve --model-path model --model-type difusion\n# after\nsglang serve --model-path model --model-type diffusion","handlingStrategy":"validation","validationCode":"from sglang.cli.serve_backends import ServeBackendRegistry\nreg = ServeBackendRegistry()\nif name not in reg.available_names and name != \"auto\":\n    raise SystemExit(f\"pick one of: auto, {reg.available_names}\")\nbackend = reg.get(name)","typeGuard":"def is_valid_backend(reg, name: str) -> bool:\n    return name == \"auto\" or name in reg.available_names","tryCatchPattern":"try:\n    backend = registry.get(name)\nexcept ValueError as e:\n    if \"Unknown serve backend\" in str(e):\n        print(f\"invalid backend; available: {registry.available_names}\")\n    raise","preventionTips":["List available backends (registry.available_names) before accepting user input for --model-type.","Validate backend names at CLI-arg parse time rather than deep in registry.get().","Pin provider packages in requirements so expected backends are always installed."],"tags":["sglang","cli","entry-points","plugin-registry","invalid-argument"],"backgroundTag":"plugin-not-found","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}