From ecee22fa16789a1004a0e77f2a5c9d5547bf19d9 Mon Sep 17 00:00:00 2001 From: "langsmith-fleet[bot]" Date: Thu, 6 Aug 2026 00:01:58 +0000 Subject: [PATCH] fix(cli): remove discontinued local debugger image --- libs/cli/langgraph_cli/analytics.py | 3 - libs/cli/langgraph_cli/cli.py | 35 +------- libs/cli/langgraph_cli/docker.py | 35 -------- libs/cli/tests/unit_tests/cli/test_cli.py | 28 ------ libs/cli/tests/unit_tests/test_docker.py | 100 +--------------------- 5 files changed, 4 insertions(+), 197 deletions(-) diff --git a/libs/cli/langgraph_cli/analytics.py b/libs/cli/langgraph_cli/analytics.py index c64588673..63ed8dbba 100644 --- a/libs/cli/langgraph_cli/analytics.py +++ b/libs/cli/langgraph_cli/analytics.py @@ -48,9 +48,6 @@ def get_anonymized_params( if kwargs.get("docker_compose"): params["docker_compose"] = True - if kwargs.get("debugger_port"): - params["debugger_port"] = True - if kwargs.get("postgres_uri"): params["postgres_uri"] = True diff --git a/libs/cli/langgraph_cli/cli.py b/libs/cli/langgraph_cli/cli.py index 3a3b8b6b0..98189a59c 100644 --- a/libs/cli/langgraph_cli/cli.py +++ b/libs/cli/langgraph_cli/cli.py @@ -140,17 +140,6 @@ OPT_VERBOSE = click.option( help="Show more output from the server logs", ) OPT_WATCH = click.option("--watch", is_flag=True, help="Restart on file changes") -OPT_DEBUGGER_PORT = click.option( - "--debugger-port", - type=int, - help="Pull the debugger image locally and serve the UI on specified port", -) -OPT_DEBUGGER_BASE_URL = click.option( - "--debugger-base-url", - type=str, - help="URL used by the debugger to access LangGraph API. Defaults to http://127.0.0.1:[PORT]", -) - OPT_POSTGRES_URI = click.option( "--postgres-uri", help="Postgres URI to use for the database. Defaults to launching a local database", @@ -248,8 +237,6 @@ cli.add_command(deploy) @OPT_DOCKER_COMPOSE @OPT_CONFIG @OPT_VERBOSE -@OPT_DEBUGGER_PORT -@OPT_DEBUGGER_BASE_URL @OPT_WATCH @OPT_POSTGRES_URI @OPT_API_VERSION @@ -284,8 +271,6 @@ def up( watch: bool, wait: bool, verbose: bool, - debugger_port: int | None, - debugger_base_url: str | None, postgres_uri: str | None, api_version: str | None, engine_runtime_mode: str, @@ -308,8 +293,6 @@ For production use, requires a license key in env var LANGGRAPH_CLOUD_LICENSE_KE pull=pull, watch=watch, verbose=verbose, - debugger_port=debugger_port, - debugger_base_url=debugger_base_url, postgres_uri=postgres_uri, api_version=api_version, engine_runtime_mode=engine_runtime_mode, @@ -337,20 +320,12 @@ For production use, requires a license key in env var LANGGRAPH_CLOUD_LICENSE_KE if "unpacking to docker.io" in line: set("Starting...") elif "Application startup complete" in line: - debugger_origin = ( - f"http://localhost:{debugger_port}" - if debugger_port - else "https://smith.langchain.com" - ) - debugger_base_url_query = ( - debugger_base_url or f"http://127.0.0.1:{port}" - ) set("") sys.stdout.write( f"""Ready! - API: http://localhost:{port} - Docs: http://localhost:{port}/docs -- LangGraph Studio: {debugger_origin}/studio/?baseUrl={debugger_base_url_query} +- LangGraph Studio: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:{port} """ ) sys.stdout.flush() @@ -935,8 +910,6 @@ def prepare_args_and_stdin( docker_compose: pathlib.Path | None, port: int, watch: bool, - debugger_port: int | None = None, - debugger_base_url: str | None = None, postgres_uri: str | None = None, api_version: str | None = None, engine_runtime_mode: str = "combined_queue_worker", @@ -950,8 +923,6 @@ def prepare_args_and_stdin( stdin = langgraph_cli.docker.compose( capabilities, port=port, - debugger_port=debugger_port, - debugger_base_url=debugger_base_url, postgres_uri=postgres_uri, image=image, base_image=base_image, @@ -989,8 +960,6 @@ def prepare( pull: bool, watch: bool, verbose: bool, - debugger_port: int | None = None, - debugger_base_url: str | None = None, postgres_uri: str | None = None, api_version: str | None = None, engine_runtime_mode: str = "combined_queue_worker", @@ -1032,8 +1001,6 @@ def prepare( docker_compose=docker_compose, port=port, watch=watch, - debugger_port=debugger_port, - debugger_base_url=debugger_base_url or f"http://127.0.0.1:{port}", postgres_uri=postgres_uri, api_version=api_version, engine_runtime_mode=engine_runtime_mode, diff --git a/libs/cli/langgraph_cli/docker.py b/libs/cli/langgraph_cli/docker.py index a376b5698..a3aba0834 100644 --- a/libs/cli/langgraph_cli/docker.py +++ b/libs/cli/langgraph_cli/docker.py @@ -142,29 +142,6 @@ def check_capabilities(runner) -> DockerCapabilities: ) -def debugger_compose(*, port: int | None = None, base_url: str | None = None) -> dict: - if port is None: - return "" - - config = { - "langgraph-debugger": { - "image": "langchain/langgraph-debugger", - "restart": "on-failure", - "depends_on": { - "langgraph-postgres": {"condition": "service_healthy"}, - }, - "ports": [f'"{port}:3968"'], - } - } - - if base_url: - config["langgraph-debugger"]["environment"] = { - "VITE_STUDIO_LOCAL_GRAPH_URL": base_url - } - - return config - - # Function to convert dictionary to YAML def dict_to_yaml(d: dict, *, indent: int = 0) -> str: """Convert a dictionary to a YAML string.""" @@ -191,8 +168,6 @@ def compose_as_dict( capabilities: DockerCapabilities, *, port: int, - debugger_port: int | None = None, - debugger_base_url: str | None = None, # postgres://user:password@host:port/database?option=value postgres_uri: str | None = None, # If you are running against an already-built image, you can pass it here @@ -253,12 +228,6 @@ def compose_as_dict( else: services["langgraph-postgres"]["healthcheck"]["interval"] = "5s" - # Add optional debugger service if debugger_port is specified - if debugger_port: - services["langgraph-debugger"] = debugger_compose( - port=debugger_port, base_url=debugger_base_url - )["langgraph-debugger"] - # Add langgraph-api service api_environment = { "REDIS_URI": "redis://langgraph-redis:6379", @@ -305,8 +274,6 @@ def compose( capabilities: DockerCapabilities, *, port: int, - debugger_port: int | None = None, - debugger_base_url: str | None = None, # postgres://user:password@host:port/database?option=value postgres_uri: str | None = None, image: str | None = None, @@ -318,8 +285,6 @@ def compose( compose_content = compose_as_dict( capabilities, port=port, - debugger_port=debugger_port, - debugger_base_url=debugger_base_url, postgres_uri=postgres_uri, image=image, base_image=base_image, diff --git a/libs/cli/tests/unit_tests/cli/test_cli.py b/libs/cli/tests/unit_tests/cli/test_cli.py index 8b3ae47c6..2e32d9e78 100644 --- a/libs/cli/tests/unit_tests/cli/test_cli.py +++ b/libs/cli/tests/unit_tests/cli/test_cli.py @@ -56,8 +56,6 @@ def test_prepare_args_and_stdin() -> None: Config(dependencies=[".", "../../.."], graphs={"agent": "agent.py:graph"}) ) port = 8000 - debugger_port = 8001 - debugger_graph_url = f"http://127.0.0.1:{port}" actual_args, actual_stdin = prepare_args_and_stdin( capabilities=DEFAULT_DOCKER_CAPABILITIES, @@ -65,8 +63,6 @@ def test_prepare_args_and_stdin() -> None: config=config, docker_compose=pathlib.Path("custom-docker-compose.yml"), port=port, - debugger_port=debugger_port, - debugger_base_url=debugger_graph_url, watch=True, ) @@ -110,16 +106,6 @@ services: retries: 5 interval: 60s start_interval: 1s - langgraph-debugger: - image: langchain/langgraph-debugger - restart: on-failure - depends_on: - langgraph-postgres: - condition: service_healthy - ports: - - "{debugger_port}:3968" - environment: - VITE_STUDIO_LOCAL_GRAPH_URL: {debugger_graph_url} langgraph-api: ports: - "8000:8000" @@ -178,8 +164,6 @@ def test_prepare_args_and_stdin_with_image() -> None: Config(dependencies=[".", "../../.."], graphs={"agent": "agent.py:graph"}) ) port = 8000 - debugger_port = 8001 - debugger_graph_url = f"http://127.0.0.1:{port}" actual_args, actual_stdin = prepare_args_and_stdin( capabilities=DEFAULT_DOCKER_CAPABILITIES, @@ -187,8 +171,6 @@ def test_prepare_args_and_stdin_with_image() -> None: config=config, docker_compose=pathlib.Path("custom-docker-compose.yml"), port=port, - debugger_port=debugger_port, - debugger_base_url=debugger_graph_url, watch=True, image="my-cool-image", ) @@ -233,16 +215,6 @@ services: retries: 5 interval: 60s start_interval: 1s - langgraph-debugger: - image: langchain/langgraph-debugger - restart: on-failure - depends_on: - langgraph-postgres: - condition: service_healthy - ports: - - "{debugger_port}:3968" - environment: - VITE_STUDIO_LOCAL_GRAPH_URL: {debugger_graph_url} langgraph-api: ports: - "8000:8000" diff --git a/libs/cli/tests/unit_tests/test_docker.py b/libs/cli/tests/unit_tests/test_docker.py index b902b0f1b..072cac14f 100644 --- a/libs/cli/tests/unit_tests/test_docker.py +++ b/libs/cli/tests/unit_tests/test_docker.py @@ -16,7 +16,7 @@ DEFAULT_DOCKER_CAPABILITIES = DockerCapabilities( ) -def test_compose_with_no_debugger_and_custom_db(): +def test_compose_with_custom_db(): port = 8123 custom_postgres_uri = "custom_postgres_uri" actual_compose_str = compose( @@ -42,7 +42,7 @@ def test_compose_with_no_debugger_and_custom_db(): assert clean_empty_lines(actual_compose_str) == expected_compose_str -def test_compose_with_no_debugger_and_custom_db_with_healthcheck(): +def test_compose_with_custom_db_and_healthcheck(): port = 8123 custom_postgres_uri = "custom_postgres_uri" actual_compose_str = compose( @@ -75,35 +75,7 @@ def test_compose_with_no_debugger_and_custom_db_with_healthcheck(): assert clean_empty_lines(actual_compose_str) == expected_compose_str -def test_compose_with_debugger_and_custom_db(): - port = 8123 - custom_postgres_uri = "custom_postgres_uri" - actual_compose_str = compose( - DEFAULT_DOCKER_CAPABILITIES, - port=port, - postgres_uri=custom_postgres_uri, - ) - expected_compose_str = f"""services: - langgraph-redis: - image: redis:6 - healthcheck: - test: redis-cli ping - interval: 5s - timeout: 1s - retries: 5 - langgraph-api: - ports: - - "{port}:8000" - depends_on: - langgraph-redis: - condition: service_healthy - environment: - REDIS_URI: redis://langgraph-redis:6379 - POSTGRES_URI: {custom_postgres_uri}""" - assert clean_empty_lines(actual_compose_str) == expected_compose_str - - -def test_compose_with_debugger_and_default_db(): +def test_compose_with_default_db(): port = 8123 actual_compose_str = compose(DEFAULT_DOCKER_CAPABILITIES, port=port) expected_compose_str = f"""volumes: @@ -302,72 +274,6 @@ def test_compose_with_api_version_and_custom_postgres(): assert clean_empty_lines(actual_compose_str) == expected_compose_str -def test_compose_with_api_version_and_debugger(): - """Test compose function with api_version and debugger port.""" - port = 8123 - debugger_port = 8001 - api_version = "0.2.74" - - actual_compose_str = compose( - DEFAULT_DOCKER_CAPABILITIES, - port=port, - api_version=api_version, - debugger_port=debugger_port, - ) - - expected_compose_str = f"""volumes: - langgraph-data: - driver: local -services: - langgraph-redis: - image: redis:6 - healthcheck: - test: redis-cli ping - interval: 5s - timeout: 1s - retries: 5 - langgraph-postgres: - image: pgvector/pgvector:pg16 - ports: - - "5433:5432" - environment: - POSTGRES_DB: postgres - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - command: - - postgres - - -c - - shared_preload_libraries=vector - volumes: - - langgraph-data:/var/lib/postgresql/data - healthcheck: - test: pg_isready -U postgres - start_period: 10s - timeout: 1s - retries: 5 - interval: 5s - langgraph-debugger: - image: langchain/langgraph-debugger - restart: on-failure - depends_on: - langgraph-postgres: - condition: service_healthy - ports: - - "{debugger_port}:3968" - langgraph-api: - ports: - - "{port}:8000" - depends_on: - langgraph-redis: - condition: service_healthy - langgraph-postgres: - condition: service_healthy - environment: - REDIS_URI: redis://langgraph-redis:6379 - POSTGRES_URI: {DEFAULT_POSTGRES_URI}""" - assert clean_empty_lines(actual_compose_str) == expected_compose_str - - def test_compose_distributed_mode_with_custom_db(): """Test compose with engine_runtime_mode='distributed' adds N_JOBS_PER_WORKER=0.""" port = 8123