From b9daf9d6bfd13ca2a82031ab92861958bd5e1839 Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 19 Oct 2026 15:59:24 -0400 Subject: [PATCH] feat: poolside --- src/lib.rs | 3 +++ src/server/chat/completions.rs | 20 ++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 5b8f0ff..43d2ee7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -75,6 +75,9 @@ pub struct AppArgs { #[arg(long)] pub openrouter_api_key: Vec, + #[arg(long)] + pub poolside_api_key: Vec, + #[arg(long)] pub vercel_ai_gateway_api_key: Vec, diff --git a/src/server/chat/completions.rs b/src/server/chat/completions.rs index 5300e70..c7ff7dd 100644 --- a/src/server/chat/completions.rs +++ b/src/server/chat/completions.rs @@ -99,6 +99,7 @@ enum Provider { Ollama, OpenCode, OpenRouter, + Poolside, VercelAiGateway, ZAi, } @@ -111,15 +112,17 @@ impl Shortcut { match self { S::XS => vec![ (P::GoogleAiStudio, "gemini-3.5-flash-lite".into()), - (P::NovitaAi, "apodex/apodex-1.1-mini".into()), - (P::OpenRouter, "apodex/apodex-1.1-mini:free".into()), (P::VercelAiGateway, "openai/gpt-5.4-nano".into()), (P::HuggingFace, "Qwen/Qwen3.6-35B-A3B".into()), + (P::OpenRouter, "xingchen-agi/xing4.0-29b-a4b:free".into()), + (P::NovitaAi, "apodex/apodex-1.1-mini".into()), + (P::OpenRouter, "apodex/apodex-1.1-mini:free".into()), (P::VercelAiGateway, "liquid/lfm2.5-24b-a2b".into()), (P::GoogleAiStudio, "gemma-4-26b-a4b-it".into()), (P::OpenRouter, "google/gemma-4-26b-a4b-it:free".into()), (P::Kilo, "google-gemma-4-26b-a4b-it-free".into()), (P::HuggingFace, "google/gemma-4-26B-A4B-it".into()), + (P::Poolside, "poolside/laguna-xs-2.1".into()), (P::NvidiaNim, "poolside/laguna-xs-2.1".into()), (P::OpenRouter, "poolside/laguna-xs-2.1:free".into()), (P::ZAi, "glm-4.7-flash".into()), @@ -192,6 +195,7 @@ impl Shortcut { (P::OpenRouter, "inclusionai/ling-3.0-flash-vl:free".into()), (P::VercelAiGateway, "inclusionai/ling-3.0-flash-vl".into()), (P::VercelAiGateway, "poolside/laguna-s-2.1-free".into()), + (P::Poolside, "poolside/laguna-s-2.1".into()), (P::Kilo, "poolside-laguna-s-2-1-free".into()), (P::OpenRouter, "poolside/laguna-s-2.1:free".into()), (P::VercelAiGateway, "stepfun/step-3.7-flash".into()), @@ -523,6 +527,18 @@ pub async fn create_chat_completion( .build() }) .collect(), + Provider::Poolside => state + .app_args + .poolside_api_key + .iter() + .cloned() + .map(|api_key| { + Upstream::builder() + .url("https://inference.poolside.ai/v1/chat/completions".parse().expect("TODO")) + .api_key(api_key) + .build() + }) + .collect(), Provider::VercelAiGateway => state .app_args .vercel_ai_gateway_api_key