Mintplex-Labs/anything-llm · error · Error

Weaviate::Invalid Alive signal received - is the service onl

Error message

Weaviate::Invalid Alive signal received - is the service online?

What it means

After constructing the Weaviate client from WEAVIATE_ENDPOINT (and optional WEAVIATE_API_KEY), connect() probes client.misc.liveChecker().do(). If the liveness endpoint does not report the service alive, this error is thrown: the client object built fine, but the Weaviate service itself failed the health probe.

Source

Thrown at server/utils/vectorDbProviders/weaviate/index.js:35

    return "Weaviate";
  }

  async connect() {
    if (process.env.VECTOR_DB !== "weaviate")
      throw new Error("Weaviate::Invalid ENV settings");

    const weaviateUrl = new URL(process.env.WEAVIATE_ENDPOINT);
    const options = {
      scheme: weaviateUrl.protocol?.replace(":", "") || "http",
      host: weaviateUrl?.host,
      ...(process.env?.WEAVIATE_API_KEY?.length > 0
        ? { apiKey: new weaviate.ApiKey(process.env?.WEAVIATE_API_KEY) }
        : {}),
    };
    const client = weaviate.client(options);
    const isAlive = await await client.misc.liveChecker().do();
    if (!isAlive)
      throw new Error(
        "Weaviate::Invalid Alive signal received - is the service online?"
      );
    return { client };
  }

  async heartbeat() {
    await this.connect();
    return { heartbeat: Number(new Date()) };
  }

  async totalVectors() {
    const { client } = await this.connect();
    const collectionNames = await this.allNamespaces(client);
    var totalVectors = 0;
    for (const name of collectionNames) {
      totalVectors += await this.namespaceCountWithClient(client, name);
    }
    return totalVectors;

View on GitHub (pinned to 3aec848f28)

Solutions

  1. Check the service directly: curl $WEAVIATE_ENDPOINT/v1/.well-known/ready — expect HTTP 200
  2. Fix WEAVIATE_ENDPOINT to a bare origin (e.g. http://localhost:8080 or https://host) with no path
  3. If the instance has auth enabled, set WEAVIATE_API_KEY so the liveness call is not rejected with 401
  4. Give Weaviate time to finish startup (or restart it), then retry the operation

Example fix

# before
WEAVIATE_ENDPOINT=localhost:8080/v1

# after
WEAVIATE_ENDPOINT=http://localhost:8080
Defensive patterns

Strategy: retry

Validate before calling

async function weaviateReady(endpoint, apiKey) {
  const res = await fetch(`${endpoint}/v1/.well-known/ready`, {
    headers: apiKey ? { Authorization: `Bearer ${apiKey}` } : {},
  });
  return res.ok;
}
// gate long operations on this preflight, with backoff, before calling connect()

Try / catch

for (let attempt = 1; attempt <= 5; attempt++) {
  try { return await weaviate.connect(); }
  catch (e) {
    if (!e.message.includes("Alive signal") || attempt === 5) throw e;
    await delay(500 * 2 ** attempt); // service may still be booting
  }
}

Prevention

When it happens

Trigger: WEAVIATE_ENDPOINT pointing at a stopped or unreachable Weaviate; wrong scheme/host parsed from a malformed URL; Weaviate still booting and not ready; auth required but WEAVIATE_API_KEY missing so the probe is rejected; DNS/network failure between app and service.

Common situations: Docker Weaviate container not running or mid-startup; endpoint entered with a path or trailing slash that breaks host parsing; reverse proxy/TLS misconfigured; embedded/Weaviate Cloud instance paused or region URL wrong; firewall blocking egress.

Related errors


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