windmill-labs/windmill · error

Indexer mode requires compiling with the tantivy feature fla

Error message

Indexer mode requires compiling with the tantivy feature flag.

What it means

Windmill binaries can run in several modes (server, worker, indexer, etc.) selected via a CLI flag. The 'indexer' mode (full-text search indexing) depends on the tantivy crate, which is an enterprise-edition feature gated behind the 'tantivy' cargo feature. If a binary compiled without that feature is asked to run in indexer mode, it panics at startup rather than starting a non-functional indexer.

Source

Thrown at backend/windmill-common/src/utils.rs:142

                if std::env::var("BASE_INTERNAL_URL").is_err() {
                    panic!("BASE_INTERNAL_URL is required in agent mode")
                }
                if std::env::var("AGENT_TOKEN").is_err() {
                    println!("AGENT_TOKEN is not passed. This is required for the agent to work and contains the JWT to authenticate with the server.")
                }

                #[cfg(not(feature = "enterprise"))]
                {
                    panic!("Agent mode is only available in the EE, ignoring...");
                }
                #[cfg(feature = "enterprise")]
                Mode::Agent
            } else if &x == "indexer" {
                tracing::info!("Binary is in 'indexer' mode");
                #[cfg(not(feature = "tantivy"))]
                {
                    eprintln!("Cannot start the indexer because tantivy is not included in this binary/image. Make sure you are using the EE image if you want to access the full text search features.");
                    panic!("Indexer mode requires compiling with the tantivy feature flag.");
                }
                #[cfg(feature = "tantivy")]
                Mode::Indexer
            } else if &x == "standalone+search"{
                search_addon = true;
                    println!("Binary is in 'standalone' mode with search enabled");
                    Mode::Standalone
            } else if &x == "mcp" {
                println!("Binary is in 'mcp' mode");
                Mode::MCP
            } else {
                if &x != "standalone" {
                    eprintln!("mode not recognized, defaulting to standalone: {x}");
                } else {
                    println!("Binary is in 'standalone' mode");
                }
                Mode::Standalone
            }

View on GitHub (pinned to e474e8803c)

Solutions

  1. Use the enterprise edition image (ghcr.io/windmill-labs/windmill-ee) which is compiled with the tantivy feature
  2. Change the deployment mode to 'standalone+search' only if the binary supports tantivy; otherwise run 'standalone'/'server' mode without indexer
  3. Remove the indexer replica from your deployment if full-text search is not needed
  4. Build the binary locally with `cargo build --features tantivy` if self-compiling

Example fix

// before (docker-compose, CE image)
image: ghcr.io/windmill-labs/windmill:main
command: "indexer"
// after
image: ghcr.io/windmill-labs/windmill-ee:main
command: "indexer"
Defensive patterns

Strategy: validation

Validate before calling

// In deployment config, before starting:
const os = require('child_process').execSync;
const mode = process.env.MODE || 'standalone';
if (mode === 'indexer' && !isEeImage()) {
  throw new Error('indexer mode requires the EE image (tantivy feature)');
}

Prevention

When it happens

Trigger: Starting the binary with mode 'indexer' (e.g. `windmill indexer ...`) while it was compiled without `--features tantivy` — typically a community/CE or OSS image.

Common situations: Deploying the CE/oss docker image with indexer mode enabled; a docker-compose or Helm values file copied from an EE deployment; setting mode via the `MODE`/binary arg in a shared template; upgrading to full-text search without switching to the EE image.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/975aedd77bc4d54b. Report an issue: GitHub.