{"record":{"id":"f6a8fe106d989a22","repo":"zylon-ai/private-gpt","slug":"sandbox-provider-name-is-not-registered-avail","errorCode":null,"errorMessage":"Sandbox provider '{name}' is not registered. Available: {available}","messagePattern":"Sandbox provider '(.+?)' is not registered\\. Available: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"private_gpt/components/sandbox/registry.py","lineNumber":28,"sourceCode":"\ndef register_sandbox(name: str, provider: SandboxProviderFactory) -> None:\n    _PROVIDERS[name] = provider\n\n\nclass SandboxProviderRegistry:\n    def __init__(self, settings: Settings) -> None:\n        self._settings = settings\n        self._providers: dict[str, SandboxProvider] = {}\n\n    def get_provider(self, name: str) -> SandboxProvider:\n        provider = self._providers.get(name)\n        if provider is not None:\n            return provider\n\n        provider_factory = _PROVIDERS.get(name)\n        if provider_factory is None:\n            available = \", \".join(sorted(_PROVIDERS)) or \"none\"\n            raise ValueError(\n                f\"Sandbox provider '{name}' is not registered. Available: {available}\"\n            )\n        provider = provider_factory(self._settings)\n        self._providers[name] = provider\n        return provider\n","sourceCodeStart":10,"sourceCodeEnd":34,"githubUrl":"https://github.com/zylon-ai/private-gpt/blob/4a030776a31a901ad80b1bf4d7faa2c1a367efbb/private_gpt/components/sandbox/registry.py#L10-L34","documentation":"The sandbox registry lazily instantiates providers from the _PROVIDERS class-level factory map; get_provider raises ValueError naming the requested provider and the sorted list of available ones when the name is unknown. Both a miss in the per-instance cache and in _PROVIDERS triggers it, so the name was never a compiled-in provider — this is a configuration/naming error, not a runtime state issue.","triggerScenarios":"Calling registry.get_provider(name) with a name that is not a key in _PROVIDERS — e.g. settings.sandbox.provider set to 'k8s' when only 'local'/'docker' style keys exist, or a typo like 'locaL'.","commonSituations":"Config copied from another deployment whose provider set differs; provider removed/renamed across private-gpt versions; environment-specific settings (dev uses local, prod expects a provider not built into this image); case/whitespace typos in YAML config.","solutions":["Use one of the names listed in the error's 'Available: ...' section.","Fix the settings value that supplies the name (e.g. settings.sandbox.provider) — strip whitespace and correct casing.","If the provider should exist, verify the private-gpt build actually includes it (some providers may be optional/flagged at build time) and update the package.","Fail fast at startup: validate the configured provider name against the registry before serving requests."],"exampleFix":"# before\nprovider = registry.get_provider(\"kubernetes\")  # ValueError: not registered\n\n# after\nprovider = registry.get_provider(\"local\")  # name from the 'Available:' list","handlingStrategy":"validation","validationCode":"from private_gpt.components.sandbox.registry import SandboxRegistry\n\nPROVIDERS = {\"local\"}  # names valid for this build\n\ndef validate_provider(name: str) -> str:\n    if name not in PROVIDERS:\n        raise ValueError(f\"provider must be one of {sorted(PROVIDERS)}, got {name!r}\")\n    return name","typeGuard":"def is_registered_provider(registry: SandboxRegistry, name: str) -> bool:\n    try:\n        registry.get_provider(name)\n        return True\n    except ValueError:\n        return False","tryCatchPattern":"try:\n    provider = registry.get_provider(settings.sandbox.provider)\nexcept ValueError as e:\n    raise SystemExit(f\"Bad sandbox config: {e}\") from e","preventionTips":["Validate the provider name against the registry at application startup, not per request.","Strip/normalize whitespace and case from config-supplied provider names.","Pin config values to the provider set of the exact private-gpt version you deploy."],"tags":["sandbox","configuration","registry","provider","startup"],"backgroundTag":null,"analyzedSha":"4a030776a31a901ad80b1bf4d7faa2c1a367efbb","analyzedAt":"2026-08-15T03:51:26.951Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}