From 9f138875b5a920800934556690c4ac2ff7feae60 Mon Sep 17 00:00:00 2001 From: Kelly Sun Date: Wed, 22 Jul 2026 14:26:08 -0400 Subject: [PATCH] provider: add Mixlayer Mixlayer (https://mixlayer.com) is an OpenAI-compatible inference platform for open models, with its serving stack built from scratch by core contributors to Candle. API base: https://models.mixlayer.ai/v1. Adds the provider under src/providers/mixlayer/ following the open-ai-base pattern (like Cerebras), registered in globals.ts and providers/index.ts. Chat completions with streaming and tool calling; reasoning_effort is forwarded for thinking-capable models. --- src/globals.ts | 2 ++ src/providers/index.ts | 2 ++ src/providers/mixlayer/api.ts | 18 ++++++++++++++++++ src/providers/mixlayer/index.ts | 18 ++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 src/providers/mixlayer/api.ts create mode 100644 src/providers/mixlayer/index.ts diff --git a/src/globals.ts b/src/globals.ts index 4d6e327e4..19813ea1e 100644 --- a/src/globals.ts +++ b/src/globals.ts @@ -113,6 +113,7 @@ export const ORACLE: string = 'oracle'; export const IO_INTELLIGENCE: string = 'iointelligence'; export const AIBADGR: string = 'aibadgr'; export const OVHCLOUD: string = 'ovhcloud'; +export const MIXLAYER: string = 'mixlayer'; export const VALID_PROVIDERS = [ ANTHROPIC, @@ -189,6 +190,7 @@ export const VALID_PROVIDERS = [ IO_INTELLIGENCE, AIBADGR, OVHCLOUD, + MIXLAYER, ]; export const CONTENT_TYPES = { diff --git a/src/providers/index.ts b/src/providers/index.ts index 2cd5355f8..9862ecac3 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -74,6 +74,7 @@ import OracleConfig from './oracle'; import IOIntelligenceConfig from './iointelligence'; import AIBadgrConfig from './aibadgr'; import OVHcloudConfig from './ovhcloud'; +import { mixlayerProviderAPIConfig } from './mixlayer'; const Providers: { [key: string]: ProviderConfigs } = { openai: OpenAIConfig, @@ -148,6 +149,7 @@ const Providers: { [key: string]: ProviderConfigs } = { iointelligence: IOIntelligenceConfig, aibadgr: AIBadgrConfig, ovhcloud: OVHcloudConfig, + mixlayer: mixlayerProviderAPIConfig, }; export default Providers; diff --git a/src/providers/mixlayer/api.ts b/src/providers/mixlayer/api.ts new file mode 100644 index 000000000..87bba2613 --- /dev/null +++ b/src/providers/mixlayer/api.ts @@ -0,0 +1,18 @@ +import { ProviderAPIConfig } from '../types'; + +export const mixlayerAPIConfig: ProviderAPIConfig = { + getBaseURL: () => 'https://models.mixlayer.ai/v1', + headers: ({ providerOptions }) => { + return { + Authorization: `Bearer ${providerOptions.apiKey}`, + }; + }, + getEndpoint: ({ fn }) => { + switch (fn) { + case 'chatComplete': + return '/chat/completions'; + default: + return ''; + } + }, +}; diff --git a/src/providers/mixlayer/index.ts b/src/providers/mixlayer/index.ts new file mode 100644 index 000000000..9cfc1cdf0 --- /dev/null +++ b/src/providers/mixlayer/index.ts @@ -0,0 +1,18 @@ +import { MIXLAYER } from '../../globals'; +import { chatCompleteParams, responseTransformers } from '../open-ai-base'; +import { ProviderConfigs } from '../types'; +import { mixlayerAPIConfig } from './api'; + +export const mixlayerProviderAPIConfig: ProviderConfigs = { + chatComplete: chatCompleteParams([ + 'n', + 'logit_bias', + 'logprobs', + 'top_logprobs', + 'user', + ]), + api: mixlayerAPIConfig, + responseTransforms: responseTransformers(MIXLAYER, { + chatComplete: true, + }), +};