2024-07-30 16:23:23 -07:00
|
|
|
admin:
|
|
|
|
|
address:
|
|
|
|
|
socket_address: { address: 0.0.0.0, port_value: 9901 }
|
2024-12-12 14:38:36 -08:00
|
|
|
|
|
|
|
|
stats_config:
|
|
|
|
|
histogram_bucket_settings:
|
|
|
|
|
match:
|
|
|
|
|
exact: "wasmcustom.time_to_first_token"
|
|
|
|
|
buckets:
|
|
|
|
|
- 100
|
|
|
|
|
- 500
|
|
|
|
|
- 800
|
|
|
|
|
- 1000
|
|
|
|
|
- 1200
|
|
|
|
|
- 1400
|
|
|
|
|
- 1600
|
|
|
|
|
- 1800
|
|
|
|
|
- 2000
|
|
|
|
|
- 2200
|
|
|
|
|
- 2400
|
|
|
|
|
- 3000
|
|
|
|
|
- 3500
|
|
|
|
|
- 4000
|
|
|
|
|
- 4500
|
|
|
|
|
- 5000
|
|
|
|
|
- 6000
|
|
|
|
|
- 10000
|
|
|
|
|
- 60000
|
|
|
|
|
- 180000
|
2024-07-30 16:23:23 -07:00
|
|
|
static_resources:
|
|
|
|
|
listeners:
|
2025-02-14 19:28:10 -08:00
|
|
|
- name: ingress_traffic
|
2024-10-08 16:24:08 -07:00
|
|
|
address:
|
|
|
|
|
socket_address:
|
2025-02-14 19:28:10 -08:00
|
|
|
address: {{ prompt_gateway_listener.address }}
|
|
|
|
|
port_value: {{ prompt_gateway_listener.port }}
|
2024-10-08 16:24:08 -07:00
|
|
|
traffic_direction: INBOUND
|
|
|
|
|
filter_chains:
|
|
|
|
|
- filters:
|
|
|
|
|
- name: envoy.filters.network.http_connection_manager
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% if "random_sampling" in plano_tracing and plano_tracing["random_sampling"] > 0 %}
|
2024-10-08 16:24:08 -07:00
|
|
|
generate_request_id: true
|
|
|
|
|
tracing:
|
|
|
|
|
provider:
|
|
|
|
|
name: envoy.tracers.opentelemetry
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.config.trace.v3.OpenTelemetryConfig
|
|
|
|
|
grpc_service:
|
|
|
|
|
envoy_grpc:
|
|
|
|
|
cluster_name: opentelemetry_collector
|
|
|
|
|
timeout: 0.250s
|
2025-12-11 15:21:57 -08:00
|
|
|
service_name: plano(inbound)
|
2024-10-08 16:24:08 -07:00
|
|
|
random_sampling:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
value: {{ plano_tracing.random_sampling }}
|
2026-02-09 13:33:27 -08:00
|
|
|
operation: "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
|
2024-10-08 16:24:08 -07:00
|
|
|
{% endif %}
|
2025-12-11 15:21:57 -08:00
|
|
|
stat_prefix: plano(inbound)
|
2024-10-08 16:24:08 -07:00
|
|
|
codec_type: AUTO
|
|
|
|
|
scheme_header_transformation:
|
|
|
|
|
scheme_to_overwrite: https
|
|
|
|
|
access_log:
|
|
|
|
|
- name: envoy.access_loggers.file
|
2024-07-30 16:23:23 -07:00
|
|
|
typed_config:
|
2024-10-08 16:24:08 -07:00
|
|
|
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
|
2024-10-09 15:47:32 -07:00
|
|
|
path: "/var/log/access_ingress.log"
|
2025-09-30 18:46:13 -07:00
|
|
|
format: |
|
|
|
|
|
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%UPSTREAM_CLUSTER%"
|
2024-10-08 16:24:08 -07:00
|
|
|
route_config:
|
|
|
|
|
name: local_routes
|
|
|
|
|
virtual_hosts:
|
|
|
|
|
- name: local_service
|
|
|
|
|
domains:
|
|
|
|
|
- "*"
|
|
|
|
|
routes:
|
|
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
2024-10-09 15:47:32 -07:00
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
2024-11-07 22:11:00 -06:00
|
|
|
cluster: arch_prompt_gateway_listener
|
2025-02-14 19:28:10 -08:00
|
|
|
timeout: {{ prompt_gateway_listener.timeout }}
|
2024-11-07 22:11:00 -06:00
|
|
|
http_filters:
|
|
|
|
|
- name: envoy.filters.http.router
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
|
|
|
|
|
2025-02-14 19:28:10 -08:00
|
|
|
- name: ingress_traffic_prompt
|
2024-11-07 22:11:00 -06:00
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port_value: 10001
|
|
|
|
|
traffic_direction: INBOUND
|
|
|
|
|
filter_chains:
|
|
|
|
|
- filters:
|
|
|
|
|
- name: envoy.filters.network.http_connection_manager
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
|
2025-02-14 19:28:10 -08:00
|
|
|
stat_prefix: ingress_traffic
|
2024-11-07 22:11:00 -06:00
|
|
|
codec_type: AUTO
|
|
|
|
|
scheme_header_transformation:
|
|
|
|
|
scheme_to_overwrite: https
|
|
|
|
|
access_log:
|
|
|
|
|
- name: envoy.access_loggers.file
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
|
|
|
|
|
path: "/var/log/access_ingress_prompt.log"
|
2025-09-30 18:46:13 -07:00
|
|
|
format: |
|
|
|
|
|
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%UPSTREAM_CLUSTER%"
|
2024-11-07 22:11:00 -06:00
|
|
|
route_config:
|
|
|
|
|
name: local_routes
|
|
|
|
|
virtual_hosts:
|
|
|
|
|
- name: local_service
|
|
|
|
|
domains:
|
|
|
|
|
- "*"
|
|
|
|
|
routes:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% for provider in plano_model_providers %}
|
2025-01-17 18:25:55 -08:00
|
|
|
# if endpoint is set then use custom cluster for upstream llm
|
|
|
|
|
{% if provider.endpoint %}
|
2025-09-18 18:36:30 -07:00
|
|
|
{% set llm_cluster_name = provider.cluster_name %}
|
2025-01-17 18:25:55 -08:00
|
|
|
{% else %}
|
|
|
|
|
{% set llm_cluster_name = provider.provider_interface %}
|
|
|
|
|
{% endif %}
|
2024-11-07 22:11:00 -06:00
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
headers:
|
|
|
|
|
- name: "x-arch-llm-provider"
|
|
|
|
|
string_match:
|
2025-01-17 18:25:55 -08:00
|
|
|
exact: {{ llm_cluster_name }}
|
2024-11-07 22:11:00 -06:00
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
2025-01-17 18:25:55 -08:00
|
|
|
cluster: {{ llm_cluster_name }}
|
2025-09-29 19:23:08 -07:00
|
|
|
timeout: 300s
|
2024-11-07 22:11:00 -06:00
|
|
|
{% endfor %}
|
2025-03-19 15:21:34 -07:00
|
|
|
|
|
|
|
|
{% if agent_orchestrator %}
|
|
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
headers:
|
|
|
|
|
- name: "x-arch-llm-provider"
|
|
|
|
|
string_match:
|
|
|
|
|
exact: {{ agent_orchestrator }}
|
|
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
|
|
|
|
cluster: {{ agent_orchestrator }}
|
2025-09-29 19:23:08 -07:00
|
|
|
timeout: 300s
|
2025-03-19 15:21:34 -07:00
|
|
|
{% endif %}
|
2024-10-08 16:24:08 -07:00
|
|
|
http_filters:
|
2024-10-28 20:05:06 -04:00
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: compress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
|
|
|
|
|
memory_level: 3
|
|
|
|
|
window_bits: 10
|
2024-11-12 11:09:40 -08:00
|
|
|
- name: envoy.filters.http.wasm_prompt
|
2024-10-08 16:24:08 -07:00
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
|
|
|
|
|
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
|
|
|
|
|
value:
|
|
|
|
|
config:
|
|
|
|
|
name: "http_config"
|
2024-10-09 15:47:32 -07:00
|
|
|
root_id: prompt_gateway
|
2024-10-08 16:24:08 -07:00
|
|
|
configuration:
|
|
|
|
|
"@type": "type.googleapis.com/google.protobuf.StringValue"
|
|
|
|
|
value: |
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{{ plano_config | indent(32) }}
|
2024-10-08 16:24:08 -07:00
|
|
|
vm_config:
|
|
|
|
|
runtime: "envoy.wasm.runtime.v8"
|
|
|
|
|
code:
|
|
|
|
|
local:
|
2024-10-16 14:20:26 -07:00
|
|
|
filename: "/etc/envoy/proxy-wasm-plugins/prompt_gateway.wasm"
|
2024-11-12 11:09:40 -08:00
|
|
|
- name: envoy.filters.http.wasm_llm
|
2024-11-07 22:11:00 -06:00
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
|
|
|
|
|
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
|
|
|
|
|
value:
|
|
|
|
|
config:
|
|
|
|
|
name: "http_config"
|
|
|
|
|
root_id: llm_gateway
|
|
|
|
|
configuration:
|
|
|
|
|
"@type": "type.googleapis.com/google.protobuf.StringValue"
|
|
|
|
|
value: |
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{{ plano_llm_config | indent(32) }}
|
2024-11-07 22:11:00 -06:00
|
|
|
vm_config:
|
|
|
|
|
runtime: "envoy.wasm.runtime.v8"
|
|
|
|
|
code:
|
|
|
|
|
local:
|
|
|
|
|
filename: "/etc/envoy/proxy-wasm-plugins/llm_gateway.wasm"
|
2024-10-28 20:05:06 -04:00
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: decompress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": "type.googleapis.com/envoy.extensions.compression.gzip.decompressor.v3.Gzip"
|
|
|
|
|
window_bits: 9
|
|
|
|
|
chunk_size: 8192
|
|
|
|
|
# If this ratio is set too low, then body data will not be decompressed completely.
|
|
|
|
|
max_inflate_ratio: 1000
|
2024-10-08 16:24:08 -07:00
|
|
|
- name: envoy.filters.http.router
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
|
|
|
|
|
2025-10-14 14:01:11 -07:00
|
|
|
- name: outbound_api_traffic
|
2024-10-08 16:24:08 -07:00
|
|
|
address:
|
|
|
|
|
socket_address:
|
2026-02-09 13:33:27 -08:00
|
|
|
address: 0.0.0.0
|
2024-10-08 16:24:08 -07:00
|
|
|
port_value: 11000
|
|
|
|
|
traffic_direction: OUTBOUND
|
|
|
|
|
filter_chains:
|
|
|
|
|
- filters:
|
|
|
|
|
- name: envoy.filters.network.http_connection_manager
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
# {% if "random_sampling" in plano_tracing and plano_tracing["random_sampling"] > 0 %}
|
2025-12-17 17:30:14 -08:00
|
|
|
# generate_request_id: true
|
|
|
|
|
# tracing:
|
|
|
|
|
# provider:
|
|
|
|
|
# name: envoy.tracers.opentelemetry
|
|
|
|
|
# typed_config:
|
|
|
|
|
# "@type": type.googleapis.com/envoy.config.trace.v3.OpenTelemetryConfig
|
|
|
|
|
# grpc_service:
|
|
|
|
|
# envoy_grpc:
|
|
|
|
|
# cluster_name: opentelemetry_collector
|
|
|
|
|
# timeout: 0.250s
|
|
|
|
|
# service_name: tools
|
|
|
|
|
# random_sampling:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
# value: {{ plano_tracing.random_sampling }}
|
2025-12-17 17:30:14 -08:00
|
|
|
# {% endif %}
|
2025-10-14 14:01:11 -07:00
|
|
|
stat_prefix: outbound_api_traffic
|
2024-10-08 16:24:08 -07:00
|
|
|
codec_type: AUTO
|
|
|
|
|
scheme_header_transformation:
|
|
|
|
|
scheme_to_overwrite: https
|
|
|
|
|
access_log:
|
|
|
|
|
- name: envoy.access_loggers.file
|
2024-07-30 16:23:23 -07:00
|
|
|
typed_config:
|
2024-10-08 16:24:08 -07:00
|
|
|
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
|
2024-10-09 15:47:32 -07:00
|
|
|
path: "/var/log/access_internal.log"
|
2025-09-30 18:46:13 -07:00
|
|
|
format: |
|
|
|
|
|
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%UPSTREAM_CLUSTER%"
|
2024-10-08 16:24:08 -07:00
|
|
|
route_config:
|
|
|
|
|
name: local_routes
|
|
|
|
|
virtual_hosts:
|
|
|
|
|
- name: local_service
|
|
|
|
|
domains:
|
|
|
|
|
- "*"
|
|
|
|
|
routes:
|
|
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
headers:
|
|
|
|
|
- name: "x-arch-upstream"
|
|
|
|
|
string_match:
|
2025-11-22 12:55:00 -08:00
|
|
|
exact: bright_staff
|
2024-10-08 16:24:08 -07:00
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
2025-11-22 12:55:00 -08:00
|
|
|
cluster: bright_staff
|
2025-09-29 19:23:08 -07:00
|
|
|
timeout: 300s
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% for cluster_name, cluster in plano_clusters.items() %}
|
2024-10-08 16:24:08 -07:00
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
headers:
|
|
|
|
|
- name: "x-arch-upstream"
|
|
|
|
|
string_match:
|
2024-12-20 13:25:01 -08:00
|
|
|
exact: {{ cluster_name }}
|
2024-10-08 16:24:08 -07:00
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
2024-12-20 13:25:01 -08:00
|
|
|
cluster: {{ cluster_name }}
|
2025-09-29 19:23:08 -07:00
|
|
|
timeout: 300s
|
2024-10-08 16:24:08 -07:00
|
|
|
{% endfor %}
|
|
|
|
|
http_filters:
|
|
|
|
|
- name: envoy.filters.http.router
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
2024-10-09 15:47:32 -07:00
|
|
|
|
2025-10-14 14:01:11 -07:00
|
|
|
{% for listener in listeners %}
|
|
|
|
|
|
|
|
|
|
{% if listener.agents %}
|
|
|
|
|
|
2026-01-28 17:18:20 -08:00
|
|
|
# agent listeners
|
2025-10-14 14:01:11 -07:00
|
|
|
- name: {{ listener.name | replace(" ", "_") }}
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port_value: {{ listener.port }}
|
|
|
|
|
filter_chains:
|
|
|
|
|
- filters:
|
|
|
|
|
- name: envoy.filters.network.http_connection_manager
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% if "random_sampling" in plano_tracing and plano_tracing["random_sampling"] > 0 %}
|
2025-10-14 14:01:11 -07:00
|
|
|
generate_request_id: true
|
|
|
|
|
tracing:
|
|
|
|
|
provider:
|
|
|
|
|
name: envoy.tracers.opentelemetry
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.config.trace.v3.OpenTelemetryConfig
|
|
|
|
|
grpc_service:
|
|
|
|
|
envoy_grpc:
|
|
|
|
|
cluster_name: opentelemetry_collector
|
|
|
|
|
timeout: 0.250s
|
2025-12-17 17:30:14 -08:00
|
|
|
service_name: plano(inbound)
|
2025-10-14 14:01:11 -07:00
|
|
|
random_sampling:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
value: {{ plano_tracing.random_sampling }}
|
2026-02-09 13:33:27 -08:00
|
|
|
operation: "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
|
2025-10-14 14:01:11 -07:00
|
|
|
{% endif %}
|
|
|
|
|
stat_prefix: {{ listener.name | replace(" ", "_") }}_traffic
|
|
|
|
|
codec_type: AUTO
|
|
|
|
|
scheme_header_transformation:
|
|
|
|
|
scheme_to_overwrite: https
|
|
|
|
|
access_log:
|
|
|
|
|
- name: envoy.access_loggers.file
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
|
2026-01-07 08:44:41 -08:00
|
|
|
path: "/var/log/access_agent.log"
|
2025-10-14 14:01:11 -07:00
|
|
|
route_config:
|
|
|
|
|
name: local_routes
|
|
|
|
|
request_headers_to_add:
|
|
|
|
|
- header:
|
|
|
|
|
key: "x-arch-agent-listener-name"
|
|
|
|
|
value: "{{ listener.name }}"
|
|
|
|
|
virtual_hosts:
|
|
|
|
|
- name: local_service
|
|
|
|
|
domains:
|
|
|
|
|
- "*"
|
|
|
|
|
routes:
|
|
|
|
|
- match:
|
|
|
|
|
prefix: "/healthz"
|
|
|
|
|
direct_response:
|
|
|
|
|
status: 200
|
|
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
|
|
|
|
prefix_rewrite: "/agents/"
|
|
|
|
|
cluster: bright_staff
|
2026-01-28 17:18:20 -08:00
|
|
|
timeout: {{ listener.timeout | default('30s') }}
|
2025-10-14 14:01:11 -07:00
|
|
|
http_filters:
|
|
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: envoy.compression.brotli.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.brotli.compressor.v3.Brotli
|
|
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: compress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
|
|
|
|
|
memory_level: 3
|
|
|
|
|
window_bits: 10
|
|
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: decompress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": "type.googleapis.com/envoy.extensions.compression.gzip.decompressor.v3.Gzip"
|
|
|
|
|
window_bits: 9
|
|
|
|
|
chunk_size: 8192
|
|
|
|
|
# If this ratio is set too low, then body data will not be decompressed completely.
|
|
|
|
|
max_inflate_ratio: 1000
|
|
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: envoy.compression.brotli.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.brotli.decompressor.v3.Brotli
|
|
|
|
|
- name: envoy.filters.http.router
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
|
|
|
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% endfor %}
|
|
|
|
|
|
2025-02-14 19:28:10 -08:00
|
|
|
- name: egress_traffic
|
2024-10-09 15:47:32 -07:00
|
|
|
address:
|
|
|
|
|
socket_address:
|
2025-02-14 19:28:10 -08:00
|
|
|
address: {{ llm_gateway_listener.address }}
|
|
|
|
|
port_value: {{ llm_gateway_listener.port }}
|
|
|
|
|
traffic_direction: OUTBOUND
|
2024-11-15 10:44:01 -08:00
|
|
|
filter_chains:
|
|
|
|
|
- filters:
|
|
|
|
|
- name: envoy.filters.network.http_connection_manager
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
|
2025-02-14 19:28:10 -08:00
|
|
|
stat_prefix: egress_traffic
|
2024-11-15 10:44:01 -08:00
|
|
|
codec_type: AUTO
|
|
|
|
|
scheme_header_transformation:
|
|
|
|
|
scheme_to_overwrite: https
|
|
|
|
|
access_log:
|
|
|
|
|
- name: envoy.access_loggers.file
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
|
|
|
|
|
path: "/var/log/access_llm.log"
|
2025-09-30 18:46:13 -07:00
|
|
|
format: |
|
2026-01-28 20:31:01 -08:00
|
|
|
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%UPSTREAM_CLUSTER%" attempts=%UPSTREAM_REQUEST_ATTEMPT_COUNT%
|
2024-11-15 10:44:01 -08:00
|
|
|
route_config:
|
|
|
|
|
name: local_routes
|
|
|
|
|
virtual_hosts:
|
|
|
|
|
- name: local_service
|
|
|
|
|
domains:
|
|
|
|
|
- "*"
|
|
|
|
|
routes:
|
2025-05-19 09:59:22 -07:00
|
|
|
- match:
|
|
|
|
|
prefix: "/healthz"
|
|
|
|
|
direct_response:
|
|
|
|
|
status: 200
|
2024-11-15 10:44:01 -08:00
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
2025-05-19 09:59:22 -07:00
|
|
|
cluster: bright_staff
|
2025-02-14 19:28:10 -08:00
|
|
|
timeout: {{ llm_gateway_listener.timeout }}
|
2024-11-15 10:44:01 -08:00
|
|
|
http_filters:
|
2025-06-05 17:00:14 -07:00
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: envoy.compression.brotli.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.brotli.compressor.v3.Brotli
|
2025-05-28 15:06:52 -07:00
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: compress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
|
|
|
|
|
memory_level: 3
|
|
|
|
|
window_bits: 10
|
|
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: decompress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": "type.googleapis.com/envoy.extensions.compression.gzip.decompressor.v3.Gzip"
|
|
|
|
|
window_bits: 9
|
|
|
|
|
chunk_size: 8192
|
|
|
|
|
# If this ratio is set too low, then body data will not be decompressed completely.
|
|
|
|
|
max_inflate_ratio: 1000
|
2025-06-05 17:00:14 -07:00
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: envoy.compression.brotli.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.brotli.decompressor.v3.Brotli
|
2024-11-15 10:44:01 -08:00
|
|
|
- name: envoy.filters.http.router
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
|
|
|
|
|
2025-02-14 19:28:10 -08:00
|
|
|
- name: egress_traffic_llm
|
2024-11-15 10:44:01 -08:00
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port_value: 12001
|
2024-10-09 15:47:32 -07:00
|
|
|
filter_chains:
|
|
|
|
|
- filters:
|
|
|
|
|
- name: envoy.filters.network.http_connection_manager
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% if "random_sampling" in plano_tracing and plano_tracing["random_sampling"] > 0 %}
|
2026-02-09 13:33:27 -08:00
|
|
|
generate_request_id: true
|
|
|
|
|
tracing:
|
|
|
|
|
provider:
|
|
|
|
|
name: envoy.tracers.opentelemetry
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.config.trace.v3.OpenTelemetryConfig
|
|
|
|
|
grpc_service:
|
|
|
|
|
envoy_grpc:
|
|
|
|
|
cluster_name: opentelemetry_collector
|
|
|
|
|
timeout: 0.250s
|
|
|
|
|
service_name: plano(outbound)
|
|
|
|
|
random_sampling:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
value: {{ plano_tracing.random_sampling }}
|
2026-02-09 13:33:27 -08:00
|
|
|
operation: "%REQ(:METHOD)% %REQ(:AUTHORITY)%%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
|
|
|
|
|
{% endif %}
|
2025-02-14 19:28:10 -08:00
|
|
|
stat_prefix: egress_traffic
|
2024-10-09 15:47:32 -07:00
|
|
|
codec_type: AUTO
|
|
|
|
|
scheme_header_transformation:
|
|
|
|
|
scheme_to_overwrite: https
|
|
|
|
|
access_log:
|
|
|
|
|
- name: envoy.access_loggers.file
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
|
|
|
|
|
path: "/var/log/access_llm.log"
|
2025-09-30 18:46:13 -07:00
|
|
|
format: |
|
2026-01-28 20:31:01 -08:00
|
|
|
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%UPSTREAM_CLUSTER%" attempts=%UPSTREAM_REQUEST_ATTEMPT_COUNT%
|
2024-10-09 15:47:32 -07:00
|
|
|
route_config:
|
|
|
|
|
name: local_routes
|
|
|
|
|
virtual_hosts:
|
|
|
|
|
- name: local_service
|
|
|
|
|
domains:
|
|
|
|
|
- "*"
|
|
|
|
|
routes:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% for provider in plano_model_providers %}
|
2025-01-17 18:25:55 -08:00
|
|
|
# if endpoint is set then use custom cluster for upstream llm
|
|
|
|
|
{% if provider.endpoint %}
|
2025-09-18 18:36:30 -07:00
|
|
|
{% set llm_cluster_name = provider.cluster_name %}
|
2025-01-17 18:25:55 -08:00
|
|
|
{% else %}
|
|
|
|
|
{% set llm_cluster_name = provider.provider_interface %}
|
|
|
|
|
{% endif %}
|
2024-10-09 15:47:32 -07:00
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
headers:
|
|
|
|
|
- name: "x-arch-llm-provider"
|
|
|
|
|
string_match:
|
2025-01-17 18:25:55 -08:00
|
|
|
exact: {{ llm_cluster_name }}
|
2024-10-09 15:47:32 -07:00
|
|
|
route:
|
|
|
|
|
auto_host_rewrite: true
|
2025-01-17 18:25:55 -08:00
|
|
|
cluster: {{ llm_cluster_name }}
|
2025-09-29 19:23:08 -07:00
|
|
|
timeout: 300s
|
2026-01-28 20:31:01 -08:00
|
|
|
{% if llm_gateway_listener.max_retries %}
|
|
|
|
|
retry_policy:
|
|
|
|
|
retry_on: "5xx,connect-failure,refused-stream,reset,retriable-status-codes"
|
|
|
|
|
num_retries: {{ llm_gateway_listener.max_retries }}
|
|
|
|
|
per_try_timeout: 30s
|
|
|
|
|
retriable_status_codes: [429, 500, 502, 503, 504]
|
|
|
|
|
retry_back_off:
|
|
|
|
|
base_interval: 0.5s
|
|
|
|
|
max_interval: 5s
|
|
|
|
|
{% endif %}
|
2024-10-09 15:47:32 -07:00
|
|
|
{% endfor %}
|
|
|
|
|
- match:
|
|
|
|
|
prefix: "/"
|
|
|
|
|
direct_response:
|
|
|
|
|
status: 400
|
|
|
|
|
body:
|
2024-10-17 10:16:40 -07:00
|
|
|
inline_string: "x-arch-llm-provider header not set, llm gateway cannot perform routing\n"
|
2024-10-09 15:47:32 -07:00
|
|
|
http_filters:
|
2025-06-05 17:00:14 -07:00
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: envoy.compression.brotli.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.brotli.compressor.v3.Brotli
|
2025-06-11 15:15:00 -07:00
|
|
|
chunk_size: 8192
|
2024-10-28 20:05:06 -04:00
|
|
|
- name: envoy.filters.http.compressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
|
|
|
|
|
compressor_library:
|
|
|
|
|
name: compress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip
|
|
|
|
|
memory_level: 3
|
|
|
|
|
window_bits: 10
|
2024-10-09 15:47:32 -07:00
|
|
|
- name: envoy.filters.http.wasm
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/udpa.type.v1.TypedStruct
|
|
|
|
|
type_url: type.googleapis.com/envoy.extensions.filters.http.wasm.v3.Wasm
|
|
|
|
|
value:
|
|
|
|
|
config:
|
|
|
|
|
name: "http_config"
|
|
|
|
|
root_id: llm_gateway
|
|
|
|
|
configuration:
|
|
|
|
|
"@type": "type.googleapis.com/google.protobuf.StringValue"
|
|
|
|
|
value: |
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{{ plano_llm_config | indent(32) }}
|
2024-10-09 15:47:32 -07:00
|
|
|
vm_config:
|
|
|
|
|
runtime: "envoy.wasm.runtime.v8"
|
|
|
|
|
code:
|
|
|
|
|
local:
|
2024-10-17 10:16:40 -07:00
|
|
|
filename: "/etc/envoy/proxy-wasm-plugins/llm_gateway.wasm"
|
2024-10-28 20:05:06 -04:00
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: decompress
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": "type.googleapis.com/envoy.extensions.compression.gzip.decompressor.v3.Gzip"
|
|
|
|
|
chunk_size: 8192
|
|
|
|
|
# If this ratio is set too low, then body data will not be decompressed completely.
|
|
|
|
|
max_inflate_ratio: 1000
|
2025-06-05 17:00:14 -07:00
|
|
|
- name: envoy.filters.http.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor
|
|
|
|
|
decompressor_library:
|
|
|
|
|
name: envoy.compression.brotli.decompressor
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.compression.brotli.decompressor.v3.Brotli
|
2025-06-11 15:15:00 -07:00
|
|
|
chunk_size: 8192
|
2024-10-09 15:47:32 -07:00
|
|
|
- name: envoy.filters.http.router
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
|
|
|
|
|
2024-07-30 16:23:23 -07:00
|
|
|
clusters:
|
2025-05-22 22:55:46 -07:00
|
|
|
|
2026-03-15 09:36:11 -07:00
|
|
|
- name: plano
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-05-30 17:12:52 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
2026-03-15 09:36:11 -07:00
|
|
|
cluster_name: plano
|
2025-05-30 17:12:52 -07:00
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: archfc.katanemo.dev
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "archfc.katanemo.dev"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: archfc.katanemo.dev
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-05-30 17:12:52 -07:00
|
|
|
|
2025-09-10 07:40:30 -07:00
|
|
|
- name: anthropic
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2024-07-30 16:23:23 -07:00
|
|
|
type: LOGICAL_DNS
|
2024-10-05 19:25:16 -07:00
|
|
|
dns_lookup_family: V4_ONLY
|
2024-07-30 16:23:23 -07:00
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
2025-09-10 07:40:30 -07:00
|
|
|
cluster_name: anthropic
|
2024-07-30 16:23:23 -07:00
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
2025-05-22 22:55:46 -07:00
|
|
|
address: api.anthropic.com
|
2024-07-30 16:23:23 -07:00
|
|
|
port_value: 443
|
2025-05-22 22:55:46 -07:00
|
|
|
hostname: "api.anthropic.com"
|
2024-07-30 16:23:23 -07:00
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
2025-05-22 22:55:46 -07:00
|
|
|
sni: api.anthropic.com
|
2024-07-30 16:23:23 -07:00
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
|
|
|
|
|
- name: deepseek
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: deepseek
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.deepseek.com
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.deepseek.com"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.deepseek.com
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
|
2025-09-18 18:36:30 -07:00
|
|
|
- name: xai
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-09-18 18:36:30 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: xai
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.x.ai
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.x.ai"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.x.ai
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-09-18 18:36:30 -07:00
|
|
|
|
2025-09-30 12:24:06 -07:00
|
|
|
- name: moonshotai
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-09-30 12:24:06 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: moonshotai
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.moonshot.ai
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.moonshot.ai"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.moonshot.ai
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-09-30 12:24:06 -07:00
|
|
|
|
|
|
|
|
- name: zhipu
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-09-30 12:24:06 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: zhipu
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: open.bigmodel.cn
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "open.bigmodel.cn"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: open.bigmodel.cn
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-09-30 12:24:06 -07:00
|
|
|
|
2025-09-18 18:36:30 -07:00
|
|
|
- name: together_ai
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-09-18 18:36:30 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: xai
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.together.xyz
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.together.xyz"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.together.xyz
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-09-18 18:36:30 -07:00
|
|
|
|
2025-05-22 22:55:46 -07:00
|
|
|
- name: gemini
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: gemini
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: generativelanguage.googleapis.com
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "generativelanguage.googleapis.com"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: generativelanguage.googleapis.com
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
|
|
|
|
|
- name: groq
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: groq
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.groq.com
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.groq.com"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.groq.com
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
|
2024-09-26 00:15:17 -06:00
|
|
|
- name: mistral
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2024-09-26 00:15:17 -06:00
|
|
|
type: LOGICAL_DNS
|
2024-10-05 19:25:16 -07:00
|
|
|
dns_lookup_family: V4_ONLY
|
2024-09-26 00:15:17 -06:00
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: mistral
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.mistral.ai
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.mistral.ai"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.mistral.ai
|
2026-02-18 01:19:20 -08:00
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
|
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
|
|
|
|
|
- name: openai
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-05-22 22:55:46 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: openai
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: api.openai.com
|
|
|
|
|
port_value: 443
|
|
|
|
|
hostname: "api.openai.com"
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: api.openai.com
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2024-08-06 23:40:06 -07:00
|
|
|
- name: mistral_7b_instruct
|
2025-02-14 19:28:10 -08:00
|
|
|
connect_timeout: 0.5s
|
2024-08-06 23:40:06 -07:00
|
|
|
type: STRICT_DNS
|
2024-10-05 19:25:16 -07:00
|
|
|
dns_lookup_family: V4_ONLY
|
2024-08-06 23:40:06 -07:00
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
2024-09-16 19:20:07 -07:00
|
|
|
cluster_name: mistral_7b_instruct
|
2024-08-06 23:40:06 -07:00
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: mistral_7b_instruct
|
|
|
|
|
port_value: 10001
|
|
|
|
|
hostname: "mistral_7b_instruct"
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% for cluster_name, cluster in plano_clusters.items() %}
|
2024-12-20 13:25:01 -08:00
|
|
|
- name: {{ cluster_name }}
|
2024-09-30 17:49:05 -07:00
|
|
|
{% if cluster.connect_timeout -%}
|
|
|
|
|
connect_timeout: {{ cluster.connect_timeout }}
|
|
|
|
|
{% else -%}
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2024-09-30 17:49:05 -07:00
|
|
|
{% endif -%}
|
2024-10-03 18:21:27 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
2024-09-18 20:03:26 -07:00
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
2024-12-20 13:25:01 -08:00
|
|
|
cluster_name: {{ cluster_name }}
|
2024-09-18 20:03:26 -07:00
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
2024-09-30 17:49:05 -07:00
|
|
|
address: {{ cluster.endpoint }}
|
2024-09-18 20:03:26 -07:00
|
|
|
port_value: {{ cluster.port }}
|
2025-02-03 14:51:59 -08:00
|
|
|
{% if cluster.http_host %}
|
|
|
|
|
hostname: {{ cluster.http_host }}
|
|
|
|
|
{% else %}
|
2024-12-06 14:37:33 -08:00
|
|
|
hostname: {{ cluster.endpoint }}
|
2025-02-03 14:51:59 -08:00
|
|
|
{% endif %}
|
2024-12-06 14:37:33 -08:00
|
|
|
{% if cluster.protocol == "https" %}
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: {{ cluster.endpoint }}
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2024-12-06 14:37:33 -08:00
|
|
|
{% endif %}
|
2024-09-18 20:03:26 -07:00
|
|
|
{% endfor %}
|
2025-01-17 18:25:55 -08:00
|
|
|
|
|
|
|
|
{% for local_llm_provider in local_llms %}
|
2025-09-18 18:36:30 -07:00
|
|
|
- name: {{ local_llm_provider.cluster_name }}
|
2026-02-18 01:19:20 -08:00
|
|
|
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
2025-01-17 18:25:55 -08:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
2025-09-18 18:36:30 -07:00
|
|
|
cluster_name: {{ local_llm_provider.cluster_name }}
|
2025-01-17 18:25:55 -08:00
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: {{ local_llm_provider.endpoint }}
|
|
|
|
|
port_value: {{ local_llm_provider.port }}
|
2025-02-03 14:51:59 -08:00
|
|
|
{% if local_llm_provider.http_host %}
|
|
|
|
|
hostname: {{ local_llm_provider.http_host }}
|
|
|
|
|
{% else %}
|
2025-01-17 18:25:55 -08:00
|
|
|
hostname: {{ local_llm_provider.endpoint }}
|
2025-02-03 14:51:59 -08:00
|
|
|
{% endif %}
|
2025-01-24 17:14:24 -08:00
|
|
|
{% if local_llm_provider.protocol == "https" %}
|
|
|
|
|
transport_socket:
|
|
|
|
|
name: envoy.transport_sockets.tls
|
|
|
|
|
typed_config:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
|
|
|
|
sni: {{ local_llm_provider.endpoint }}
|
|
|
|
|
common_tls_context:
|
|
|
|
|
tls_params:
|
|
|
|
|
tls_minimum_protocol_version: TLSv1_2
|
|
|
|
|
tls_maximum_protocol_version: TLSv1_3
|
2026-02-18 01:19:20 -08:00
|
|
|
validation_context:
|
|
|
|
|
trusted_ca:
|
|
|
|
|
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
2025-01-24 17:14:24 -08:00
|
|
|
{% endif %}
|
|
|
|
|
|
2025-01-17 18:25:55 -08:00
|
|
|
{% endfor %}
|
2024-10-08 16:24:08 -07:00
|
|
|
- name: arch_internal
|
2025-02-14 19:28:10 -08:00
|
|
|
connect_timeout: 0.5s
|
2024-10-08 16:24:08 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: arch_internal
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port_value: 11000
|
|
|
|
|
hostname: arch_internal
|
|
|
|
|
|
2025-05-19 09:59:22 -07:00
|
|
|
- name: bright_staff
|
|
|
|
|
connect_timeout: 0.5s
|
|
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: bright_staff
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port_value: 9091
|
|
|
|
|
hostname: localhost
|
|
|
|
|
|
2024-11-07 22:11:00 -06:00
|
|
|
- name: arch_prompt_gateway_listener
|
2025-02-14 19:28:10 -08:00
|
|
|
connect_timeout: 0.5s
|
2024-10-09 15:47:32 -07:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
2024-11-07 22:11:00 -06:00
|
|
|
cluster_name: arch_prompt_gateway_listener
|
2024-10-09 15:47:32 -07:00
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
2024-11-07 22:11:00 -06:00
|
|
|
port_value: 10001
|
|
|
|
|
hostname: arch_prompt_gateway_listener
|
2024-10-09 15:47:32 -07:00
|
|
|
|
2024-11-15 10:44:01 -08:00
|
|
|
- name: arch_listener_llm
|
2025-02-14 19:28:10 -08:00
|
|
|
connect_timeout: 0.5s
|
2024-11-15 10:44:01 -08:00
|
|
|
type: LOGICAL_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: arch_listener_llm
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
|
|
|
|
address: 0.0.0.0
|
|
|
|
|
port_value: 12001
|
|
|
|
|
hostname: arch_listener_llm
|
|
|
|
|
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% if "random_sampling" in plano_tracing and plano_tracing["random_sampling"] > 0 %}
|
2024-10-08 16:24:08 -07:00
|
|
|
- name: opentelemetry_collector
|
|
|
|
|
type: STRICT_DNS
|
|
|
|
|
dns_lookup_family: V4_ONLY
|
|
|
|
|
lb_policy: ROUND_ROBIN
|
|
|
|
|
typed_extension_protocol_options:
|
|
|
|
|
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
|
|
|
|
|
"@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
|
|
|
|
|
explicit_http_config:
|
|
|
|
|
http2_protocol_options: {}
|
|
|
|
|
load_assignment:
|
|
|
|
|
cluster_name: opentelemetry_collector
|
|
|
|
|
endpoints:
|
|
|
|
|
- lb_endpoints:
|
|
|
|
|
- endpoint:
|
|
|
|
|
address:
|
|
|
|
|
socket_address:
|
Rename all arch references to plano (#745)
* Rename all arch references to plano across the codebase
Complete rebrand from "Arch"/"archgw" to "Plano" including:
- Config files: arch_config_schema.yaml, workflow, demo configs
- Environment variables: ARCH_CONFIG_* → PLANO_CONFIG_*
- Python CLI: variables, functions, file paths, docker mounts
- Rust crates: config paths, log messages, metadata keys
- Docker/build: Dockerfile, supervisord, .dockerignore, .gitignore
- Docker Compose: volume mounts and env vars across all demos/tests
- GitHub workflows: job/step names
- Shell scripts: log messages
- Demos: Python code, READMEs, VS Code configs, Grafana dashboard
- Docs: RST includes, code comments, config references
- Package metadata: package.json, pyproject.toml, uv.lock
External URLs (docs.archgw.com, github.com/katanemo/archgw) left as-is.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update remaining arch references in docs
- Rename RST cross-reference labels: arch_access_logging, arch_overview_tracing, arch_overview_threading → plano_*
- Update label references in request_lifecycle.rst
- Rename arch_config_state_storage_example.yaml → plano_config_state_storage_example.yaml
- Update config YAML comments: "Arch creates/uses" → "Plano creates/uses"
- Update "the Arch gateway" → "the Plano gateway" in configuration_reference.rst
- Update arch_config_schema.yaml reference in provider_models.py
- Rename arch_agent_router → plano_agent_router in config example
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining arch references found in second pass
- config/docker-compose.dev.yaml: ARCH_CONFIG_FILE → PLANO_CONFIG_FILE,
arch_config.yaml → plano_config.yaml, archgw_logs → plano_logs
- config/test_passthrough.yaml: container mount path
- tests/e2e/docker-compose.yaml: source file path (was still arch_config.yaml)
- cli/planoai/core.py: comment and log message
- crates/brightstaff/src/tracing/constants.rs: doc comment
- tests/{e2e,archgw}/common.py: get_arch_messages → get_plano_messages,
arch_state/arch_messages variables renamed
- tests/{e2e,archgw}/test_prompt_gateway.py: updated imports and usages
- demos/shared/test_runner/{common,test_demos}.py: same renames
- tests/e2e/test_model_alias_routing.py: docstring
- .dockerignore: archgw_modelserver → plano_modelserver
- demos/use_cases/claude_code_router/pretty_model_resolution.sh: container name
Note: x-arch-* HTTP header values and Rust constant names intentionally
preserved for backwards compatibility with existing deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:16:56 -08:00
|
|
|
{% set _otel_endpoint = plano_tracing.opentracing_grpc_endpoint | default('host.docker.internal:4317') | replace("http://", "") | replace("https://", "") %}
|
2026-02-09 13:33:27 -08:00
|
|
|
address: {{ _otel_endpoint.split(":") | first }}
|
|
|
|
|
port_value: {{ _otel_endpoint.split(":") | last }}
|
2024-10-08 16:24:08 -07:00
|
|
|
{% endif %}
|