Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions config/envoy.template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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 #}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically port 12001 is an internal port where we plugin all the WASM filters needed to process, mutate and handle LLM traffic. The users's port is defaulted to 12000 and the config allows you to update that. Because this is a reserved port, there is not an easy fix except that we export this port to the user via the config or pick something that is highly unlikely to conflict with the local dev environment.

{% 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:
Expand Down Expand Up @@ -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:

Expand Down
18 changes: 2 additions & 16 deletions config/plano_config_schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can appreciate this change - but I think for all first class providers we support we write out their upstream endpoints based on this enum. So if the developer offers a first-class provider that we don't support today then we would break because we wouldn't know which endpoint/cluster to send traffic to.

We also support developers to provide custom providers and that shouldn't conflict with this list. Although I think you are correct in stating that the provider_interface field is probably misleading. Its only really used for custom model providers and not for first-class providers at all.

I think there is a fix for this, but its not quite stripping out the enum changes. I'll have to think about that a bit more.

routing_preferences:
type: array
items:
Expand Down Expand Up @@ -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:
Expand Down