TiloBox
Back to directory
Windmill project preview

Windmill

Turn scripts into workflows, UIs, and scheduled jobs. Open-source alternative to Retool and Temporal.

LicenseAGPL-3.0
GitHub stars17.7k
Last commit1 weeks ago
Tags7 topics
Internal ToolsRustWorkflowsPythonDeveloper PlatformLow CodeTypescript
Overview

Why consider Windmill?

Windmill is an open-source developer platform that converts Python, TypeScript, Go, and SQL scripts into auto-generated web UIs, complex workflows, and scheduled jobs.

Guided learning

Learn Windmill by building

Practical setup notes, real use cases, and copy-ready examples in one focused guide.

3 min read 10 sections
In this guide10 sections

What is Windmill?

Windmill is an open-source, high-performance developer platform built with Rust, Svelte, and PostgreSQL that turns scripts (written in Python, TypeScript/Deno/Bun, Go, Bash, Rust, and SQL) into internal web UIs, background workers, scheduled cron jobs, and distributed multi-step workflows.

It acts as an open-source alternative to proprietary internal tool builders like Retool and workflow orchestrators like Temporal, Retool Workflows, and Airplane. Windmill infers JSON schemas directly from script arguments, automatically generating interactive web forms and providing a drag-and-drop app builder with granular permission management.

Who Is It For?

  • Backend & DevOps Engineers: Converting operational maintenance scripts into secure, self-service web apps with audit logging for non-technical team members.
  • Data Engineering Teams: Orchestrating complex ETL pipelines and database transformations across Python, SQL, and external APIs.
  • Platform Teams: Building customized internal administrative portals without writing boilerplate frontend code or API plumbing.

Key Features

  • Multi-language script execution: Native runtime support for Python, TypeScript (Bun/Deno), Go, Bash, SQL, and Rust.
  • Automatic UI generation: Function signatures and type hints automatically generate input forms and validation logic.
  • Visual low-code UI builder: Drag-and-drop buttons, data tables, modals, and charts bound directly to runnable backend scripts.
  • Distributed workflow orchestration: Branching logic, parallel loops, approval gates, error retry policies, and suspend-resume hooks.
  • Enterprise secret management: Secure credential vaulting with role-based access control and workspace isolation.

Deploying Windmill with Docker Compose

yaml
1version: '3.7'
2
3services:
4 db:
5 image: postgres:15-alpine
6 container_name: windmill_db
7 restart: unless-stopped
8 volumes:
9 - ./db_data:/var/lib/postgresql/data
10 environment:
11 - POSTGRES_PASSWORD=secure_windmill_db_pass
12 - POSTGRES_USER=windmill
13 - POSTGRES_DB=windmill
14
15 windmill_server:
16 image: ghcr.io/windmill-labs/windmill:latest
17 container_name: windmill_server
18 restart: unless-stopped
19 ports:
20 - "8000:8000"
21 environment:
22 - DATABASE_URL=postgres://windmill:secure_windmill_db_pass@db:5432/windmill
23 - MODE=server
24 depends_on:
25 - db
26
27 windmill_worker:
28 image: ghcr.io/windmill-labs/windmill:latest
29 container_name: windmill_worker
30 restart: unless-stopped
31 environment:
32 - DATABASE_URL=postgres://windmill:secure_windmill_db_pass@db:5432/windmill
33 - MODE=worker
34 - WORKER_GROUP=default
35 depends_on:
36 - db

Start the stack:

bash
1docker compose up -d

Open http://localhost:8000 in your browser, log in with default credentials admin@windmill.dev / changeme, and immediately set a secure password.

Practical Use Cases

1. Self-Service Customer Refund Portal

A backend engineer writes a 20-line Python script connecting to Stripe API; Windmill auto-generates a web form that customer support agents use to issue refunds with mandatory supervisor approval steps.

2. Multi-Step Data Ingestion Flow

A data team builds an automated pipeline that queries PostgreSQL, runs AI text embedding with a Python script, and uploads structured vectors into Qdrant every night at 2:00 AM.

3. Incident Remediation Playbooks

A DevOps team builds emergency playbooks (e.g. "Restart Kubernetes Ingress", "Flush Redis Cache") with approval steps and one-click execution from mobile browsers.

Troubleshooting and Limitations

  • Worker Group Scaling: Heavy data processing jobs should be assigned to dedicated worker groups (WORKER_GROUP=native) to prevent blocking interactive UI script executions.
  • Python / Node Package Caching: Windmill caches PyPI and NPM dependencies automatically; configure persistent worker volume mounts to avoid re-downloading packages across container restarts.

Official Resources

Related tools

More options with a similar category or technology profile.

Windmill FAQs

Windmill is listed as a Developer Tools tool on TiloBox. Review the overview, features, and official documentation on this page to decide whether it solves your specific workflow.

Start with the project's GitHub repository and official website for supported installation and deployment instructions. Test the setup with representative data or a small project before rolling it out more widely.

Windmill is listed under the AGPL-3.0 license. Read the complete license text and the project's notices before using, modifying, or distributing the software.

Production readiness depends on your requirements. Review maintenance activity, security practices, documentation, backup and upgrade procedures, and compatibility with your stack; then validate it in a non-production environment.

Windmill is listed as an alternative to Zapier. Compare the core workflow, deployment model, integrations, and licensing against your must-have requirements before switching.