diff --git a/src/lib.rs b/src/lib.rs index d9c9ed8..419f2a1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -48,6 +48,9 @@ pub struct AppArgs { #[arg(long)] pub hugging_face_api_key: Vec, + #[arg(long)] + pub kilo_api_key: Vec, + #[arg(long)] pub liquid_ai_api_key: Vec, diff --git a/src/server/chat/completions.rs b/src/server/chat/completions.rs index 6c4d2fd..61ea5d8 100644 --- a/src/server/chat/completions.rs +++ b/src/server/chat/completions.rs @@ -101,6 +101,7 @@ impl Shortcut { (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::NvidiaNim, "poolside/laguna-xs-2.1".into()), (P::OpenRouter, "poolside/laguna-xs-2.1:free".into()), @@ -132,6 +133,7 @@ impl Shortcut { (P::NvidiaNim, "meta/llama-3.2-11b-vision-instruct".into()), (P::OpenRouter, "liquid/lfm-2.5-2.6b:free".into()), (P::Groq, "groq/compound-mini".into()), + (P::Kilo, "kilo-auto/free".into()), (P::OpenRouter, "openrouter/free".into()), ], @@ -161,10 +163,13 @@ impl Shortcut { ), (P::OpenRouter, "nvidia/nemotron-3.5-super-vl:free".into()), (P::Mistral, "mistral-medium-3.5".into()), + (P::Kilo, "inclusionai-ling-3-0-flash-free".into()), (P::NovitaAi, "inclusionai/ling-3.0-flash-vl".into()), + (P::Kilo, "inclusionai-ling-3-0-flash-vl-free".into()), (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::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()), (P::NovitaAi, "inclusionai/ling-3.0-flash-fin".into()), @@ -181,6 +186,7 @@ impl Shortcut { ), (P::VercelAiGateway, "mistral/mistral-large-3".into()), (P::NvidiaNim, "nvidia/nemotron-3-super-120b-a12b".into()), + (P::Kilo, "nvidia-nemotron-3-super-120b-a12b-free".into()), ( P::OpenRouter, "nvidia/nemotron-3-super-120b-a12b:free".into(), @@ -193,6 +199,7 @@ impl Shortcut { ], S::L => vec![ + (P::Kilo, "step-5-preview-free".into()), (P::NvidiaNim, "stepfun-ai/step-5-preview".into()), (P::CloudflareWorkersAi, "@cf/zai-org/glm-5.3-flash".into()), (P::NvidiaNim, "z-ai/glm-5-3-flash".into()), @@ -205,12 +212,19 @@ impl Shortcut { (P::HuggingFace, "XiaomiMiMo/MiMo-V2.6-Flash-RL".into()), (P::VercelAiGateway, "inclusionai/ling-3.1-flash".into()), (P::HuggingFace, "inclusionAI/Ling-3.1-flash".into()), + (P::Kilo, "nex-agi-nex-n2-5-pro-free".into()), (P::VercelAiGateway, "xiaomi/mimo-v2.5".into()), + (P::Kilo, "dots-studio-dots-3-note-preview-free".into()), (P::OpenRouter, "dots-studio/dots-3-note-preview:free".into()), + (P::Kilo, "minimax-minimax-m3-free".into()), (P::HuggingFace, "MiniMaxAI/MiniMax-M3".into()), + (P::VercelAiGateway, "tencent/hy3".into()), + (P::Kilo, "tencent-hy3-free".into()), + (P::Kilo, "tencent-hy3-preview-free".into()), (P::OpenRouter, "thinkingmachines/inkling-small:free".into()), (P::HuggingFace, "thinkingmachines/Inkling-Small".into()), (P::NvidiaNim, "nvidia/nemotron-3-ultra-550b-a55b".into()), + (P::Kilo, "nvidia-nemotron-3-ultra-550b-a55b-free".into()), ], S::XL => vec![ @@ -225,7 +239,6 @@ impl Shortcut { (P::HuggingFace, "moonshotai/Kimi-K3".into()), (P::HuggingFace, "Qwen/Qwen3.8-2.4T-A95B".into()), (P::VercelAiGateway, "xiaomi/mimo-v2.5-pro".into()), - (P::VercelAiGateway, "tencent/hy3".into()), (P::OpenRouter, "thinkingmachines/inkling:free".into()), (P::HuggingFace, "thinkingmachines/Inkling".into()), (P::VercelAiGateway, "thinkingmachines/inkling".into()), @@ -372,6 +385,18 @@ pub async fn create_chat_completion( .build() }) .collect(), + Provider::Kilo => state + .app_args + .kilo_api_key + .iter() + .cloned() + .map(|api_key| { + Upstream::builder() + .url("https://api.kilo.ai/api/gateway/v1/chat/completions".parse().expect("TODO")) + .api_key(api_key) + .build() + }) + .collect(), Provider::LiquidAi => unreachable!(), Provider::Mistral => state .app_args diff --git a/src/server/embeddings.rs b/src/server/embeddings.rs index baa0642..d694acd 100644 --- a/src/server/embeddings.rs +++ b/src/server/embeddings.rs @@ -159,6 +159,7 @@ pub async fn create_embeddings( .build() }) .collect(), + Provider::Kilo => unreachable!(), Provider::LiquidAi => unreachable!(), Provider::Mistral => state .app_args diff --git a/src/server/mod.rs b/src/server/mod.rs index f6ad60b..ef90f25 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -26,6 +26,7 @@ enum Provider { GoogleAiStudio, Groq, HuggingFace, + Kilo, LiquidAi, Mistral, NovitaAi, diff --git a/src/server/system_one.rs b/src/server/system_one.rs index a100a92..374e675 100644 --- a/src/server/system_one.rs +++ b/src/server/system_one.rs @@ -121,6 +121,7 @@ pub async fn create_system_one( Provider::GoogleAiStudio => unreachable!(), Provider::Groq => unreachable!(), Provider::HuggingFace => unreachable!(), + Provider::Kilo => unreachable!(), Provider::LiquidAi => state .app_args .liquid_ai_api_key