Joshua Opolko

n8n vs Windmill: Which Self-Hosted Workflow Engine Should You Run?

By Joshua Opolko · Updated June 20, 2026

The short answer: Run n8n if your team stitches SaaS APIs together on a visual canvas and wants 400+ prebuilt integrations plus a drag-and-drop AI agent. Run Windmill if your workflows are really code (Python, TypeScript, Go) and you want those scripts to become workflows, internal UIs, and cron jobs with less glue. Both self-host in one Docker command. n8n optimizes for low-code breadth; Windmill for code-first depth and throughput.
Note on first-hand data: spots marked [FIRST-HAND TODO] are reserved for measured numbers (idle and loaded RAM, jobs per second) from running both tools on the same box. They are left blank on purpose rather than filled with vendor or guessed figures.

n8n vs Windmill in one line each

n8n is a visual, node-based automation tool: you assemble flows on a canvas from 400+ prebuilt app nodes and drop into JavaScript or Python only when you need to. Windmill is a code-first developer platform: you write scripts in 20-plus languages and Windmill turns them into workflows, scheduled jobs, and auto-generated internal UIs.

They overlap in the middle (both schedule jobs, both run code, both now ship AI agents) but they start from opposite ends: n8n starts from the canvas, Windmill starts from the code. That single difference drives almost every other trade-off below.

Side-by-side comparison

The table summarizes how the two tools differ on the axes that matter for a self-hosting decision: paradigm, languages, integrations, AI, licensing, and how each one scales. Details and sources follow in the sections below.

 n8nWindmill
ParadigmVisual, node-based (low-code)Code-first scripts + visual flow & app builder
Custom-logic languagesJavaScript + native Python (v2.0+)20+: Python, TypeScript, Go, Bash, SQL, PHP, Rust and more
Prebuilt integrations400+ app nodesFewer prebuilt; any API via code + script hub
Auto-generated UIs / internal appsLimited (forms)Core feature (apps & forms from scripts)
Built-in AILangChain-based AI Agent nodeWindmill AI + AI Agents
LicenseFair-code: Sustainable Use License (+ Enterprise); not OSIAGPLv3 core (+ Apache parts) + paid Enterprise
EngineNode.js / TypeScriptRust core, Postgres-backed job queue
Self-hostDocker / npm, SQLite or Postgres, queue mode + RedisDocker Compose + Postgres + worker pool
Best forAPI stitching, ops automation, mixed-skill teamsCode-heavy logic, internal tools, polyglot teams, scale

Sources: n8n GitHub repo and n8n docs; Windmill GitHub repo and Windmill docs. Verified June 2026.

When n8n is the right call

Choose n8n when the work is connecting services, not writing algorithms. Its 400+ prebuilt nodes (per the official repo) mean a Slack-to-Notion or Stripe-to-spreadsheet flow rarely touches code, and a visual canvas stays readable for non-engineers on the team.

If you are standing up self-hosted n8n for the first time, our n8n self-hosted guide walks through the Docker setup and the Postgres-plus-queue-mode path for production.

When Windmill is the right call

Choose Windmill when the workflow is already code. If a job is really a 200-line Python script with branching, Windmill keeps it as code (versioned, testable, git-syncable) while still giving it a schedule, a UI, retries, and observability. You do not redraw it as thirty nodes.

Self-hosting and deployment

Both are a docker compose up away, but they scale differently. n8n is a single Node.js service backed by SQLite or, for production, PostgreSQL; you scale past one instance with queue mode, adding Redis as a message broker and a pool of worker processes. Windmill is a Rust server plus worker containers and Postgres, where Postgres itself holds the job queue and you scale by adding workers.

n8n licensing watch-out: n8n is fair-code under the Sustainable Use License (plus an Enterprise license). You can self-host it for your own business for free, but the license restricts offering n8n to third parties as a hosted or white-labeled service. It is not OSI open source. Read the license before any commercial redistribution.

Windmill licensing: the core is AGPLv3 (OSI open source, with some Apache-2.0 components), and a paid Enterprise edition adds SSO, audit logs, git sync, and multiplayer. AGPLv3 is more permissive for self-hosting but carries copyleft obligations if you modify and distribute.

Resource reality check [FIRST-HAND TODO]: real idle-versus-loaded RAM and CPU for each on a known VPS (for example a small $12 box). This is exactly the deployment-evaluation data that almost nobody publishes honestly, and it belongs here once measured, not estimated.

Running AI and LangChain workflows

AI is no longer a clean dividing line: both tools ship native AI as of 2026. The difference is how much you click versus how much you write.

Rule of thumb: prototype the agent in n8n, then graduate it to Windmill or plain code when the logic outgrows the canvas. That is roughly the path described in building JOSIE, a persistent-memory AI workflow. If you are weighing a dedicated LLM-app builder instead, see the Dify self-hosted guide; Dify targets RAG and chat apps rather than general automation.

What changed in 2026

Two updates reshape this comparison from a year ago. First, n8n moved Python in the Code node from the Pyodide WebAssembly sandbox to a native task runner, made the default in the 2.0 release. That widens available Python packages and changes data access from dot to bracket syntax, so existing Pyodide scripts need a migration check. Second, both tools shipped first-party AI agents, so "does it do AI" stopped being a differentiator. n8n is now on the 2.x line; if you run 1.x, read the 2.0 migration notes before upgrading.

Verdict: which should you run?

Frequently asked questions

Is n8n or Windmill better for self-hosting?

Both self-host cleanly with Docker and PostgreSQL. n8n runs as a Node.js service and scales with queue mode (Redis plus worker processes). Windmill uses a Rust core with a Postgres-backed job queue and scales by adding stateless workers. Choose n8n for connector automation, Windmill for code-heavy or high-concurrency workloads.

Can n8n run Python?

Yes. n8n runs JavaScript and Python in its Code node. As of the 2.0 release, Python uses a native task runner instead of the older Pyodide WebAssembly sandbox, which widens available packages and changes data access to bracket syntax. Windmill treats Python as a first-class language alongside TypeScript, Go, and more.

Which is better for AI and LangChain workflows?

Both ship native AI now. n8n has a LangChain-based AI Agent node with models, tools, memory, and vector stores on the canvas. Windmill has Windmill AI and AI Agents, and also lets you write LangChain code directly in Python or TypeScript. Prototype agents fast in n8n; move to code when logic gets complex.

Are n8n and Windmill open source?

Windmill core is AGPLv3 (OSI open source) with a paid Enterprise edition. n8n is fair-code under the Sustainable Use License plus an Enterprise license; it is free to self-host for your own business but is not OSI open source and restricts reselling it as a hosted service.

How many languages does Windmill support?

Windmill supports 20-plus languages as first-class scripts, including Python, TypeScript, Go, Bash, SQL, PHP, Rust, C#, Java, Ruby, R, PowerShell, GraphQL, and Ansible, plus arbitrary Docker images. n8n is JavaScript and Python only, inside its Code node.

Written by Joshua Opolko, who self-hosts AI and automation tooling and writes about it at joshuaopolko.com. Product facts verified against official documentation and source repositories in June 2026; version numbers (n8n 2.x, Windmill 1.x) are a point-in-time snapshot and both projects release frequently.