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 processed

View on GitHub (pinned to 3aec848f28)

Solutions

  1. Start (or restart) the document processing/collector service and wait for it to report healthy.
  2. 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).
  3. curl the collector endpoint from the server host - a 2xx on GET means online; connection refused means the process or port is wrong.
  4. 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

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


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