diff --git a/app/assets/bundled/svg/kimi.svg b/app/assets/bundled/svg/kimi.svg
new file mode 100644
index 0000000000..8c206c9310
--- /dev/null
+++ b/app/assets/bundled/svg/kimi.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/src/ai/llms.rs b/app/src/ai/llms.rs
index 76c27b9d46..73ab376543 100644
--- a/app/src/ai/llms.rs
+++ b/app/src/ai/llms.rs
@@ -186,11 +186,19 @@ pub fn model_leading_icon(llm: &LLMInfo, flags: ModelIconFlags) -> Icon {
Icon::Aws
} else if flags.is_using_gemini_enterprise {
Icon::GeminiEnterpriseAgentPlatform
+ } else if is_kimi_model(llm) {
+ Icon::KimiLogo
} else {
llm.provider.icon().unwrap_or(Icon::Agent)
}
}
+/// Kimi is Fireworks-hosted, which the server reports as `LLMProvider::Unknown`,
+/// so the provider enum can't carry its logo.
+pub fn is_kimi_model(llm: &LLMInfo) -> bool {
+ llm.id.as_str().starts_with("kimi-")
+}
+
/// Key for cached LLM metadata in user preferences.
///
/// Note: this key used to store a single [`AvailableLLMs`]
diff --git a/app/src/terminal/view/ambient_agent/model_selector.rs b/app/src/terminal/view/ambient_agent/model_selector.rs
index 9c999783a2..63daa920e2 100644
--- a/app/src/terminal/view/ambient_agent/model_selector.rs
+++ b/app/src/terminal/view/ambient_agent/model_selector.rs
@@ -22,7 +22,7 @@ use crate::ai::custom_model_routers::is_custom_router_id;
use crate::ai::execution_profiles::model_menu_items::is_auto;
use crate::ai::harness_availability::{HarnessAvailabilityEvent, HarnessAvailabilityModel};
use crate::ai::harness_display::icon_for as harness_icon_for;
-use crate::ai::llms::{LLMId, LLMPreferences, LLMPreferencesEvent};
+use crate::ai::llms::{LLMId, LLMPreferences, LLMPreferencesEvent, is_kimi_model};
use crate::editor::{
EditorView, Event as EditorEvent, PropagateAndNoOpEscapeKey, PropagateAndNoOpNavigationKeys,
SingleLineEditorOptions, TextOptions,
@@ -509,6 +509,8 @@ impl ModelSelector {
let display_name = llm.menu_display_name();
let leading_icon = if is_custom_router_id(llm.id.as_str()) {
Icon::Dataflow
+ } else if is_kimi_model(llm) {
+ Icon::KimiLogo
} else {
llm.provider.icon().unwrap_or(Icon::Agent)
};
diff --git a/crates/warp_core/src/ui/icons.rs b/crates/warp_core/src/ui/icons.rs
index 875055648d..3ebd9ee31b 100644
--- a/crates/warp_core/src/ui/icons.rs
+++ b/crates/warp_core/src/ui/icons.rs
@@ -275,6 +275,7 @@ pub enum Icon {
ClaudeLogo,
GeminiLogo,
GrokLogo,
+ KimiLogo,
OpenAILogo,
XLogo,
AmpLogo,
@@ -623,6 +624,7 @@ impl From for &'static str {
Icon::ClaudeLogo => "bundled/svg/claude.svg",
Icon::GeminiLogo => "bundled/svg/gemini_cli.svg",
Icon::GrokLogo => "bundled/svg/grok.svg",
+ Icon::KimiLogo => "bundled/svg/kimi.svg",
Icon::OpenAILogo => "bundled/svg/openai.svg",
Icon::XLogo => "bundled/svg/x-logo.svg",
Icon::AmpLogo => "bundled/svg/amp.svg",