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
- Use the enterprise edition image (ghcr.io/windmill-labs/windmill-ee) which is compiled with the tantivy feature
- Change the deployment mode to 'standalone+search' only if the binary supports tantivy; otherwise run 'standalone'/'server' mode without indexer
- Remove the indexer replica from your deployment if full-text search is not needed
- 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
- Pin the EE image wherever indexer/full-text search is enabled
- Keep mode settings in one deployment template reviewed per image variant
- Smoke-test startup with the chosen mode before rollout
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
- WINDMILL_DIR must not be empty
- JavaScript expression evaluation requires the `quickjs` feat
- Script '${path}' has a deployment error and cannot be run:\n
- error (from getWorkspaceMutationTargetError)
- raw app ${ref.path} has no compiled bundle — deploy it first
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/975aedd77bc4d54b.
Report an issue: GitHub.