mem0ai/mem0 · error · Error

Model not supported: ${this.provider_wrapper}

Error message

Model not supported: ${this.provider_wrapper}

What it means

Mem0ClassSelector's constructor validates config.provider against a static supportedProviders list and rejects anything not on it. The error exists to fail fast at provider-construction time (before any request) when the provider string is misspelled or unsupported by the Mem0 integration for Vercel AI SDK.

Source

Thrown at integrations/vercel-ai-sdk/src/mem0-provider-selector.ts:23

class Mem0ClassSelector {
    modelId: string;
    provider_wrapper: string;
    config: Mem0ProviderSettings;
    provider_config?: ProviderSettings;
    static supportedProviders = ["openai", "anthropic", "cohere", "groq", "google", "gemini"];

    constructor(modelId: string, config: Mem0ProviderSettings, provider_config?: ProviderSettings) {
        this.modelId = modelId;
        this.provider_wrapper = config.provider || "openai";
        this.provider_config = provider_config;
        if(config) this.config = config;
        else this.config = {
            provider: this.provider_wrapper,
        };

        // Check if provider_wrapper is supported
        if (!Mem0ClassSelector.supportedProviders.includes(this.provider_wrapper)) {
            throw new Error(`Model not supported: ${this.provider_wrapper}`);
        }
    }

    createProvider(): LanguageModelV3 {
        return new Mem0AITextGenerator(this.modelId, this.config , this.provider_config || {});
    }
}

export { Mem0ClassSelector };

View on GitHub (pinned to 001c235229)

Solutions

  1. Set config.provider to a supported value (the selector's supported list includes openai, anthropic, google/gemini, groq — see provider-response-provider.ts's switch).
  2. Log Mem0ClassSelector.supportedProviders at startup to see the exact accepted strings for your installed version.
  3. Check for typos and case: values are matched exactly, 'OpenAI' !== 'openai'.
  4. If you need an unsupported provider, bypass the selector by supplying a custom LanguageModelV3 instance or open a feature request.

Example fix

// before
const provider = createMem0Provider({ provider: "azure" }); // throws

// after
const provider = createMem0Provider({ provider: "openai" });
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = ['openai', 'anthropic', 'groq', 'google', 'gemini']; // verify against your version

function assertProviderSupported(provider: string): void {
  if (!SUPPORTED.includes(provider)) {
    throw new Error(`Unsupported provider '${provider}'. Supported: ${SUPPORTED.join(', ')}`);
  }
}

assertProviderSupported(config.provider ?? 'openai');

Type guard

const isSupportedProvider = (p: unknown): p is string =>
  typeof p === 'string' && Mem0ClassSelector.supportedProviders.includes(p);

Prevention

When it happens

Trigger: Calling createMem0Provider (or constructing Mem0ClassSelector) with config.provider set to anything outside Mem0ClassSelector.supportedProviders — e.g. 'azure', 'mistral', 'openrouter', 'OpenAI' (wrong case), or omitting/quoting the value incorrectly so it becomes undefined-adjacent garbage. Defaults to 'openai' when unset.

Common situations: Copy-pasting provider names from other SDKs; case mismatches; using a provider the Mem0 wrapper hasn't wired up yet; renaming after a package update that changed the supported list.

Related errors


AI-assisted analysis of mem0ai/mem0@001c235229 (2026-08-15). Data as JSON: /api/errors/e8e0910dae5a091b. Report an issue: GitHub.