From ae60eab5bba147b12430ad6b39c51208c5380fd6 Mon Sep 17 00:00:00 2001 From: Anak Intern Date: Sat, 28 Feb 2026 18:54:24 +0700 Subject: [PATCH] fix: prevent duplicate listener clash on port 12001 and schema validation - envoy.template.yaml: Add conditional check to skip rendering default egress_traffic_llm listener (port 12001) if user already defined a listener on the same port. This prevents Envoy from crashing due to duplicate listeners. - plano_config_schema.yaml: Remove restrictive enum for provider_interface field in model_providers and llm_providers. The enum was too restrictive and didn't include all supported providers (azure_openai, ollama, qwen, amazon_bedrock, anthropic, together_ai, xai, moonshotai, zhipu). Now uses open string type with description for flexibility with custom providers. --- config/envoy.template.yaml | 7 +++++++ config/plano_config_schema.yaml | 18 ++---------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/config/envoy.template.yaml b/config/envoy.template.yaml index a780c3f1b..aa12b6c5a 100644 --- a/config/envoy.template.yaml +++ b/config/envoy.template.yaml @@ -457,6 +457,12 @@ static_resources: typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + {# Skip default egress_traffic_llm listener if user already defined a listener on port 12001 #} + {% set user_listener_ports = [] %} + {% for listener in listeners %} + {% set _ = user_listener_ports.append(listener.port) %} + {% endfor %} + {% if 12001 not in user_listener_ports %} - name: egress_traffic_llm address: socket_address: @@ -591,6 +597,7 @@ static_resources: - name: envoy.filters.http.router typed_config: "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router + {% endif %} clusters: diff --git a/config/plano_config_schema.yaml b/config/plano_config_schema.yaml index 7c35d2cfd..51b0b57b6 100644 --- a/config/plano_config_schema.yaml +++ b/config/plano_config_schema.yaml @@ -172,14 +172,7 @@ properties: type: string provider_interface: type: string - enum: - - arch - - claude - - deepseek - - groq - - mistral - - openai - - gemini + description: "The provider interface/name. For supported providers (openai, anthropic, gemini, etc.), specify as part of model name (e.g., 'openai/gpt-4'). For custom providers, provide the interface name here." routing_preferences: type: array items: @@ -219,14 +212,7 @@ properties: type: string provider_interface: type: string - enum: - - arch - - claude - - deepseek - - groq - - mistral - - openai - - gemini + description: "The provider interface/name. For supported providers (openai, anthropic, gemini, etc.), specify as part of model name (e.g., 'openai/gpt-4'). For custom providers, provide the interface name here." routing_preferences: type: array items: