Task runners
File-based configuration
Unlike the main n8n image, you CANNOT use file-based configuration for secrets in the task runner image. This means that variables with a _FILE suffix added will not be recognized.
Task runners execute code defined by the Code node.
n8n instance environment variables
N8N_RUNNERS_ENABLED (deprecated)
Boolean
false
Are task runners enabled. Deprecated from v2.0.
N8N_RUNNERS_MODE
Enum string: internal, external
internal
How to launch and run the task runner. internal means n8n will launch a task runner as child process. external means an external orchestrator will launch the task runner.
N8N_RUNNERS_AUTH_TOKEN
String
Random string
Shared secret used by a task runner to authenticate to n8n. Required when using external mode.
N8N_RUNNERS_BROKER_PORT
Number
5679
Port the task broker listens on for task runner connections.
N8N_RUNNERS_BROKER_LISTEN_ADDRESS
String
127.0.0.1
Address the task broker listens on.
N8N_RUNNERS_MAX_PAYLOAD
Number
1 073 741 824
Maximum payload size in bytes for communication between a task broker and a task runner.
N8N_RUNNERS_MAX_OLD_SPACE_SIZE
String
The --max-old-space-size option to use for a task runner (in MB). By default, Node.js will set this based on available memory.
N8N_RUNNERS_MAX_CONCURRENCY
Number
5
The number of concurrent tasks a task runner can execute at a time.
N8N_RUNNERS_TASK_TIMEOUT
Number
300
The maximum time, in seconds, a task can run before the runner stops it and restarts. This value must be greater than 0.
N8N_RUNNERS_HEARTBEAT_INTERVAL
Number
30
The interval, in seconds, at which the runner must send a heartbeat to the broker. If the runner doesn't send a heartbeat in time, the task stops and the runner restarts. This value must be greater than 0.
N8N_RUNNERS_INSECURE_MODE
Boolean
false
Whether to disable all security measures in the task runner, for compatibility with modules that rely on insecure JS features. Discouraged for production use.
N8N_RUNNERS_TASK_REQUEST_TIMEOUT
Number
60
How long (in seconds) a task request can wait for a runner to become available before timing out. This prevents workflows from hanging indefinitely when no runners are available. Must be greater than 0.
Task runner launcher environment variables
N8N_RUNNERS_LAUNCHER_LOG_LEVEL
Enum string: debug, info, warn, error
info
Which log messages to show.
N8N_RUNNERS_AUTH_TOKEN
String
-
Shared secret used to authenticate to n8n.
N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT
Number
15
The number of seconds to wait before shutting down an idle runner.
N8N_RUNNERS_TASK_BROKER_URI
String
http://127.0.0.1:5679
The URI of the task broker server (n8n instance).
N8N_RUNNERS_LAUNCHER_HEALTH_CHECK_PORT
Number
5680
Port for the launcher's health check server.
N8N_RUNNERS_MAX_PAYLOAD
Number
1 073 741 824
Maximum payload size in bytes for communication between a task broker and a task runner.
N8N_RUNNERS_MAX_CONCURRENCY
Number
5
The number of concurrent tasks a task runner can execute at a time.
Task runner environment variables (all languages)
N8N_RUNNERS_GRANT_TOKEN
String
Random string
Token the runner uses to authenticate with the task broker. This is automatically provided by the launcher.
N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT
Number
15
The number of seconds to wait before shutting down an idle runner.
N8N_RUNNERS_TASK_BROKER_URI
String
http://127.0.0.1:5679
The URI of the task broker server (n8n instance).
N8N_RUNNERS_LAUNCHER_HEALTH_CHECK_PORT
Number
5680
Port for the launcher's health check server.
N8N_RUNNERS_MAX_PAYLOAD
Number
1 073 741 824
Maximum payload size in bytes for communication between a task broker and a task runner.
N8N_RUNNERS_MAX_CONCURRENCY
Number
5
The number of concurrent tasks a task runner can execute at a time.
Task runner environment variables (JavaScript)
NODE_FUNCTION_ALLOW_BUILTIN
String
-
Permit users to import specific built-in modules in the Code node. Use * to allow all. n8n disables importing modules by default. In external mode, set this in the runners config file (/etc/n8n-task-runners.json) as an env-override, not as a container environment variable.
NODE_FUNCTION_ALLOW_EXTERNAL
String
-
Permit users to import specific external modules (from n8n/node_modules) in the Code node. n8n disables importing modules by default. In external mode, set this in the runners config file (/etc/n8n-task-runners.json) as an env-override, not as a container environment variable.
N8N_RUNNERS_ALLOW_PROTOTYPE_MUTATION
Boolean
false
Whether to allow prototype mutation for external libraries. Set to true to allow modules that rely on runtime prototype mutation (for example, puppeteer) at the cost of relaxing security.
N8N_RUNNERS_MAX_OLD_SPACE_SIZE
String
The --max-old-space-size option to use for a task runner (in MB). By default, Node.js will set this based on available memory.
Task runner environment variables (Python)
N8N_RUNNERS_STDLIB_ALLOW
String
-
Python standard library modules that you can use in the Code node, including their submodules. Use * to allow all stdlib modules. n8n disables all Python standard library imports by default. In external mode, set this in the runners config file (/etc/n8n-task-runners.json) as an env-override, not as a container environment variable.
N8N_RUNNERS_EXTERNAL_ALLOW
String
-
Third-party Python modules that are allowed to be used in the Code node, including their submodules. Use * to allow all external modules. n8n disables all third-party Python modules by default. Third-party Python modules must be included in the n8nio/runners image. In external mode, set this in the runners config file (/etc/n8n-task-runners.json) as an env-override, not as a container environment variable.
N8N_RUNNERS_ALLOW_TRANSITIVE_IMPORTS
Boolean
false
Whether imports performed by an allowlisted package's own code skip the import allowlist (both N8N_RUNNERS_EXTERNAL_ALLOW and N8N_RUNNERS_STDLIB_ALLOW). Set to true to let an allowlisted package load whatever it imports (its transitive dependencies and stdlib) without listing each module. This helps with packages whose internal imports pull in other modules (for example, pandas imports pytz, or boto3 imports dateutil). Your own imports in the Code node are still checked against the allowlist. Enabling this trusts the import activity of all installed packages, not only the named ones: a compromised dependency could pull in modules the allowlist would otherwise block, so only enable it when the runner image's installed packages are trusted. In external mode, set this in the runners config file (/etc/n8n-task-runners.json) as an env-override, not as a container environment variable.
N8N_RUNNERS_BUILTINS_DENY
String
eval,exec,compile,open,input,breakpoint,getattr,object,type,vars,setattr,delattr,hasattr,dir,memoryview,__build_class__,globals,locals
Python built-ins that you can't use in the Code node. Set to an empty string to allow all built-ins.
N8N_BLOCK_RUNNER_ENV_ACCESS
Boolean
true
Whether to block access to the runner's environment from within Python code tasks. Set to false to enable all Python code node users access to the runner's environment via os.environ. For security reasons, environment variable access is blocked by default.
Last updated
Was this helpful?