diff --git a/ui/litellm-dashboard/public/assets/logos/scaleway.svg b/ui/litellm-dashboard/public/assets/logos/scaleway.svg
new file mode 100644
index 00000000000..2227f1be91f
--- /dev/null
+++ b/ui/litellm-dashboard/public/assets/logos/scaleway.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.test.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.test.tsx
index 4c68e302267..c753559507e 100644
--- a/ui/litellm-dashboard/src/components/provider_info_helpers.test.tsx
+++ b/ui/litellm-dashboard/src/components/provider_info_helpers.test.tsx
@@ -73,6 +73,21 @@ describe("provider_info_helpers", () => {
expect(fromEnumKey.logo).toBe(providerLogoMap[Providers.SCX_AI]);
});
+ it("should map the scaleway slug and Scaleway enum key to the Scaleway display name and logo", () => {
+ // The models table passes the litellm_provider slug the backend emits
+ // ("scaleway"), while the Add Model dropdown passes the provider_map key
+ // ("Scaleway"). Both must resolve, or Scaleway models fall back to the
+ // grey letter placeholder.
+ const fromSlug = getProviderLogoAndName("scaleway");
+ expect(fromSlug.displayName).toBe(Providers.Scaleway);
+ expect(fromSlug.logo).toBe(providerLogoMap[Providers.Scaleway]);
+ expect(fromSlug.logo).toBeTruthy();
+
+ const fromEnumKey = getProviderLogoAndName("Scaleway");
+ expect(fromEnumKey.displayName).toBe(Providers.Scaleway);
+ expect(fromEnumKey.logo).toBe(providerLogoMap[Providers.Scaleway]);
+ });
+
it("should map bedrock_mantle slug to Bedrock Mantle display name and logo", () => {
const result = getProviderLogoAndName("bedrock_mantle");
expect(result.displayName).toBe(Providers.BedrockMantle);
diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx
index de83cd00790..5871f8fde87 100644
--- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx
+++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx
@@ -51,6 +51,7 @@ import replicateLogo from "../../public/assets/logos/replicate.svg";
import runwayLogo from "../../public/assets/logos/runway.png";
import sambanovaLogo from "../../public/assets/logos/sambanova.svg";
import sapLogo from "../../public/assets/logos/sap.png";
+import scalewayLogo from "../../public/assets/logos/scaleway.svg";
import scxAiLogo from "../../public/assets/logos/scx_ai.svg";
import snowflakeLogo from "../../public/assets/logos/snowflake.svg";
import sonioxLogo from "../../public/assets/logos/soniox.svg";
@@ -159,6 +160,7 @@ export enum Providers {
SAGEMAKER_LEGACY = "Sagemaker",
Sambanova = "Sambanova",
SAP = "SAP Generative AI Hub",
+ Scaleway = "Scaleway",
SCX_AI = "SCX.ai",
Snowflake = "Snowflake",
Soniox = "Soniox",
@@ -275,6 +277,7 @@ export const provider_map: Record = {
SageMaker: "sagemaker_chat",
Sambanova: "sambanova",
SAP: "sap",
+ Scaleway: "scaleway",
SCX_AI: "scx-ai",
Snowflake: "snowflake",
Soniox: "soniox",
@@ -372,6 +375,7 @@ export const providerLogoMap: Partial> = {
[Providers.SAGEMAKER_LEGACY]: bedrockLogo.src,
[Providers.Sambanova]: sambanovaLogo.src,
[Providers.SAP]: sapLogo.src,
+ [Providers.Scaleway]: scalewayLogo.src,
[Providers.SCX_AI]: scxAiLogo.src,
[Providers.Snowflake]: snowflakeLogo.src,
[Providers.Soniox]: sonioxLogo.src,