Mintplex-Labs/anything-llm · error · Error

No valid image generation provider was set. Got: ${provider}

Error message

No valid image generation provider was set. Got: ${provider}

What it means

Thrown by getImageGeneratorProvider() in its switch default when process.env.IMAGE_GEN_PROVIDER matches no case (openai, ollama, lemonade, openrouter). The function reads the provider directly from the env var, so any unsupported value — including an empty string when image generation is invoked — yields this error. It is the image-gen analogue of the LLM provider switch.

Source

Thrown at server/utils/helpers/index.js:349

function getImageGeneratorProvider() {
  const provider = process.env.IMAGE_GEN_PROVIDER;
  switch (provider) {
    case "openai":
      const { OpenAiImageGenerator } = require("../ImageGenerators/openAi");
      return new OpenAiImageGenerator();
    case "ollama":
      const { OllamaImageGenerator } = require("../ImageGenerators/ollama");
      return new OllamaImageGenerator();
    case "lemonade":
      const { LemonadeImageGenerator } = require("../ImageGenerators/lemonade");
      return new LemonadeImageGenerator();
    case "openrouter":
      const {
        OpenRouterImageGenerator,
      } = require("../ImageGenerators/openRouter");
      return new OpenRouterImageGenerator();
    default:
      throw new Error(
        `No valid image generation provider was set. Got: ${provider}`
      );
  }
}

/**
 * Returns the LLMProviderClass - this is a helper method to access static methods on a class
 * @param {{provider: string | null} | null} params - Initialize params for LLMs provider
 * @returns {BaseLLMProviderClass}
 */
function getLLMProviderClass({ provider = null } = {}) {
  switch (provider) {
    case "openai":
      const { OpenAiLLM } = require("../AiProviders/openAi");
      return OpenAiLLM;
    case "azure":
      const { AzureOpenAiLLM } = require("../AiProviders/azureOpenAi");
      return AzureOpenAiLLM;

View on GitHub (pinned to 526360e320)

Solutions

  1. Set IMAGE_GEN_PROVIDER to a supported value ('openai', 'ollama', 'lemonade', 'openrouter') or disable the image feature.
  2. Guard callers: only invoke getImageGeneratorProvider() when the user has actually enabled image generation.
  3. Trim/validate the env value at startup and fail fast with a clear message.
  4. Confirm the matching ImageGenerators/*.js module exists in this build.

Example fix

// before
const gen = getImageGeneratorProvider(); // IMAGE_GEN_PROVIDER unset

// after
if (!process.env.IMAGE_GEN_PROVIDER)
  throw new ConfigError('IMAGE_GEN_PROVIDER must be set to use image generation');
const gen = getImageGeneratorProvider();
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED_IMG = ['openai','ollama','lemonade','openrouter'];
if (process.env.IMAGE_GEN_PROVIDER && !SUPPORTED_IMG.includes(process.env.IMAGE_GEN_PROVIDER))
  throw new Error(`IMAGE_GEN_PROVIDER '${process.env.IMAGE_GEN_PROVIDER}' is not supported`);

Type guard

function isSupportedImageProvider(v): v is string {
  return ['openai','ollama','lemonade','openrouter'].includes(v);
}

Try / catch

try {
  const gen = getImageGeneratorProvider();
} catch (e) {
  if (e.message.startsWith('No valid image generation provider'))
    return res.status(503).json({ error: 'Image generation not configured' });
  throw e;
}

Prevention

When it happens

Trigger: IMAGE_GEN_PROVIDER unset or set to an unsupported value while a feature requests an image generator. Calling getImageGeneratorProvider() when the user never configured image generation.

Common situations: Enabling an image-generation feature flag without setting IMAGE_GEN_PROVIDER; a typo in the env var; upgrading to a build where a provider key was renamed; leaving the value blank and triggering doodle/image generation.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13). Data as JSON: /api/errors/10f5f7a62ce29a89. Report an issue: GitHub.