{"record":{"id":"0d7637385c40fd5e","repo":"Mintplex-Labs/anything-llm","slug":"no-novita-api-key-was-set","errorCode":null,"errorMessage":"No Novita API key was set.","messagePattern":"No Novita API key was set\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"server/utils/AiProviders/novita/index.js","lineNumber":25,"sourceCode":"} = require(\"../../helpers/chat/responses\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { safeJsonParse } = require(\"../../http\");\nconst {\n  LLMPerformanceMonitor,\n} = require(\"../../helpers/chat/LLMPerformanceMonitor\");\nconst cacheFolder = path.resolve(\n  process.env.STORAGE_DIR\n    ? path.resolve(process.env.STORAGE_DIR, \"models\", \"novita\")\n    : path.resolve(__dirname, `../../../storage/models/novita`)\n);\n\nclass NovitaLLM {\n  defaultTimeout = 3_000;\n\n  constructor(embedder = null, modelPreference = null) {\n    if (!process.env.NOVITA_LLM_API_KEY)\n      throw new Error(\"No Novita API key was set.\");\n\n    this.className = \"NovitaLLM\";\n    const { OpenAI: OpenAIApi } = require(\"openai\");\n    this.basePath = \"https://api.novita.ai/v3/openai\";\n    this.openai = new OpenAIApi({\n      baseURL: this.basePath,\n      apiKey: process.env.NOVITA_LLM_API_KEY ?? null,\n      defaultHeaders: {\n        \"HTTP-Referer\": \"https://anythingllm.com\",\n        \"X-Novita-Source\": \"anythingllm\",\n      },\n    });\n    this.model =\n      modelPreference ||\n      process.env.NOVITA_LLM_MODEL_PREF ||\n      \"deepseek/deepseek-r1\";\n    this.limits = {\n      history: this.promptWindowLimit() * 0.15,","sourceCodeStart":7,"sourceCodeEnd":43,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/526360e320da9d1b36074be5ed64fe76e5bbfbbd/server/utils/AiProviders/novita/index.js#L7-L43","documentation":"Constructor guard for NovitaLLM: throws if process.env.NOVITA_LLM_API_KEY is absent. Builds the OpenAI-compatible client at https://api.novita.ai/v3/openai with custom headers (HTTP-Referer, X-Novita-Source). Note the env var is NOVITA_LLM_API_KEY (with _LLM), and there is a defaultTimeout of 3000ms.","triggerScenarios":"Instantiating `new NovitaLLM(...)` without NOVITA_LLM_API_KEY set; selecting the Novita provider without credentials.","commonSituations":"Typo between NOVITA_API_KEY and NOVITA_LLM_API_KEY; provider switched without configuring the key; secret absent from container/CI env; .env not reloaded.","solutions":["Set NOVITA_LLM_API_KEY (note the _LLM segment) in server/.env.","Restart the server to reload env.","Verify the exact variable name — NOVITA_LLM_API_KEY, not NOVITA_API_KEY.","Inject the key into the deployment environment."],"exampleFix":"// server/.env\nNOVITA_LLM_API_KEY=your_key_here","handlingStrategy":"validation","validationCode":"if (!process.env.NOVITA_LLM_API_KEY) {\n  throw new Error('NOVITA_LLM_API_KEY missing — note the _LLM segment — set before enabling Novita.');\n}","typeGuard":null,"tryCatchPattern":"try {\n  const llm = new NovitaLLM(embedder, modelPref);\n} catch (e) {\n  if (/No Novita API key/i.test(e.message)) {\n    // config error — exact var: NOVITA_LLM_API_KEY\n  }\n}","preventionTips":["Use the exact name NOVITA_LLM_API_KEY (with _LLM), not NOVITA_API_KEY.","Validate keys centrally in the provider factory.","Add a startup env check for enabled providers."],"tags":["novita","configuration","api-key","env","constructor"],"backgroundTag":null,"analyzedSha":"526360e320da9d1b36074be5ed64fe76e5bbfbbd","analyzedAt":"2026-08-13T01:45:47.170Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}