n8n/docker/images/runners
n8n-assistant[bot] a6b3e819bb
fix(core): Preserve NODE_PATH for globally installed npm packages in Docker (backport to 1.x) (#28781)
Co-authored-by: Declan Carroll <declan@n8n.io>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Matsuuu <huhta.matias@gmail.com>
2026-04-21 14:13:40 +03:00
..
Dockerfile fix: Dependency bump backport (#25788) 2026-02-16 08:05:45 +00:00
Dockerfile.distroless fix: Dependency bump backport (#25788) 2026-02-16 08:05:45 +00:00
n8n-task-runners.json fix(core): Preserve NODE_PATH for globally installed npm packages in Docker (backport to 1.x) (#28781) 2026-04-21 14:13:40 +03:00
README.md chore: Revert "chore: Initial V2 changes (#22553)" 2025-12-03 12:51:33 +02:00

n8n - Task runners (n8nio/runners) - (PREVIEW)

n8nio/runners image includes JavaScript runner, Python runner and Task runner launcher that connects to a Task Broker running on the main n8n instance when running in external mode. This image is to be launched as a sidecar container to the main n8n container.

Task runners are used to execute user-provided code in the Code Node, isolated from the n8n instance.

For official documentation, please see here.

For a distroless variant of this image, see here.

For development purposes only, see below.

Testing locally

1) Make a production build of n8n

pnpm run build:n8n

2) Build the task runners image

docker buildx build \
  -f docker/images/runners/Dockerfile \
  -t n8nio/runners \
  .

3) Start n8n on your host machine with Task Broker enabled

N8N_RUNNERS_ENABLED=true \
N8N_RUNNERS_MODE=external \
N8N_RUNNERS_AUTH_TOKEN=test \
N8N_NATIVE_PYTHON_RUNNER=true \
N8N_LOG_LEVEL=debug \
pnpm start

4) Start the task runner container

docker run --rm -it \
-e N8N_RUNNERS_AUTH_TOKEN=test \
-e N8N_RUNNERS_LAUNCHER_LOG_LEVEL=debug \
-e N8N_RUNNERS_TASK_BROKER_URI=http://host.docker.internal:5679 \
-p 5680:5680 \
n8nio/runners

If you need to add extra dependencies (custom image), follow these instructions.