{"record":{"id":"c217a9ae46fe4d62","repo":"langchain-ai/langgraph","slug":"invalid-http-app-format-http-conf-app-mus","errorCode":null,"errorMessage":"Invalid http.app format: '{http_conf['app']}'. Must be in format './path/to/file.py:attribute_name'","messagePattern":"Invalid http\\.app format: '(.+?)'\\. Must be in format '\\./path/to/file\\.py:attribute_name'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"libs/cli/langgraph_cli/config.py","lineNumber":540,"sourceCode":"    if auth_conf := config.get(\"auth\"):\n        if \"path\" in auth_conf:\n            if \":\" not in auth_conf[\"path\"]:\n                raise ValueError(\n                    f\"Invalid auth.path format: '{auth_conf['path']}'. \"\n                    \"Must be in format './path/to/file.py:attribute_name'\"\n                )\n    # Validate encryption config\n    if encryption_conf := config.get(\"encryption\"):\n        if \"path\" in encryption_conf:\n            if \":\" not in encryption_conf[\"path\"]:\n                raise ValueError(\n                    f\"Invalid encryption.path format: '{encryption_conf['path']}'. \"\n                    \"Must be in format './path/to/file.py:attribute_name'\"\n                )\n    if http_conf := config.get(\"http\"):\n        if \"app\" in http_conf:\n            if \":\" not in http_conf[\"app\"]:\n                raise ValueError(\n                    f\"Invalid http.app format: '{http_conf['app']}'. \"\n                    \"Must be in format './path/to/file.py:attribute_name'\"\n                )\n    if keep_pkg_tools := config.get(\"keep_pkg_tools\"):\n        if isinstance(keep_pkg_tools, list):\n            for tool in keep_pkg_tools:\n                if tool not in _BUILD_TOOLS:\n                    raise ValueError(\n                        f\"Invalid keep_pkg_tools: '{tool}'. \"\n                        \"Must be one of 'pip', 'setuptools', 'wheel'.\"\n                    )\n        elif keep_pkg_tools is True:\n            pass\n        else:\n            raise ValueError(\n                f\"Invalid keep_pkg_tools: '{keep_pkg_tools}'. \"\n                \"Must be bool or list[str] (with values\"\n                \" 'pip', 'setuptools', and/or 'wheel').\"","sourceCodeStart":522,"sourceCodeEnd":558,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/cli/langgraph_cli/config.py#L522-L558","documentation":"Config validation in the CLI's validate_config: the http.app entry lacks a ':' separator, so it cannot be parsed into a module path plus a FastAPI/ASGI app attribute. The langgraph server mounts your custom HTTP app by importing exactly that attribute, hence the strict './path/to/file.py:attribute_name' format requirement.","triggerScenarios":"Thrown at libs/cli/langgraph_cli/config.py:540 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use \"http\": {\"app\": \"./src/http_app.py:app\"} — file path, colon, then the ASGI app variable","Make sure the attribute is a FastAPI/Starlette app object importable at module level"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"38031739e551638e373fb553453256c23feeb41f","analyzedAt":"2026-08-26T18:02:49.312Z","contentChangedAt":"2026-08-26T18:02:49.312Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}