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
- Check the service directly: curl $WEAVIATE_ENDPOINT/v1/.well-known/ready — expect HTTP 200
- Fix WEAVIATE_ENDPOINT to a bare origin (e.g. http://localhost:8080 or https://host) with no path
- If the instance has auth enabled, set WEAVIATE_API_KEY so the liveness call is not rejected with 401
- 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
- Run a readiness preflight against /v1/.well-known/ready before heavy embedding jobs
- In docker-compose, add a healthcheck + depends_on condition so the app starts after Weaviate is ready
- Keep WEAVIATE_ENDPOINT as a bare origin URL and set the API key when auth is enabled
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
- ${this.name}::Invalid Heartbeat received - is the instance o
- Ollama service could not be reached. Is Ollama running?
- Weaviate::Invalid ENV settings
- Error embedding into Weaviate
- Could not embed document chunks! This document will not be r
AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18).
Data as JSON: /api/errors/0a6b43a45e6fae61.
Report an issue: GitHub.