{"record":{"id":"d29ffd0c388eccfb","repo":"Mintplex-Labs/anything-llm","slug":"stt-provider-provider-is-not-a-server-side-pr","errorCode":null,"errorMessage":"STT_PROVIDER \"${provider}\" is not a server-side provider.","messagePattern":"STT_PROVIDER \"(.+?)\" is not a server-side provider\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/utils/SpeechToText/index.js","lineNumber":20,"sourceCode":"  const provider = process.env.STT_PROVIDER || \"native\";\n  switch (provider) {\n    case \"openai\":\n      const { OpenAiSTT } = require(\"./openAi\");\n      return new OpenAiSTT();\n    case \"lemonade\":\n      const { LemonadeSTT } = require(\"./lemonade\");\n      return new LemonadeSTT();\n    case \"deepgram\":\n      const { DeepgramSTT } = require(\"./deepgram\");\n      return new DeepgramSTT();\n    case \"generic-openai\":\n      const { GenericOpenAiSTT } = require(\"./openAiGeneric\");\n      return new GenericOpenAiSTT();\n    case \"groq\":\n      const { GroqSTT } = require(\"./groq\");\n      return new GroqSTT();\n    default:\n      throw new Error(\n        `STT_PROVIDER \"${provider}\" is not a server-side provider.`\n      );\n  }\n}\n\nmodule.exports = { getSTTProvider };\n","sourceCodeStart":2,"sourceCodeEnd":27,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/3aec848f2885144aa8f1e53b9731a04310d5d558/server/utils/SpeechToText/index.js#L2-L27","documentation":"getSTTProvider() switches on process.env.STT_PROVIDER (defaulting to 'native') and only accepts the exact values openai, lemonade, deepgram, generic-openai, and groq; every other value — including the unset 'native' default, which is browser-side — hits the default case and throws this templated error.","triggerScenarios":"STT_PROVIDER set to a misspelled or case-wrong value ('Groq', 'openAi', 'deepgram ', a provider that is client-side-only like 'native'); or a server-side code path calling getSTTProvider() while STT_PROVIDER is unset so the 'native' default reaches the switch.","commonSituations":"Values are case-sensitive and not trimmed; users set a browser-side provider name in a deployment where server-side STT is invoked; .env quoting/spaces around the value; code changes calling getSTTProvider unconditionally instead of only for server-side providers.","solutions":["Set STT_PROVIDER to exactly one of: openai, lemonade, deepgram, generic-openai, groq","Match case exactly and remove surrounding whitespace/quotes from the value","If you intended browser-native transcription, do not invoke the server-side STT path — 'native' is intentionally not in this switch","Restart the server after correcting .env"],"exampleFix":"# before (.env)\nSTT_PROVIDER=Groq\n\n# after (.env)\nSTT_PROVIDER=groq","handlingStrategy":"validation","validationCode":"const SERVER_STT_PROVIDERS = ['openai', 'lemonade', 'deepgram', 'generic-openai', 'groq'];\nconst provider = (process.env.STT_PROVIDER || 'native').trim();\nif (provider !== 'native' && !SERVER_STT_PROVIDERS.includes(provider)) {\n  throw new Error(`STT_PROVIDER must be 'native' or one of: ${SERVER_STT_PROVIDERS.join(', ')}`);\n}","typeGuard":"function isServerSideSttProvider(value) {\n  return ['openai', 'lemonade', 'deepgram', 'generic-openai', 'groq'].includes(String(value).trim());\n}","tryCatchPattern":"try {\n  stt = getSTTProvider();\n} catch (err) {\n  if (err.message.includes('is not a server-side provider')) {\n    // reset STT_PROVIDER to a supported value or 'native' default\n  }\n  throw err;\n}","preventionTips":["Offer STT_PROVIDER as a dropdown of the five supported values — never free text","Values are case-sensitive and not trimmed: match them exactly in .env","Treat 'native' as client-side and never route it into getSTTProvider()"],"tags":["speech-to-text","provider-selection","environment-variable","validation"],"backgroundTag":"unsupported-provider","analyzedSha":"3aec848f2885144aa8f1e53b9731a04310d5d558","analyzedAt":"2026-08-18T10:02:21.017Z","contentChangedAt":"2026-08-18T10:02:21.017Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}