Mintplex-Labs/anything-llm · error
Document processing API is not online. Document ${originalna
Error message
Document processing API is not online. Document ${originalname} will not be processed automatically. What it means
The 500 reply from POST /workspace/:slug/upload when Collector.online() returns false. The collector is the companion document-processing (vector/embedding) API; online() is a bare GET against the collector endpoint that must return 2xx. When it cannot be reached, the document cannot be embedded automatically and the upload is rejected with the filename in the message.
Source
Thrown at server/endpoints/workspaces.js:137
const Collector = new CollectorApi();
const { originalname } = request.file;
// Multipart field order matters: multer only exposes text fields on
// request.body that were appended BEFORE the file part, so the client
// must append folderName/metadata first. See FileUploadProgress.
const { folderName = null, metadata: _metadata = "{}" } =
reqBody(request);
const metadata =
typeof _metadata === "string"
? safeJsonParse(_metadata, {})
: _metadata;
const processingOnline = await Collector.online();
if (!processingOnline) {
response
.status(500)
.json({
success: false,
error: `Document processing API is not online. Document ${originalname} will not be processed automatically.`,
})
.end();
return;
}
const { success, reason, documents } = await Collector.processDocument(
originalname,
metadata
);
if (!success) {
response.status(500).json({ success: false, error: reason }).end();
return;
}
// When the upload is part of a folder upload, move the processedView on GitHub (pinned to 3aec848f28)
Solutions
- Start (or restart) the document processing/collector service and wait for it to report healthy.
- Verify COLLECTOR_ENDPOINT matches the collector's actual scheme/host/port from the server's perspective (container-to-container DNS, not localhost, in multi-container setups).
- curl the collector endpoint from the server host - a 2xx on GET means online; connection refused means the process or port is wrong.
- Re-upload the document once online(); the check is per-request, so no cleanup is needed.
Defensive patterns
Strategy: validation
Validate before calling
// Health-check the collector before accepting an upload in the UI
async function collectorOnline(apiBase) {
try {
const res = await fetch(`${apiBase}/system/collector-health`); // or probe COLLECTOR_ENDPOINT directly
return res.ok;
} catch { return false; }
}
if (!(await collectorOnline(apiBase))) {
showBanner("Document processing offline - uploads disabled until the collector service is running");
return;
} Prevention
- Wire collector health into orchestration so dependent uploads wait for readiness.
- Keep COLLECTATOR/COLLECTOR_ENDPOINT consistent between server and collector deployments.
- In multi-container setups, address the collector by service DNS, not localhost.
When it happens
Trigger: Uploading a document while the collector process/container is not running; COLLECTOR_ENDPOINT env pointing at the wrong host/port; the collector listening only on 127.0.0.1 while the server runs in another container; firewall/port conflict; collector still booting after a restart.
Common situations: Docker compose deployment where the collector service failed to start (check container logs); changed the collector port without updating COLLECTOR_ENDPOINT; splitting server and collector across hosts without adjusting the env; local dev where only the node server was started.
Related errors
- URL could not be scraped and no content was found.
- Document processing is unavailable. The collector service is
- Internal Server Error
- Not Found
- AnthropicLLM::getChatCompletion failed to communicate with A
AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18).
Data as JSON: /api/errors/e7aca1d6414c696b.
Report an issue: GitHub.