Mintplex-Labs/anything-llm · error · Error

No FireworksAI API key was set.

Error message

No FireworksAI API key was set.

What it means

The FireworksAiLLM constructor throws immediately when the FIREWORKS_AI_LLM_API_KEY environment variable is not set. AnythingLLM instantiates the provider class the moment a chat or embedding request selects FireworksAI, so this error surfaces as a failed request or provider-selection failure, not a startup crash. The key is required because every Fireworks call goes through the OpenAI-compatible client pointed at https://api.fireworks.ai/inference/v1.

Solutions

  1. Add FIREWORKS_AI_LLM_API_KEY=<your key> to the server .env (get it from firework.ai -> Account -> API Keys) and restart the server
  2. Confirm the variable name exactly matches FIREWORKS_AI_LLM_API_KEY — not FIREWORKS_API_KEY
  3. If running in Docker/compose, make sure the env var is passed into the container (env_file or environment entry) and recreate the container
  4. Verify with a quick check before selecting the provider: node -e "console.log(!!process.env.FIREWORKS_AI_LLM_API_KEY)"

Example fix

# before (.env)
# no Fireworks key

# after (.env)
FIREWORKS_AI_LLM_API_KEY=fw_XXXXXXXXXXXXXXXX
Defensive patterns

Strategy: validation

Validate before calling

const hasKey = !!process.env.FIREWORKS_AI_LLM_API_KEY;
if (!hasKey) {
  // show provider setup screen instead of attempting chat
  return setupError("FireworksAI requires FIREWORKS_AI_LLM_API_KEY");
}
const llm = new FireworksAiLLM(embedder, modelPref);

Try / catch

try {
  const llm = new FireworksAiLLM(embedder, modelPref);
} catch (err) {
  if (err.message === "No FireworksAI API key was set.") {
    return respond("Add FIREWORKS_AI_LLM_API_KEY in settings before using FireworksAI.");
  }
  throw err;
}

Prevention

When it happens

Trigger: Selecting FireworksAI as the LLM provider in the app while FIREWORKS_AI_LLM_API_KEY is absent from the process environment (not in .env, or the server was started before the var was added, or the deployment environment dropped it). The constructor runs per-request, so even a valid workspace with an otherwise correct config fails until the key exists.

Common situations: Copied .env from another provider's setup and forgot the Fireworks key; running under Docker/systemd where the env file isn't loaded into the process; CI or a fresh clone without the key; typo in the variable name (e.g. FIREWORKS_API_KEY instead of FIREWORKS_AI_LLM_API_KEY).

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18). Data as JSON: /api/errors/ff039c7a675ce518. Report an issue: GitHub.

Appendix: source

Thrown at server/utils/AiProviders/fireworksAi/index.js:23

const {
  LLMPerformanceMonitor,
} = require("../../helpers/chat/LLMPerformanceMonitor");
const {
  handleDefaultStreamResponseV2,
} = require("../../helpers/chat/responses");

const cacheFolder = path.resolve(
  process.env.STORAGE_DIR
    ? path.resolve(process.env.STORAGE_DIR, "models", "fireworks")
    : path.resolve(__dirname, `../../../storage/models/fireworks`)
);

class FireworksAiLLM {
  constructor(embedder = null, modelPreference = null) {
    this.className = "FireworksAiLLM";

    if (!process.env.FIREWORKS_AI_LLM_API_KEY)
      throw new Error("No FireworksAI API key was set.");
    const { OpenAI: OpenAIApi } = require("openai");
    this.openai = new OpenAIApi({
      baseURL: "https://api.fireworks.ai/inference/v1",
      apiKey: process.env.FIREWORKS_AI_LLM_API_KEY ?? null,
    });
    this.model = modelPreference || process.env.FIREWORKS_AI_LLM_MODEL_PREF;
    this.limits = {
      history: this.promptWindowLimit() * 0.15,
      system: this.promptWindowLimit() * 0.15,
      user: this.promptWindowLimit() * 0.7,
    };

    this.embedder = !embedder ? new NativeEmbedder() : embedder;
    this.defaultTemp = 0.7;

    if (!fs.existsSync(cacheFolder))
      fs.mkdirSync(cacheFolder, { recursive: true });
    this.cacheModelPath = path.resolve(cacheFolder, "models.json");

View on GitHub (pinned to 3aec848f28)