windmill-labs/windmill · error
Agent mode is only available in the EE, ignoring...
Error message
Agent mode is only available in the EE, ignoring...
What it means
Agent mode is an Enterprise Edition feature. When the binary is built without the `enterprise` feature, selecting `MODE=agent` panics with this message during startup mode parsing. The cfg-gated block means non-EE builds simply cannot run as agents.
Source
Thrown at backend/windmill-common/src/utils.rs:133
} else if &x == "worker" {
tracing::info!("Binary is in 'worker' mode");
#[cfg(windows)]
{
println!("It is highly recommended to use the agent mode instead on windows (MODE=agent) and to pass a BASE_INTERNAL_URL");
}
Mode::Worker
} else if &x == "agent" {
println!("Binary is in 'agent' mode with BASE_INTERNAL_URL={}", std::env::var("BASE_INTERNAL_URL").unwrap_or_default());
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");View on GitHub (pinned to e474e8803c)
Solutions
- Use an Enterprise Edition build of Windmill (built with the `enterprise` feature) to run agents
- On non-EE, replace MODE=agent with MODE=worker and configure the worker against the server directly
- Check the panic context: the message says "ignoring...", so on some paths the mode may fall back — verify which mode actually started in the logs
Example fix
// before (OSS build) MODE=agent // after (OSS build) MODE=worker # or obtain/use an EE build with the enterprise feature for agent mode
Defensive patterns
Strategy: validation
Validate before calling
# refuse agent mode on non-EE builds before startup
if [ "$MODE" = "agent" ]; then
# e.g. check the binary edition
windmill --version | grep -q ee || { echo "agent mode requires the EE build" >&2; MODE=worker; fi
fi Prevention
- Match deployment manifests to the binary edition (OSS vs EE)
- Check feature availability in docs/CI before enabling EE-only modes
- Prefer MODE=worker on community builds; keep agent configs in EE-specific overlays
When it happens
Trigger: Running a community-edition windmill binary (built without the `enterprise` cargo feature) with `MODE=agent` set.
Common situations: Using the OSS docker image or a locally built non-EE binary while copying EE deployment docs that use agent mode; forgetting that agent mode requires the EE build/license.
Related errors
- BASE_INTERNAL_URL is required in agent mode
- trigger kind '${trigger.kind}' requires Enterprise
- Server mode requires a database connection
- WINDMILL_DIR must not be empty
- External JWT auth is not open source
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/e34cea4864261e62.
Report an issue: GitHub.