{ "$ref": "#/$defs/Config", "$defs": { "Config": { "title": "Config", "description": "Top-level config for langgraph-cli or similar deployment tooling.", "type": "object", "required": [], "oneOf": [ { "type": "object", "properties": { "python_version": { "type": "string", "description": "Optional. Python version in 'major.minor' format (e.g. '3.11').\nMust be at least 3.11 or greater for this deployment to function properly.\n", "enum": [ "3.11", "3.12" ] }, "pip_config_file": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional. Path to a pip config file (e.g., \"/etc/pip.conf\" or \"pip.ini\") for controlling\npackage installation (custom indices, credentials, etc.).\n\nOnly relevant if Python dependencies are installed via pip. If omitted, default pip settings are used.\n" }, "_INTERNAL_docker_tag": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional. Internal use only.\n" }, "auth": { "anyOf": [ { "$ref": "#/$defs/AuthConfig" }, { "type": "null" } ], "description": "Optional. Custom authentication config, including the path to your Python auth logic and\nthe OpenAPI security definitions it uses.\n" }, "checkpointer": { "anyOf": [ { "$ref": "#/$defs/CheckpointerConfig" }, { "type": "null" } ], "description": "Optional. Configuration for the built-in checkpointer, which handles checkpointing of state.\n\nIf omitted, no checkpointer is set up (the object store will still be present, however).\n" }, "dependencies": { "type": "array", "items": { "type": "string" }, "description": "List of Python dependencies to install, either from PyPI or local paths.\n" }, "dockerfile_lines": { "type": "array", "items": { "type": "string" }, "description": "Optional. Additional Docker instructions that will be appended to your base Dockerfile.\n\nUseful for installing OS packages, setting environment variables, etc." }, "env": { "anyOf": [ { "type": "object", "additionalProperties": { "type": "string" } }, { "type": "string" } ], "description": "Optional. Environment variables to set for your deployment.\n\n- If given as a dict, keys are variable names and values are their values.\n- If given as a string, it must be a path to a file containing lines in KEY=VALUE format.\n\nenv=\".env\n" }, "graphs": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Optional. Named definitions of graphs, each pointing to a Python object.\n\n\nGraphs can be StateGraph, @entrypoint, or any other Pregel object OR they can point to (async) context\nmanagers that accept a single configuration argument (of type RunnableConfig) and return a pregel object\n(instance of Stategraph, etc.).\n" }, "http": { "anyOf": [ { "$ref": "#/$defs/HttpConfig" }, { "type": "null" } ], "description": "Optional. Configuration for the built-in HTTP server, controlling which custom routes are exposed\nand how cross-origin requests are handled.\n" }, "store": { "anyOf": [ { "$ref": "#/$defs/StoreConfig" }, { "type": "null" } ], "description": "Optional. Configuration for the built-in long-term memory store, including semantic search indexing.\n\nIf omitted, no vector index is set up (the object store will still be present, however).\n" }, "ui": { "anyOf": [ { "type": "object", "additionalProperties": { "type": "string" } }, { "type": "null" } ], "description": "Optional. Named definitions of UI components emitted by the agent, each pointing to a JS/TS file.\n" } }, "required": [ "dependencies", "graphs" ] }, { "type": "object", "properties": { "node_version": { "anyOf": [ { "type": "string", "enum": [ "20" ] }, { "type": "null" } ], "description": "Optional. Node.js version as a major version (e.g. '20'), if your deployment needs Node.\nMust be >= 20 if provided.\n" }, "_INTERNAL_docker_tag": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional. Internal use only.\n" }, "auth": { "anyOf": [ { "$ref": "#/$defs/AuthConfig" }, { "type": "null" } ], "description": "Optional. Custom authentication config, including the path to your Python auth logic and\nthe OpenAPI security definitions it uses.\n" }, "checkpointer": { "anyOf": [ { "$ref": "#/$defs/CheckpointerConfig" }, { "type": "null" } ], "description": "Optional. Configuration for the built-in checkpointer, which handles checkpointing of state.\n\nIf omitted, no checkpointer is set up (the object store will still be present, however).\n" }, "dependencies": { "type": "array", "items": { "type": "string" }, "description": "List of Python dependencies to install, either from PyPI or local paths.\n" }, "dockerfile_lines": { "type": "array", "items": { "type": "string" }, "description": "Optional. Additional Docker instructions that will be appended to your base Dockerfile.\n\nUseful for installing OS packages, setting environment variables, etc." }, "env": { "anyOf": [ { "type": "object", "additionalProperties": { "type": "string" } }, { "type": "string" } ], "description": "Optional. Environment variables to set for your deployment.\n\n- If given as a dict, keys are variable names and values are their values.\n- If given as a string, it must be a path to a file containing lines in KEY=VALUE format.\n\nenv=\".env\n" }, "graphs": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Optional. Named definitions of graphs, each pointing to a Python object.\n\n\nGraphs can be StateGraph, @entrypoint, or any other Pregel object OR they can point to (async) context\nmanagers that accept a single configuration argument (of type RunnableConfig) and return a pregel object\n(instance of Stategraph, etc.).\n" }, "http": { "anyOf": [ { "$ref": "#/$defs/HttpConfig" }, { "type": "null" } ], "description": "Optional. Configuration for the built-in HTTP server, controlling which custom routes are exposed\nand how cross-origin requests are handled.\n" }, "store": { "anyOf": [ { "$ref": "#/$defs/StoreConfig" }, { "type": "null" } ], "description": "Optional. Configuration for the built-in long-term memory store, including semantic search indexing.\n\nIf omitted, no vector index is set up (the object store will still be present, however).\n" }, "ui": { "anyOf": [ { "type": "object", "additionalProperties": { "type": "string" } }, { "type": "null" } ], "description": "Optional. Named definitions of UI components emitted by the agent, each pointing to a JS/TS file.\n" } }, "required": [ "node_version", "graphs" ] } ] }, "AuthConfig": { "title": "AuthConfig", "description": "Configuration for custom authentication logic and how it integrates into the OpenAPI spec.", "type": "object", "properties": { "disable_studio_auth": { "type": "boolean", "description": "Optional. Whether to disable LangSmith API-key authentication for requests originating the Studio.\n\nDefaults to False, meaning that if a particular header is set, the server will verify the `x-api-key` header\nvalue is a valid API key for the deployment's workspace. If True, all requests will go through your custom\nauthentication logic, regardless of origin of the request.\n" }, "openapi": { "$ref": "#/$defs/SecurityConfig", "description": "Required. Detailed security configuration that merges into your deployment's OpenAPI spec.\n\n{\n}\n}\n}\n},\n]\n}\n" }, "path": { "type": "string", "description": "Required. Path to an instance of the Auth() class that implements custom authentication.\n" } }, "required": [] }, "SecurityConfig": { "title": "SecurityConfig", "description": "Configuration for OpenAPI security definitions and requirements.\n\nUseful for specifying global or path-level authentication and authorization flows\n(e.g., OAuth2, API key headers, etc.).", "type": "object", "properties": { "paths": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } }, "description": "Optional. Path-specific security overrides.\n\n- Keys that are HTTP methods (e.g., \"GET\", \"POST\"),\n- Values are lists of security definitions (just like `security`) for that method.\n" }, "security": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "description": "Optional. Global security requirements across all endpoints.\n\nEach element in the list maps a security scheme (e.g. \"OAuth2\") to a list of scopes (e.g. [\"read\", \"write\"])." }, "securitySchemes": { "type": "object", "additionalProperties": { "type": "object" }, "description": "Required. Dict describing each security scheme recognized by your OpenAPI spec.\n\nKeys are scheme names (e.g. \"OAuth2\", \"ApiKeyAuth\") and values are their definitions." } }, "required": [] }, "CheckpointerConfig": { "title": "CheckpointerConfig", "description": "Configuration for the built-in checkpointer, which handles checkpointing of state.\n\nIf omitted, no checkpointer is set up (the object store will still be present, however).", "type": "object", "properties": { "ttl": { "anyOf": [ { "$ref": "#/$defs/ThreadTTLConfig" }, { "type": "null" } ], "description": "Optional. Defines the TTL (time-to-live) behavior configuration.\n\nIf provided, the checkpointer will apply TTL settings according to the configuration.\nIf omitted, no TTL behavior is configured.\n" } }, "required": [] }, "ThreadTTLConfig": { "title": "ThreadTTLConfig", "description": "Configure a default TTL for checkpointed data within threads.", "type": "object", "properties": { "default_ttl": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Default TTL (time-to-live) in minutes for checkpointed data." }, "strategy": { "enum": [ "delete" ], "description": "Strategy to use for deleting checkpointed data.\n" }, "sweep_interval_minutes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "description": "Interval in minutes between sweep iterations.\nIf omitted, a default interval will be used (typically ~ 5 minutes)." } }, "required": [] }, "HttpConfig": { "title": "HttpConfig", "description": "Configuration for the built-in HTTP server that powers your deployment's routes and endpoints.", "type": "object", "properties": { "app": { "type": "string", "description": "Optional. Import path to a custom Starlette/FastAPI application to mount.\n" }, "cors": { "anyOf": [ { "$ref": "#/$defs/CorsConfig" }, { "type": "null" } ], "description": "Optional. Defines CORS restrictions. If omitted, no special rules are set and\ncross-origin behavior depends on default server settings.\n" }, "disable_assistants": { "type": "boolean", "description": "Optional. If True, /assistants routes are removed from the server.\n\nDefault is False (meaning /assistants is enabled).\n" }, "disable_meta": { "type": "boolean", "description": "Optional. If True, all meta endpoints (/ok, /info, /metrics, /docs) are disabled.\n\nDefault is False.\n" }, "disable_runs": { "type": "boolean", "description": "Optional. If True, /runs routes are removed.\n\nDefault is False.\n" }, "disable_store": { "type": "boolean", "description": "Optional. If True, /store routes are removed, disabling direct store interactions via HTTP.\n\nDefault is False.\n" }, "disable_threads": { "type": "boolean", "description": "Optional. If True, /threads routes are removed.\n\nDefault is False.\n" } }, "required": [] }, "CorsConfig": { "title": "CorsConfig", "description": "Specifies Cross-Origin Resource Sharing (CORS) rules for your server.\n\nIf omitted, defaults are typically very restrictive (often no cross-origin requests).\nConfigure carefully if you want to allow usage from browsers hosted on other domains.", "type": "object", "properties": { "allow_credentials": { "type": "boolean", "description": "Optional. If True, cross-origin requests can include credentials (cookies, auth headers).\n\nDefault False to avoid accidentally exposing secured endpoints to untrusted sites.\n" }, "allow_headers": { "type": "array", "items": { "type": "string" }, "description": "Optional. HTTP headers that can be used in cross-origin requests (e.g. [\"Content-Type\", \"Authorization\"])." }, "allow_methods": { "type": "array", "items": { "type": "string" }, "description": "Optional. HTTP methods permitted for cross-origin requests (e.g. [\"GET\", \"POST\"]).\n\nDefault might be [\"GET\", \"POST\", \"OPTIONS\"] depending on your server framework.\n" }, "allow_origin_regex": { "type": "string", "description": "Optional. A regex pattern for matching allowed origins, used if you have dynamic subdomains.\n" }, "allow_origins": { "type": "array", "items": { "type": "string" }, "description": "Optional. List of allowed origins (e.g., \"https://example.com\").\n\nDefault is often an empty list (no external origins).\nUse \"*\" only if you trust all origins, as that bypasses most restrictions.\n" }, "expose_headers": { "type": "array", "items": { "type": "string" }, "description": "Optional. List of headers that browsers are allowed to read from the response in cross-origin contexts." }, "max_age": { "type": "integer", "description": "Optional. How many seconds the browser may cache preflight responses.\n\nDefault might be 600 (10 minutes). Larger values reduce preflight requests but can cause stale configurations.\n" } }, "required": [] }, "StoreConfig": { "title": "StoreConfig", "description": "Configuration for the built-in long-term memory store.\n\nThis store can optionally perform semantic search. If you omit `index`,\nthe store will just handle traditional (non-embedded) data without vector lookups.", "type": "object", "properties": { "index": { "anyOf": [ { "$ref": "#/$defs/IndexConfig" }, { "type": "null" } ], "description": "Optional. Defines the vector-based semantic search configuration.\n\n- Generate embeddings according to `index.embed`\n- Enforce the embedding dimension given by `index.dims`\n- Embed only specified JSON fields (if any) from `index.fields`\n\nIf omitted, no vector index is initialized.\n" }, "ttl": { "anyOf": [ { "$ref": "#/$defs/TTLConfig" }, { "type": "null" } ], "description": "Optional. Defines the TTL (time-to-live) behavior configuration.\n\nIf provided, the store will apply TTL settings according to the configuration.\nIf omitted, no TTL behavior is configured.\n" } }, "required": [] }, "IndexConfig": { "title": "IndexConfig", "description": "Configuration for indexing documents for semantic search in the store.\n\nThis governs how text is converted into embeddings and stored for vector-based lookups.", "type": "object", "properties": { "dims": { "type": "integer", "description": "Required. Dimensionality of the embedding vectors you will store.\n\nMust match the output dimension of your selected embedding model or custom embed function.\nIf mismatched, you will likely encounter shape/size errors when inserting or querying vectors.\n\n" }, "embed": { "type": "string", "description": "Required. Identifier or reference to the embedding model or a custom embedding function.\n\n- \"my_custom_embed\" if it's a known alias in your system\n" }, "fields": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "description": "Optional. List of JSON fields to extract before generating embeddings.\n\nDefaults to [\"$\"], which means the entire JSON object is embedded as one piece of text.\nIf you provide multiple fields (e.g. [\"title\", \"content\"]), each is extracted and embedded separately,\noften saving token usage if you only care about certain parts of the data.\n" } }, "required": [] }, "TTLConfig": { "title": "TTLConfig", "description": "Configuration for TTL (time-to-live) behavior in the store.", "type": "object", "properties": { "default_ttl": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Optional. Default TTL (time-to-live) in minutes for new items.\n\nIf provided, all new items will have this TTL unless explicitly overridden.\nIf omitted, items will have no TTL by default.\n" }, "refresh_on_read": { "type": "boolean", "description": "Default behavior for refreshing TTLs on read operations (GET and SEARCH).\n\nIf True, TTLs will be refreshed on read operations (get/search) by default.\nThis can be overridden per-operation by explicitly setting refresh_ttl.\nDefaults to True if not configured.\n" }, "sweep_interval_minutes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "description": "Optional. Interval in minutes between TTL sweep iterations.\n\nIf provided, the store will periodically delete expired items based on the TTL.\nIf omitted, no automatic sweeping will occur.\n" } }, "required": [] } }, "title": "LangGraph CLI Configuration", "description": "Configuration schema for langgraph-cli", "version": "v0" }