langchain-ai/langgraph · error · ValueError
Invalid http.app format
Error message
Invalid http.app format: '{http_conf['app']}'. Must be in format './path/to/file.py:attribute_name' What it means
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.
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
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at libs/cli/langgraph_cli/config.py:540 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of langchain-ai/langgraph@38031739e5 (2026-08-26).
Data as JSON: /api/errors/c217a9ae46fe4d62.
Report an issue: GitHub.
Appendix: source
Thrown at libs/cli/langgraph_cli/config.py:540
if auth_conf := config.get("auth"):
if "path" in auth_conf:
if ":" not in auth_conf["path"]:
raise ValueError(
f"Invalid auth.path format: '{auth_conf['path']}'. "
"Must be in format './path/to/file.py:attribute_name'"
)
# Validate encryption config
if encryption_conf := config.get("encryption"):
if "path" in encryption_conf:
if ":" not in encryption_conf["path"]:
raise ValueError(
f"Invalid encryption.path format: '{encryption_conf['path']}'. "
"Must be in format './path/to/file.py:attribute_name'"
)
if http_conf := config.get("http"):
if "app" in http_conf:
if ":" not in http_conf["app"]:
raise ValueError(
f"Invalid http.app format: '{http_conf['app']}'. "
"Must be in format './path/to/file.py:attribute_name'"
)
if keep_pkg_tools := config.get("keep_pkg_tools"):
if isinstance(keep_pkg_tools, list):
for tool in keep_pkg_tools:
if tool not in _BUILD_TOOLS:
raise ValueError(
f"Invalid keep_pkg_tools: '{tool}'. "
"Must be one of 'pip', 'setuptools', 'wheel'."
)
elif keep_pkg_tools is True:
pass
else:
raise ValueError(
f"Invalid keep_pkg_tools: '{keep_pkg_tools}'. "
"Must be bool or list[str] (with values"
" 'pip', 'setuptools', and/or 'wheel')."View on GitHub (pinned to 38031739e5)