From 6f8bf96d38b127dfe271dd3eb652aed1bff3dbf3 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Fri, 13 Mar 2026 13:27:58 -0700 Subject: [PATCH] rename arch provider to plano, use llm_routing_model and agent_orchestration_model --- cli/planoai/config_generator.py | 13 ++++++------ config/envoy.template.yaml | 4 ++-- config/plano_config_schema.yaml | 6 ++---- crates/brightstaff/src/main.rs | 4 ++-- .../src/router/plano_orchestrator.rs | 4 ++-- crates/common/src/configuration.rs | 21 +++++-------------- crates/common/src/consts.rs | 2 +- crates/hermesllm/src/lib.rs | 2 +- crates/hermesllm/src/providers/id.rs | 10 ++++----- crates/llm_gateway/src/stream_context.rs | 2 +- .../config_local_orchestrator.yaml | 2 +- .../llm_routing/openclaw_routing/config.yaml | 2 +- .../plano_config_local.yaml | 2 +- docs/source/guides/llm_router.rst | 4 ++-- docs/source/guides/orchestration.rst | 5 +++-- .../plano_config_full_reference_rendered.yaml | 4 ++-- 16 files changed, 37 insertions(+), 50 deletions(-) diff --git a/cli/planoai/config_generator.py b/cli/planoai/config_generator.py index 6e47055d..c4e5831b 100644 --- a/cli/planoai/config_generator.py +++ b/cli/planoai/config_generator.py @@ -13,7 +13,6 @@ SUPPORTED_PROVIDERS_WITH_BASE_URL = [ "ollama", "qwen", "amazon_bedrock", - "arch", "plano", ] @@ -373,7 +372,7 @@ def validate_and_render_schema(): model_name_set = {mp.get("model") for mp in updated_model_providers} # Auto-add arch-router provider if routing preferences exist and no provider matches the router model - router_model = overrides_config.get("router_model", "Arch-Router") + router_model = overrides_config.get("llm_routing_model", "Arch-Router") # Strip provider prefix for comparison since config processing strips prefixes from model names router_model_id = ( router_model.split("/", 1)[1] if "/" in router_model else router_model @@ -382,7 +381,7 @@ def validate_and_render_schema(): updated_model_providers.append( { "name": "arch-router", - "provider_interface": "arch", + "provider_interface": "plano", "model": router_model_id, "internal": True, } @@ -393,7 +392,7 @@ def validate_and_render_schema(): updated_model_providers.append( { "name": "arch-function", - "provider_interface": "arch", + "provider_interface": "plano", "model": "Arch-Function", "internal": True, } @@ -401,7 +400,7 @@ def validate_and_render_schema(): # Auto-add plano-orchestrator provider if no provider matches the orchestrator model orchestrator_model = overrides_config.get( - "orchestrator_model", "Plano-Orchestrator" + "agent_orchestration_model", "Plano-Orchestrator" ) orchestrator_model_id = ( orchestrator_model.split("/", 1)[1] @@ -411,8 +410,8 @@ def validate_and_render_schema(): if orchestrator_model_id not in model_name_set: updated_model_providers.append( { - "name": "plano-orchestrator", - "provider_interface": "arch", + "name": "plano/orchestrator", + "provider_interface": "plano", "model": orchestrator_model_id, "internal": True, } diff --git a/config/envoy.template.yaml b/config/envoy.template.yaml index a780c3f1..c2dd5ed0 100644 --- a/config/envoy.template.yaml +++ b/config/envoy.template.yaml @@ -594,13 +594,13 @@ static_resources: clusters: - - name: arch + - name: plano connect_timeout: {{ upstream_connect_timeout | default('5s') }} type: LOGICAL_DNS dns_lookup_family: V4_ONLY lb_policy: ROUND_ROBIN load_assignment: - cluster_name: arch + cluster_name: plano endpoints: - lb_endpoints: - endpoint: diff --git a/config/plano_config_schema.yaml b/config/plano_config_schema.yaml index 00533596..e204e298 100644 --- a/config/plano_config_schema.yaml +++ b/config/plano_config_schema.yaml @@ -173,7 +173,6 @@ properties: provider_interface: type: string enum: - - arch - plano - claude - deepseek @@ -221,7 +220,6 @@ properties: provider_interface: type: string enum: - - arch - plano - claude - deepseek @@ -273,10 +271,10 @@ properties: upstream_tls_ca_path: type: string description: "Path to the trusted CA bundle for upstream TLS verification. Default is '/etc/ssl/certs/ca-certificates.crt'." - router_model: + llm_routing_model: type: string description: "Model name for the LLM router (e.g., 'Arch-Router'). Must match a model in model_providers." - orchestrator_model: + agent_orchestration_model: type: string description: "Model name for the agent orchestrator (e.g., 'Plano-Orchestrator'). Must match a model in model_providers." system_prompt: diff --git a/crates/brightstaff/src/main.rs b/crates/brightstaff/src/main.rs index 18f01cab..b9faafbf 100644 --- a/crates/brightstaff/src/main.rs +++ b/crates/brightstaff/src/main.rs @@ -94,7 +94,7 @@ async fn main() -> Result<(), Box> { // Strip provider prefix (e.g. "arch/") to get the model ID used in upstream requests let routing_model_name: String = overrides - .router_model + .llm_routing_model .as_deref() .map(|m| m.split_once('/').map(|(_, id)| id).unwrap_or(m)) .unwrap_or(DEFAULT_ROUTING_MODEL_NAME) @@ -116,7 +116,7 @@ async fn main() -> Result<(), Box> { // Strip provider prefix (e.g. "arch/") to get the model ID used in upstream requests let orchestrator_model_name: String = overrides - .orchestrator_model + .agent_orchestration_model .as_deref() .map(|m| m.split_once('/').map(|(_, id)| id).unwrap_or(m)) .unwrap_or(DEFAULT_ORCHESTRATOR_MODEL_NAME) diff --git a/crates/brightstaff/src/router/plano_orchestrator.rs b/crates/brightstaff/src/router/plano_orchestrator.rs index ed303187..12140570 100644 --- a/crates/brightstaff/src/router/plano_orchestrator.rs +++ b/crates/brightstaff/src/router/plano_orchestrator.rs @@ -81,12 +81,12 @@ impl OrchestratorService { debug!( model = %self.orchestrator_model.get_model_name(), endpoint = %self.orchestrator_url, - "sending request to arch-orchestrator" + "sending request to plano-orchestrator" ); debug!( body = %serde_json::to_string(&orchestrator_request).unwrap(), - "arch orchestrator request" + "plano orchestrator request" ); let mut orchestration_request_headers = header::HeaderMap::new(); diff --git a/crates/common/src/configuration.rs b/crates/common/src/configuration.rs index 2d7289c5..12c7d73f 100644 --- a/crates/common/src/configuration.rs +++ b/crates/common/src/configuration.rs @@ -77,8 +77,8 @@ pub struct Overrides { pub prompt_target_intent_matching_threshold: Option, pub optimize_context_window: Option, pub use_agent_orchestrator: Option, - pub router_model: Option, - pub orchestrator_model: Option, + pub llm_routing_model: Option, + pub agent_orchestration_model: Option, } #[derive(Debug, Clone, Serialize, Deserialize, Default)] @@ -202,8 +202,6 @@ pub struct EmbeddingProviver { #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] pub enum LlmProviderType { - #[serde(rename = "arch")] - Arch, #[serde(rename = "anthropic")] Anthropic, #[serde(rename = "deepseek")] @@ -239,7 +237,6 @@ pub enum LlmProviderType { impl Display for LlmProviderType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - LlmProviderType::Arch => write!(f, "arch"), LlmProviderType::Anthropic => write!(f, "anthropic"), LlmProviderType::Deepseek => write!(f, "deepseek"), LlmProviderType::Groq => write!(f, "groq"), @@ -263,15 +260,7 @@ impl LlmProviderType { /// Get the ProviderId for this LlmProviderType /// Used with the new function-based hermesllm API pub fn to_provider_id(&self) -> hermesllm::ProviderId { - // Plano provider uses the same interface as Arch - let provider_str = match self { - LlmProviderType::Plano => "arch", - other => { - return hermesllm::ProviderId::try_from(other.to_string().as_str()) - .expect("LlmProviderType should always map to a valid ProviderId") - } - }; - hermesllm::ProviderId::try_from(provider_str) + hermesllm::ProviderId::try_from(self.to_string().as_str()) .expect("LlmProviderType should always map to a valid ProviderId") } } @@ -597,14 +586,14 @@ mod test { }, LlmProvider { name: "arch-router".to_string(), - provider_interface: LlmProviderType::Arch, + provider_interface: LlmProviderType::Plano, model: Some("Arch-Router".to_string()), internal: Some(true), ..Default::default() }, LlmProvider { name: "plano-orchestrator".to_string(), - provider_interface: LlmProviderType::Arch, + provider_interface: LlmProviderType::Plano, model: Some("Plano-Orchestrator".to_string()), internal: Some(true), ..Default::default() diff --git a/crates/common/src/consts.rs b/crates/common/src/consts.rs index 11a15028..dbd0bc41 100644 --- a/crates/common/src/consts.rs +++ b/crates/common/src/consts.rs @@ -33,4 +33,4 @@ pub const OTEL_COLLECTOR_HTTP: &str = "opentelemetry_collector_http"; pub const LLM_ROUTE_HEADER: &str = "x-arch-llm-route"; pub const ENVOY_RETRY_HEADER: &str = "x-envoy-max-retries"; pub const BRIGHT_STAFF_SERVICE_NAME: &str = "brightstaff"; -pub const ARCH_FC_CLUSTER: &str = "arch"; +pub const PLANO_FC_CLUSTER: &str = "plano"; diff --git a/crates/hermesllm/src/lib.rs b/crates/hermesllm/src/lib.rs index 997fc72a..3b9611e0 100644 --- a/crates/hermesllm/src/lib.rs +++ b/crates/hermesllm/src/lib.rs @@ -35,7 +35,7 @@ mod tests { ProviderId::Mistral ); assert_eq!(ProviderId::try_from("groq").unwrap(), ProviderId::Groq); - assert_eq!(ProviderId::try_from("arch").unwrap(), ProviderId::Arch); + assert_eq!(ProviderId::try_from("plano").unwrap(), ProviderId::Plano); // Test aliases assert_eq!(ProviderId::try_from("google").unwrap(), ProviderId::Gemini); diff --git a/crates/hermesllm/src/providers/id.rs b/crates/hermesllm/src/providers/id.rs index 11008711..9f5f42c9 100644 --- a/crates/hermesllm/src/providers/id.rs +++ b/crates/hermesllm/src/providers/id.rs @@ -34,7 +34,7 @@ pub enum ProviderId { Gemini, Anthropic, GitHub, - Arch, + Plano, AzureOpenAI, XAI, TogetherAI, @@ -58,7 +58,7 @@ impl TryFrom<&str> for ProviderId { "google" => Ok(ProviderId::Gemini), // alias "anthropic" => Ok(ProviderId::Anthropic), "github" => Ok(ProviderId::GitHub), - "arch" => Ok(ProviderId::Arch), + "plano" => Ok(ProviderId::Plano), "azure_openai" => Ok(ProviderId::AzureOpenAI), "xai" => Ok(ProviderId::XAI), "together_ai" => Ok(ProviderId::TogetherAI), @@ -135,7 +135,7 @@ impl ProviderId { | ProviderId::Groq | ProviderId::Mistral | ProviderId::Deepseek - | ProviderId::Arch + | ProviderId::Plano | ProviderId::Gemini | ProviderId::GitHub | ProviderId::AzureOpenAI @@ -153,7 +153,7 @@ impl ProviderId { | ProviderId::Groq | ProviderId::Mistral | ProviderId::Deepseek - | ProviderId::Arch + | ProviderId::Plano | ProviderId::Gemini | ProviderId::GitHub | ProviderId::AzureOpenAI @@ -219,7 +219,7 @@ impl Display for ProviderId { ProviderId::Gemini => write!(f, "Gemini"), ProviderId::Anthropic => write!(f, "Anthropic"), ProviderId::GitHub => write!(f, "GitHub"), - ProviderId::Arch => write!(f, "Arch"), + ProviderId::Plano => write!(f, "Plano"), ProviderId::AzureOpenAI => write!(f, "azure_openai"), ProviderId::XAI => write!(f, "xai"), ProviderId::TogetherAI => write!(f, "together_ai"), diff --git a/crates/llm_gateway/src/stream_context.rs b/crates/llm_gateway/src/stream_context.rs index 7a353bcb..f62631fa 100644 --- a/crates/llm_gateway/src/stream_context.rs +++ b/crates/llm_gateway/src/stream_context.rs @@ -873,7 +873,7 @@ impl HttpContext for StreamContext { // ensure that the provider has an endpoint if the access key is missing else return a bad request if self.llm_provider.as_ref().unwrap().endpoint.is_none() && self.llm_provider.as_ref().unwrap().provider_interface - != LlmProviderType::Arch + != LlmProviderType::Plano { self.send_server_error(error, Some(StatusCode::BAD_REQUEST)); } diff --git a/demos/agent_orchestration/travel_agents/config_local_orchestrator.yaml b/demos/agent_orchestration/travel_agents/config_local_orchestrator.yaml index 226fc4a7..1d3a0be8 100644 --- a/demos/agent_orchestration/travel_agents/config_local_orchestrator.yaml +++ b/demos/agent_orchestration/travel_agents/config_local_orchestrator.yaml @@ -1,7 +1,7 @@ version: v0.3.0 overrides: - orchestrator_model: plano/katanemo/Plano-Orchestrator-4B + agent_orchestration_model: plano/katanemo/Plano-Orchestrator-4B agents: - id: weather_agent diff --git a/demos/llm_routing/openclaw_routing/config.yaml b/demos/llm_routing/openclaw_routing/config.yaml index b8d183bc..9690e747 100644 --- a/demos/llm_routing/openclaw_routing/config.yaml +++ b/demos/llm_routing/openclaw_routing/config.yaml @@ -1,7 +1,7 @@ version: v0.1.0 overrides: - router_model: Arch-Router + llm_routing_model: Arch-Router listeners: egress_traffic: diff --git a/demos/llm_routing/preference_based_routing/plano_config_local.yaml b/demos/llm_routing/preference_based_routing/plano_config_local.yaml index 6c2b375a..01adb097 100644 --- a/demos/llm_routing/preference_based_routing/plano_config_local.yaml +++ b/demos/llm_routing/preference_based_routing/plano_config_local.yaml @@ -1,7 +1,7 @@ version: v0.3.0 overrides: - router_model: plano/hf.co/katanemo/Arch-Router-1.5B.gguf:Q4_K_M + llm_routing_model: plano/hf.co/katanemo/Arch-Router-1.5B.gguf:Q4_K_M listeners: - type: model diff --git a/docs/source/guides/llm_router.rst b/docs/source/guides/llm_router.rst index c44ddf24..0073a664 100644 --- a/docs/source/guides/llm_router.rst +++ b/docs/source/guides/llm_router.rst @@ -254,7 +254,7 @@ Using Ollama (recommended for local development) .. code-block:: yaml overrides: - router_model: plano/hf.co/katanemo/Arch-Router-1.5B.gguf:Q4_K_M + llm_routing_model: plano/hf.co/katanemo/Arch-Router-1.5B.gguf:Q4_K_M model_providers: - model: plano/hf.co/katanemo/Arch-Router-1.5B.gguf:Q4_K_M @@ -323,7 +323,7 @@ vLLM provides higher throughput and GPU optimizations suitable for production de .. code-block:: yaml overrides: - router_model: plano/Arch-Router + llm_routing_model: plano/Arch-Router model_providers: - model: plano/Arch-Router diff --git a/docs/source/guides/orchestration.rst b/docs/source/guides/orchestration.rst index 2c32cf02..1a153e83 100644 --- a/docs/source/guides/orchestration.rst +++ b/docs/source/guides/orchestration.rst @@ -404,10 +404,11 @@ Using vLLM .. code-block:: yaml overrides: - orchestrator_model: plano/katanemo/Plano-Orchestrator-4B + agent_orchestration_model: plano/katanemo/Plano-Orchestrator-4B model_providers: - - model: plano/katanemo/Plano-Orchestrator-4B + - model: katanemo/Plano-Orchestrator-4B + provider_interface: plano base_url: http://:8000 5. **Verify the server is running** diff --git a/docs/source/resources/includes/plano_config_full_reference_rendered.yaml b/docs/source/resources/includes/plano_config_full_reference_rendered.yaml index 9717b53a..c91723cd 100644 --- a/docs/source/resources/includes/plano_config_full_reference_rendered.yaml +++ b/docs/source/resources/includes/plano_config_full_reference_rendered.yaml @@ -107,11 +107,11 @@ model_providers: - internal: true model: Arch-Function name: arch-function - provider_interface: arch + provider_interface: plano - internal: true model: Plano-Orchestrator name: plano-orchestrator - provider_interface: arch + provider_interface: plano prompt_targets: - description: Get current weather at a location. endpoint: