From 06a1058ba6d9d979f0fc779ce436ec4aa9afa508 Mon Sep 17 00:00:00 2001 From: "svc-glamr@nvidia.com" Date: Mon, 3 Aug 2026 21:47:32 +0000 Subject: [PATCH 1/6] refactor(cli): re-home --connector to TRT-LLM and drop vLLM rejection path The `--connector` flag lived on the shared runtime arg group, so every backend inherited it even though only TensorRT-LLM ever read it. On the vLLM side it had already been reduced to a rejection stub that existed only to raise a migration error pointing at `--kv-transfer-config`. Move the flag onto `DynamoTrtllmArgGroup`/`DynamoTrtllmConfig`, where its only real consumer lives, and narrow its help text to the values TRT-LLM actually accepts (`none`, `kvbm`). The TRT-LLM KVBM entry point (`VALID_TRTLLM_CONNECTORS`, `has_connector`, `build_kv_connector_config`, `snapshot.py`) is unchanged. Delete the vLLM rejection machinery (`_reject_connector_flag`, `_connector_to_kv_transfer_json`) and its tests. argparse now rejects `--connector` on the vLLM backend directly, which is the same outcome with less code. The prefill error message keeps its `--kv-transfer-config` guidance and drops only its stale reference to the removed flag. Also drop the now-inaccurate mentions from the runtime-configuration and vLLM-configuration reference pages and from the nemotron-3-super-fp8 recipe. Note: `--kv-transfer-config` and all `kv_connector*` handling are untouched. Signed-off-by: svc-glamr@nvidia.com --- .../configuration/groups/runtime_args.py | 9 -- components/src/dynamo/trtllm/args.py | 1 - components/src/dynamo/trtllm/backend_args.py | 10 ++ components/src/dynamo/vllm/args.py | 100 ------------------ .../src/dynamo/vllm/tests/test_vllm_unit.py | 42 -------- .../reference/backends/vllm-configuration.mdx | 6 -- .../components/runtime-configuration.mdx | 6 -- recipes/nemotron-3-super-fp8/README.md | 1 - .../nemotron-3-super-fp8/vllm/agg/deploy.yaml | 4 - 9 files changed, 10 insertions(+), 169 deletions(-) diff --git a/components/src/dynamo/common/configuration/groups/runtime_args.py b/components/src/dynamo/common/configuration/groups/runtime_args.py index 417974fb90dd..f13b6ca252b4 100644 --- a/components/src/dynamo/common/configuration/groups/runtime_args.py +++ b/components/src/dynamo/common/configuration/groups/runtime_args.py @@ -32,7 +32,6 @@ class DynamoRuntimeConfig(ConfigBase): request_plane: str event_plane: Optional[str] = None fpm_trace: bool = False - connector: list[str] enable_local_indexer: bool = True dyn_tool_call_parser: Optional[str] = None @@ -171,14 +170,6 @@ def add_arguments(self, parser: argparse.ArgumentParser) -> None: default=False, help="Persist backend forward-pass metrics to rotating gzip JSONL trace files. Also enables the backend FPM instrumentation required to produce those records.", ) - add_argument( - g, - flag_name="--connector", - env_var="DYN_CONNECTOR", - default=[], - help="[Deprecated for vLLM] Use --kv-transfer-config instead. For TRT-LLM, options: nixl, lmcache, kvbm, null, none.", - nargs="*", - ) # Optional: tool/reasoning parsers (choices from dynamo._core when available) add_argument( diff --git a/components/src/dynamo/trtllm/args.py b/components/src/dynamo/trtllm/args.py index f2abd383c5d9..9b4fba08ffe4 100644 --- a/components/src/dynamo/trtllm/args.py +++ b/components/src/dynamo/trtllm/args.py @@ -38,7 +38,6 @@ def _warn_deprecated(message: str) -> None: class Config(DynamoRuntimeConfig, DynamoTrtllmConfig): component: str use_kv_events: bool - connector: list[str] # Redeclare for mypy (inherited from DynamoRuntimeConfig) def validate(self) -> None: DynamoRuntimeConfig.validate(self) diff --git a/components/src/dynamo/trtllm/backend_args.py b/components/src/dynamo/trtllm/backend_args.py index aba33f7eeb98..2caf8ebe2a60 100644 --- a/components/src/dynamo/trtllm/backend_args.py +++ b/components/src/dynamo/trtllm/backend_args.py @@ -105,6 +105,15 @@ def add_arguments(self, parser: argparse.ArgumentParser) -> None: "Dynamo router's selected rank and requires a TensorRT-LLM build containing " "NVIDIA/TensorRT-LLM#16815 or equivalent.", ) + add_argument( + g, + flag_name="--connector", + env_var="DYN_CONNECTOR", + default=[], + help="KV cache connector for the TensorRT-LLM engine. Accepts at most " + "one value: 'kvbm' enables the KVBM integration, 'none' disables it.", + nargs="*", + ) add_argument( g, flag_name="--kv-block-size", @@ -490,6 +499,7 @@ class DynamoTrtllmConfig(ConfigBase): enable_attention_dp: bool conversation_affinity: bool conversation_affinity_dp_rank_source: str + connector: list[str] kv_block_size: int gpus_per_node: Optional[int] = None max_batch_size: int diff --git a/components/src/dynamo/vllm/args.py b/components/src/dynamo/vllm/args.py index fc22ba1d724c..2d08e653354a 100644 --- a/components/src/dynamo/vllm/args.py +++ b/components/src/dynamo/vllm/args.py @@ -3,7 +3,6 @@ import argparse import ipaddress -import json import logging import os import socket @@ -210,9 +209,6 @@ def update_dynamo_config_with_engine( "Please ensure the file exists and the path is correct." ) - # --connector is no longer supported for vLLM. Raise hard error if explicitly set. - _reject_connector_flag(dynamo_config) - # If disaggregation mode is prefill, require explicit --kv-transfer-config has_kv_transfer_config = ( hasattr(engine_config, "kv_transfer_config") @@ -223,16 +219,12 @@ def update_dynamo_config_with_engine( and not has_kv_transfer_config ): raise ValueError( - "--connector is deprecated and the default is no longer nixl. " "When using --disaggregation-mode prefill, you must explicitly " "provide --kv-transfer-config. Example:\n" " --kv-transfer-config " '\'{"kv_connector":"NixlConnector","kv_role":"kv_both"}\'' ) - # Clear connector list (no longer used for vLLM) - dynamo_config.connector = [] # type: ignore[assignment] - def _unsupported_fpm_trace_role(dynamo_config: Config) -> Optional[str]: """Return the worker role when trace-based FPM activation is unsupported.""" @@ -471,98 +463,6 @@ def _uses_dynamo_connector(engine_config: AsyncEngineArgs) -> bool: return False -def _connector_to_kv_transfer_json(connectors: list[str]) -> str: - """Convert a legacy --connector list to the equivalent --kv-transfer-config JSON. - - Used in error messages to help users migrate. - """ - multi_connectors = [] - for conn in connectors: - c = conn.lower() - if c == "lmcache": - multi_connectors.append( - {"kv_connector": "LMCacheConnectorV1", "kv_role": "kv_both"} - ) - elif c == "flexkv": - multi_connectors.append( - {"kv_connector": "FlexKVConnectorV1", "kv_role": "kv_both"} - ) - elif c == "nixl": - multi_connectors.append( - {"kv_connector": "NixlConnector", "kv_role": "kv_both"} - ) - elif c == "kvbm": - multi_connectors.append( - { - "kv_connector": "DynamoConnector", - "kv_connector_module_path": "kvbm.vllm_integration.connector", - "kv_role": "kv_both", - } - ) - - if len(multi_connectors) == 1: - return json.dumps(multi_connectors[0]) - - return json.dumps( - { - "kv_connector": "PdConnector", - "kv_role": "kv_both", - "kv_connector_extra_config": {"connectors": multi_connectors}, - "kv_connector_module_path": "kvbm.vllm_integration.connector", - } - ) - - -def _reject_connector_flag(dynamo_config: Config) -> None: - """Raise ValueError if --connector was explicitly set (CLI or DYN_CONNECTOR env var). - - The --connector flag is no longer supported for the vLLM backend. - Users must use --kv-transfer-config instead. - """ - connector_list = dynamo_config.connector or [] - - # Check if --connector was explicitly provided via CLI or DYN_CONNECTOR env var - env_connector = os.environ.get("DYN_CONNECTOR") - explicitly_set = bool(connector_list) or (env_connector is not None) - - if not explicitly_set: - return - - # Normalize: "none"/"null" means no connector - normalized = [c.lower() for c in connector_list] - if normalized and all(c in ("none", "null") for c in normalized): - # --connector none/null: tell user it's no longer needed - raise ValueError( - "--connector is no longer supported for the vLLM backend. " - "'--connector none' is no longer needed — the default is already " - "no connector. Simply remove the --connector flag." - ) - - # Active connectors: show migration path - if normalized: - equiv = _connector_to_kv_transfer_json(normalized) - raise ValueError( - "--connector is no longer supported for the vLLM backend. " - "Use --kv-transfer-config instead.\n" - f" Equivalent: --kv-transfer-config '{equiv}'" - ) - - # DYN_CONNECTOR env var set but parsed to empty list - if env_connector is not None: - env_values = [v.strip().lower() for v in env_connector.split() if v.strip()] - if env_values and not all(v in ("none", "null") for v in env_values): - equiv = _connector_to_kv_transfer_json(env_values) - raise ValueError( - "The DYN_CONNECTOR environment variable is no longer supported " - "for the vLLM backend. Use --kv-transfer-config instead.\n" - f" Equivalent: --kv-transfer-config '{equiv}'" - ) - raise ValueError( - "The DYN_CONNECTOR environment variable is no longer supported " - "for the vLLM backend. Use --kv-transfer-config instead." - ) - - def get_host_ip() -> str: """Get a routable IP address of the host for NIXL side-channel coordination. diff --git a/components/src/dynamo/vllm/tests/test_vllm_unit.py b/components/src/dynamo/vllm/tests/test_vllm_unit.py index 30b7434bba69..111962497355 100644 --- a/components/src/dynamo/vllm/tests/test_vllm_unit.py +++ b/components/src/dynamo/vllm/tests/test_vllm_unit.py @@ -20,7 +20,6 @@ import dynamo.llm as dynamo_llm from dynamo.vllm import envs from dynamo.vllm.args import ( - _connector_to_kv_transfer_json, _is_routable, _uses_dynamo_connector, _uses_nixl_connector, @@ -228,31 +227,6 @@ def test_removed_multimodal_role_flags_are_rejected(flag, mock_vllm_cli): parse_args() -# --connector removal tests - - -def test_connector_nixl_raises_error_with_migration_hint(mock_vllm_cli): - """Test that --connector nixl raises ValueError with --kv-transfer-config hint.""" - mock_vllm_cli("--model", "Qwen/Qwen3-0.6B", "--connector", "nixl") - with pytest.raises(ValueError, match="--connector is no longer supported"): - parse_args() - - -def test_connector_none_raises_error(mock_vllm_cli): - """Test that --connector none raises ValueError telling user it's no longer needed.""" - mock_vllm_cli("--model", "Qwen/Qwen3-0.6B", "--connector", "none") - with pytest.raises(ValueError, match="no longer needed"): - parse_args() - - -def test_env_var_dyn_connector_raises_error(monkeypatch, mock_vllm_cli): - """Test that DYN_CONNECTOR env var raises error for vLLM backend.""" - monkeypatch.setenv("DYN_CONNECTOR", "nixl") - mock_vllm_cli("--model", "Qwen/Qwen3-0.6B") - with pytest.raises(ValueError, match="no longer supported"): - parse_args() - - def test_model_express_url_is_accepted_for_compatibility(mock_vllm_cli): """Test that legacy ModelExpress manifests still parse.""" mock_vllm_cli( @@ -286,22 +260,6 @@ def test_prefill_worker_without_kv_transfer_config_raises(mock_vllm_cli): parse_args() -def test_connector_to_kv_transfer_json_single(): - """Test _connector_to_kv_transfer_json returns valid JSON for a single connector.""" - result = json.loads(_connector_to_kv_transfer_json(["nixl"])) - assert result == {"kv_connector": "NixlConnector", "kv_role": "kv_both"} - - -def test_connector_to_kv_transfer_json_multi(): - """Test _connector_to_kv_transfer_json wraps multiple connectors in PdConnector.""" - result = json.loads(_connector_to_kv_transfer_json(["kvbm", "nixl"])) - assert result["kv_connector"] == "PdConnector" - nested = result["kv_connector_extra_config"]["connectors"] - nested_names = [c["kv_connector"] for c in nested] - assert "DynamoConnector" in nested_names - assert "NixlConnector" in nested_names - - # _uses_nixl_connector / _uses_dynamo_connector tests diff --git a/docs/fern/pages/reference/backends/vllm-configuration.mdx b/docs/fern/pages/reference/backends/vllm-configuration.mdx index a5c18400879d..3cf560f38601 100644 --- a/docs/fern/pages/reference/backends/vllm-configuration.mdx +++ b/docs/fern/pages/reference/backends/vllm-configuration.mdx @@ -91,12 +91,6 @@ python -m dynamo.vllm \ Only the prefill worker is required to set it, but both halves of a NIXL pair must agree on a connector for transfers to succeed. Pass the same `--kv-transfer-config` value to the decode worker, as the [disaggregated vLLM launch script](https://github.com/ai-dynamo/dynamo/blob/main/examples/backends/vllm/launch/disagg.sh) does. -The earlier `--connector` flag is no longer accepted by the vLLM backend. Setting it — on the command line or through the `DYN_CONNECTOR` environment variable — raises a `ValueError` during argument parsing. The message depends on the value: - -- An active connector, such as `--connector nixl` or `DYN_CONNECTOR=nixl`, reports the equivalent `--kv-transfer-config` JSON to use instead. -- `--connector none` or `--connector null` reports that the flag is no longer needed, because no connector is already the default. There is no equivalent value to migrate to, so none is shown. -- `DYN_CONNECTOR` set to an empty or whitespace-only value reports that the variable is no longer supported, without an equivalent value. - ## Worker role and disaggregation These flags control which role this worker plays in a disaggregated deployment. The default when no `--disaggregation-mode` is set is aggregated (`agg`). diff --git a/docs/fern/pages/reference/components/runtime-configuration.mdx b/docs/fern/pages/reference/components/runtime-configuration.mdx index c041a5d24808..9c82d121e6a9 100644 --- a/docs/fern/pages/reference/components/runtime-configuration.mdx +++ b/docs/fern/pages/reference/components/runtime-configuration.mdx @@ -120,12 +120,6 @@ Unless a field is marked environment-only, it has both a CLI flag and an environ Environment variable: `DYN_EVENT_PLANE` - - KV-cache transfer connector. Accepts zero or more values. Deprecated for vLLM — use `--kv-transfer-config` instead. For TRT-LLM, valid options are `nixl`, `lmcache`, `kvbm`, `null`, and `none`. - - Environment variable: `DYN_CONNECTOR` - - ## Parsing diff --git a/recipes/nemotron-3-super-fp8/README.md b/recipes/nemotron-3-super-fp8/README.md index 7d18e3eaac66..f1c7059af512 100644 --- a/recipes/nemotron-3-super-fp8/README.md +++ b/recipes/nemotron-3-super-fp8/README.md @@ -140,7 +140,6 @@ These recipes target Dynamo v1.0.0. To run on v0.9.1 containers, the following c ### vLLM (`vllm-runtime:0.9.1`) - Change image tags from `:1.1.1` to `:0.9.1` -- **Add** `--connector none` to worker args (required in 0.9.1 to disable nixl KV connector; rejected in 1.0) - Change `--dyn-reasoning-parser` from `nemotron_nano` to `deepseek_r1` (nemotron_nano reasoning parser is broken in 0.9.1) - `enable_thinking: false` will **not work** with `deepseek_r1` parser (response content goes to `reasoning_content`, `content` is null) - `--mamba-cache-mode align` is still needed (0.9.1 ships vLLM 0.14.1, also affected by [vllm#34865](https://github.com/vllm-project/vllm/issues/34865)) diff --git a/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml b/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml index 28d1c4705140..3b35b939f29c 100644 --- a/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml +++ b/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml @@ -5,7 +5,6 @@ # # Dynamo 0.9.1 compatibility notes: # - Change image tags from :1.1.1 to :0.9.1 -# - Add `--connector none` to args (required in 0.9.1, rejected in 1.0) # - Change --dyn-reasoning-parser from nemotron_nano to deepseek_r1 # (nemotron_nano reasoning parser is broken in 0.9.1) # - With deepseek_r1 parser, enable_thinking: false will not work correctly @@ -102,9 +101,6 @@ spec: # Fixed in vLLM 0.17.0 (vllm/vllm#34874). Use "align" until then. - --mamba-cache-mode - align - # --connector none is no longer needed in 1.0 (default is no connector). - # In 0.9.1, you must add: --connector none - # # Omit --kv-events-config to pair with --no-kv-events on the frontend # for approximate routing. - --dyn-tool-call-parser From e5217d85855bb891910e8f08f51ad0072ec753f7 Mon Sep 17 00:00:00 2001 From: "svc-glamr@nvidia.com" Date: Mon, 3 Aug 2026 23:46:52 +0000 Subject: [PATCH 2/6] docs(trtllm): document --connector on the TensorRT-LLM reference page The --connector flag was re-homed from the shared runtime arg group onto DynamoTrtllmArgGroup, but no ParamField was added to the TensorRT-LLM configuration page. That left a live flag documented nowhere, and left the page's claim that every field comes from the DynamoTrtllmArgGroup and DynamoTrtllmConfig definitions inaccurate. Add the missing ParamField to the KV cache and events section, scoped to the values VALID_TRTLLM_CONNECTORS actually accepts (kvbm, none). Addresses a review finding on #12611. Signed-off-by: svc-glamr@nvidia.com --- .../reference/backends/tensorrt-llm-configuration.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/fern/pages/reference/backends/tensorrt-llm-configuration.mdx b/docs/fern/pages/reference/backends/tensorrt-llm-configuration.mdx index c47efa964323..6632281badce 100644 --- a/docs/fern/pages/reference/backends/tensorrt-llm-configuration.mdx +++ b/docs/fern/pages/reference/backends/tensorrt-llm-configuration.mdx @@ -160,6 +160,14 @@ Each field is both a CLI flag and an environment variable. The CLI flag takes pr Environment variable: `DYN_TRTLLM_PUBLISH_KV_EVENTS` + + KV cache connector for the TensorRT-LLM engine. Accepts at most one value: `kvbm` enables the [KVBM](../../developer-guide/knowledge-base/modular-components/kvbm/kvbm-guide.md) integration, `none` disables it. When unset, no connector is configured. This flag is specific to TensorRT-LLM; other backends configure KV transfer through their own engine options. + + Allowed values: kvbm none + + Environment variable: `DYN_CONNECTOR` + + ## Engine args passthrough From 1ae7fcf5ba5a7c66fb16566405bb979a81074d7d Mon Sep 17 00:00:00 2001 From: Matej Kosec Date: Mon, 17 Aug 2026 13:44:38 -0700 Subject: [PATCH 3/6] fix(trtllm): drop stale connector mypy redeclare reintroduced by merge Merging main brought back `connector: list[str] # Redeclare for mypy (inherited from DynamoRuntimeConfig)` on `trtllm.args.Config`. Main added it independently (for its own router_advertisement change, still against the pre-PR world where `connector` lived on `DynamoRuntimeConfig`), while this PR's own commit had deleted that exact line because it moves `connector` onto `DynamoTrtllmConfig` directly. After the merge, `DynamoTrtllmConfig` already declares `connector: list[str]` (components/src/dynamo/trtllm/backend_args.py), so `Config` inherits it from there and the redeclare -- whose comment is now also wrong about where the field comes from -- is redundant again. Removing it restores the PR's intent. Not locally verified (no local cargo/pytest build per repo policy); CI on this PR is the check. Signed-off-by: Matej Kosec --- components/src/dynamo/trtllm/args.py | 1 - 1 file changed, 1 deletion(-) diff --git a/components/src/dynamo/trtllm/args.py b/components/src/dynamo/trtllm/args.py index 7cfd3c07ed79..cbd173b2afc9 100644 --- a/components/src/dynamo/trtllm/args.py +++ b/components/src/dynamo/trtllm/args.py @@ -49,7 +49,6 @@ class Config(DynamoRuntimeConfig, DynamoTrtllmConfig): # Routing this worker set advertises in its model card; None inherits the # frontend's configuration. router_advertisement: Optional[WorkerRouterConfig] = None - connector: list[str] # Redeclare for mypy (inherited from DynamoRuntimeConfig) def validate(self) -> None: DynamoRuntimeConfig.validate(self) From ead7f39e5875f8e3f98ca2d16db5e36380053699 Mon Sep 17 00:00:00 2001 From: Coding Agent Date: Mon, 31 Aug 2026 23:37:53 +0000 Subject: [PATCH 4/6] fix: restore connector compatibility guidance Signed-off-by: Coding Agent --- components/src/dynamo/trtllm/args.py | 2 +- components/src/dynamo/vllm/tests/omni/test_omni_args.py | 1 - recipes/nemotron-3-super-fp8/README.md | 1 + recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml | 4 ++++ 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/components/src/dynamo/trtllm/args.py b/components/src/dynamo/trtllm/args.py index cbd173b2afc9..712df5d056b1 100644 --- a/components/src/dynamo/trtllm/args.py +++ b/components/src/dynamo/trtllm/args.py @@ -67,7 +67,7 @@ def validate(self) -> None: source = ( f"DYN_CONNECTOR environment variable ('{os.environ['DYN_CONNECTOR']}')" if "DYN_CONNECTOR" in os.environ - else f"shared runtime default ('{self.connector[0]}')" + else f"--connector flag ('{self.connector[0]}')" ) logging.warning( f"TRT-LLM does not support connector '{self.connector[0]}' (set via {source}). " diff --git a/components/src/dynamo/vllm/tests/omni/test_omni_args.py b/components/src/dynamo/vllm/tests/omni/test_omni_args.py index c114cf3cd63a..900335c976ae 100644 --- a/components/src/dynamo/vllm/tests/omni/test_omni_args.py +++ b/components/src/dynamo/vllm/tests/omni/test_omni_args.py @@ -55,7 +55,6 @@ def _make_omni_config(**overrides) -> OmniConfig: "discovery_backend": "etcd", "request_plane": "tcp", "event_plane": "nats", - "connector": [], "enable_local_indexer": True, "dyn_tool_call_parser": None, "dyn_reasoning_parser": None, diff --git a/recipes/nemotron-3-super-fp8/README.md b/recipes/nemotron-3-super-fp8/README.md index f1c7059af512..2fba717ba47e 100644 --- a/recipes/nemotron-3-super-fp8/README.md +++ b/recipes/nemotron-3-super-fp8/README.md @@ -143,6 +143,7 @@ These recipes target Dynamo v1.0.0. To run on v0.9.1 containers, the following c - Change `--dyn-reasoning-parser` from `nemotron_nano` to `deepseek_r1` (nemotron_nano reasoning parser is broken in 0.9.1) - `enable_thinking: false` will **not work** with `deepseek_r1` parser (response content goes to `reasoning_content`, `content` is null) - `--mamba-cache-mode align` is still needed (0.9.1 ships vLLM 0.14.1, also affected by [vllm#34865](https://github.com/vllm-project/vllm/issues/34865)) +- **Add** `--connector none` to worker args (required in 0.9.1 to disable nixl KV connector; rejected in 1.0) ### TensorRT-LLM (`tensorrtllm-runtime:0.9.1`) - Change image tags from `:1.1.1` to `:0.9.1` diff --git a/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml b/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml index 3b35b939f29c..28d1c4705140 100644 --- a/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml +++ b/recipes/nemotron-3-super-fp8/vllm/agg/deploy.yaml @@ -5,6 +5,7 @@ # # Dynamo 0.9.1 compatibility notes: # - Change image tags from :1.1.1 to :0.9.1 +# - Add `--connector none` to args (required in 0.9.1, rejected in 1.0) # - Change --dyn-reasoning-parser from nemotron_nano to deepseek_r1 # (nemotron_nano reasoning parser is broken in 0.9.1) # - With deepseek_r1 parser, enable_thinking: false will not work correctly @@ -101,6 +102,9 @@ spec: # Fixed in vLLM 0.17.0 (vllm/vllm#34874). Use "align" until then. - --mamba-cache-mode - align + # --connector none is no longer needed in 1.0 (default is no connector). + # In 0.9.1, you must add: --connector none + # # Omit --kv-events-config to pair with --no-kv-events on the frontend # for approximate routing. - --dyn-tool-call-parser From af05a3e2d22cfad5890b5566d614893828496af6 Mon Sep 17 00:00:00 2001 From: Coding Agent Date: Tue, 1 Sep 2026 01:21:51 +0000 Subject: [PATCH 5/6] fix(trtllm): clarify connector fallback warning Signed-off-by: Coding Agent --- components/src/dynamo/trtllm/args.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/components/src/dynamo/trtllm/args.py b/components/src/dynamo/trtllm/args.py index 712df5d056b1..a83bff875cd3 100644 --- a/components/src/dynamo/trtllm/args.py +++ b/components/src/dynamo/trtllm/args.py @@ -64,13 +64,8 @@ def validate(self) -> None: "TRT-LLM supports at most one connector entry. Use `--connector none` or `--connector kvbm`." ) elif self.connector[0] not in VALID_TRTLLM_CONNECTORS: - source = ( - f"DYN_CONNECTOR environment variable ('{os.environ['DYN_CONNECTOR']}')" - if "DYN_CONNECTOR" in os.environ - else f"--connector flag ('{self.connector[0]}')" - ) logging.warning( - f"TRT-LLM does not support connector '{self.connector[0]}' (set via {source}). " + f"TRT-LLM does not support connector '{self.connector[0]}'. " f"Supported connectors: {VALID_TRTLLM_CONNECTORS}. Falling back to 'none'." ) self.connector = ["none"] From 4c7dc32e9b5fd947df69ebffa53c926563f5629d Mon Sep 17 00:00:00 2001 From: Coding Agent Date: Tue, 1 Sep 2026 01:53:46 +0000 Subject: [PATCH 6/6] fix(trtllm): use lazy connector warning formatting Signed-off-by: Coding Agent --- components/src/dynamo/trtllm/args.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/src/dynamo/trtllm/args.py b/components/src/dynamo/trtllm/args.py index a83bff875cd3..d6940ffcc2ea 100644 --- a/components/src/dynamo/trtllm/args.py +++ b/components/src/dynamo/trtllm/args.py @@ -65,8 +65,10 @@ def validate(self) -> None: ) elif self.connector[0] not in VALID_TRTLLM_CONNECTORS: logging.warning( - f"TRT-LLM does not support connector '{self.connector[0]}'. " - f"Supported connectors: {VALID_TRTLLM_CONNECTORS}. Falling back to 'none'." + "TRT-LLM does not support connector '%s'. " + "Supported connectors: %s. Falling back to 'none'.", + self.connector[0], + VALID_TRTLLM_CONNECTORS, ) self.connector = ["none"]