DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

Windmill vs n8n: Which Automation Platform to Self-Host?

Quick Verdict

Windmill is the better choice for developer teams who want to build internal tools, scripts, and data pipelines with a code-first approach. n8n is better for business workflow automation with its visual editor and 400+ pre-built integrations. They target different audiences despite both being "automation platforms."

Updated March 2026: Verified with latest Docker images and configurations.

Overview

Windmill is an open-source developer platform for building scripts, workflows, and UIs. It's code-first — you write Python, TypeScript, Go, Bash, or SQL scripts, and Windmill handles scheduling, error handling, approval flows, and auto-generated UIs. Think Retool + Temporal + Airflow combined.

n8n is a visual workflow automation platform for connecting apps and services. It's UI-first — you drag and drop nodes, configure connections, and build automations without necessarily writing code. Think self-hosted Zapier with code superpowers.

Feature Comparison

Feature Windmill n8n
Primary paradigm Code-first (scripts + flows) Visual-first (nodes + connections)
Supported languages Python, TypeScript, Go, Bash, SQL, PowerShell JavaScript, Python (in code nodes)
Built-in integrations Scripts connect to anything via code 400+ pre-built connectors
Visual editor Flow editor + script editor Canvas node editor
Auto-generated UIs Yes (from script parameters) No
Approval flows Built-in (suspend/resume) Via external triggers
Scheduling Cron-based Cron + interval + trigger-based
Error handling Retries, error handlers per step Error workflows, retry logic
Worker architecture Dedicated worker containers Single process or queue mode
Multiplayer editing Yes (real-time collaboration) No
Version control Git sync (native) Built-in workflow versioning
License AGPLv3 (EE features paid) Sustainable Use License
Docker services 4-6 (server, workers, DB, Caddy, LSP) 2 (n8n + PostgreSQL)

Installation Complexity

Windmill has a complex Docker setup. The official docker-compose.yml runs 6 services: Windmill server, default workers (3 replicas), native workers, PostgreSQL, Caddy reverse proxy, and an LSP service for in-browser code completion.

services:
  windmill_server:
    image: ghcr.io/windmill-labs/windmill:1.654.0
  windmill_worker:
    image: ghcr.io/windmill-labs/windmill:1.654.0
    deploy:
      replicas: 3
  windmill_worker_native:
    image: ghcr.io/windmill-labs/windmill:1.654.0
  db:
    image: postgres:16
  caddy:
    image: ghcr.io/windmill-labs/caddy-l4
  lsp:
    image: ghcr.io/windmill-labs/windmill-extra
Enter fullscreen mode Exit fullscreen mode

Workers run as privileged containers with Docker socket access for Docker-in-Docker execution. PostgreSQL needs 1GB shared memory (shm_size).

n8n needs 2 services — n8n and PostgreSQL:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:2.11.3
  postgres:
    image: postgres:16
Enter fullscreen mode Exit fullscreen mode

Winner: n8n. Dramatically simpler deployment. Windmill's multi-service architecture is powerful but complex.

Performance and Resource Usage

Metric Windmill n8n
RAM (full stack) ~2 GB (server + 3 workers + DB + extras) ~350 MB
CPU Medium-High (workers are compute-heavy) Low
Disk ~1 GB ~500 MB
Concurrent jobs Limited by worker count and resources Hundreds per process
Cold start Fast (native workers: sub-100ms) Instant (event-driven)

Windmill is significantly heavier because it runs actual isolated script executions. Each worker container can consume substantial resources depending on the scripts it runs. n8n is lightweight because it's essentially an event loop making API calls.

Community and Support

Metric Windmill n8n
GitHub stars 15k+ 60k+
Release cadence Multiple times per week Weekly
Documentation Good (windmill.dev/docs) Excellent (docs.n8n.io)
Community Discord (active) Forum + Discord (large)
Commercial backing Windmill Labs n8n GmbH
Enterprise features SAML, audit logs, priority support SSO, environments, Git sync

Both have active development and commercial backing. n8n has a much larger user community.

Use Cases

Choose Windmill If...

  • You're building internal developer tools and scripts
  • You need to run Python/TypeScript/Go/SQL scripts on schedules
  • You want auto-generated UIs from script parameters
  • You need approval workflows (human-in-the-loop)
  • You're building data pipelines or ETL jobs
  • Your team writes code and wants version control with Git
  • You need multiplayer real-time editing

Choose n8n If...

  • You're replacing Zapier/Make for business workflow automation
  • You want 400+ pre-built integrations without writing code
  • You need a lightweight, simple deployment
  • Your users are non-technical or semi-technical
  • You're connecting SaaS apps (CRM, email, chat, etc.)
  • You want a drag-and-drop interface
  • Resource efficiency matters (VPS or Raspberry Pi)

Final Verdict

These tools solve different problems. Windmill is an internal developer platform for running scripts, building tools, and orchestrating complex jobs. n8n is a workflow automation tool for connecting apps and services visually.

If you're a developer team that needs to run scheduled scripts, build internal tools with auto-generated UIs, and orchestrate multi-step data pipelines — pick Windmill. It's more powerful than n8n for code-heavy workflows.

If you're automating business processes — syncing data between apps, processing webhooks, sending notifications — pick n8n. It's simpler to deploy, lighter on resources, and has far more pre-built integrations.

Some teams run both: Windmill for backend scripts and data jobs, n8n for app-to-app integrations.

FAQ

Can Windmill replace n8n?

For code-heavy workflows, yes. For visual automations connecting SaaS apps with pre-built connectors, no. Windmill requires you to write scripts to connect to each service, while n8n provides ready-made nodes.

Why do Windmill workers need privileged mode?

Windmill runs user scripts in isolated containers for security. Workers need Docker socket access to spawn these execution containers. This is similar to CI/CD runners — the trade-off is powerful script execution at the cost of requiring Docker-in-Docker privileges.

Can n8n run Python scripts like Windmill?

n8n has a Python code node, but it's limited to inline scripts within a workflow. Windmill treats scripts as first-class citizens with full dependency management, package installation, and proper IDE features (LSP, auto-complete).

Which is cheaper to run?

n8n by a significant margin. It runs comfortably on a $5-10/month VPS. Windmill's multi-worker architecture needs at least 4 GB RAM for a reasonable setup, putting it in the $15-20/month range.

Related

Top comments (0)