windmill-labs/windmill

Code-first platform for workflows, apps and AI agents, on the fastest self-hostable orchestrator (benchmarked against Airflow, Prefect and Temporal). Business teams build with AI, engineers control what ships. Open-source alternative to Lovable, Retool and n8n.

Windmill 是什么?

Windmill 是一个您自行托管的开源平台,让您通过编写代码来构建工作流、Web 应用和 AI 代理。它被描述为 Retool、n8n 等工具的可自托管替代品,以及简化版的 Temporal。

核心思想:脚本变成一切

您用 Python、TypeScript、Go 或 Bash 等语言编写一个小型、专注的脚本(一个普通函数)。然后 Windmill 会自动将该脚本转换为:

  • 一个可共享的 UI(根据脚本参数生成的 Web 表单)
  • 一个 API 端点
  • 一个 cron 作业(计划任务)
  • 一个 CLI 命令

您可以将脚本链接成流程(工作流),在其上构建全代码 React 或 Svelte 应用,或将它们组合成 AI 代理和数据管道。

工作原理

  1. 编写脚本 — 在基于浏览器的编辑器中,或使用 CLI/VS Code 扩展在本地编写,并与 Git 同步。
  2. Windmill 生成前端 — 脚本的类型化参数自动成为表单、HTTP 端点和 CLI 命令。
  3. 将脚本链接成流程 — 以可视化或代码方式,每一步作为独立作业运行,并带有自己的日志。
  4. 构建 UI — 在脚本和流程之上。

带护栏的 AI

业务团队和工程师在同一实例上工作。AI 会话让非工程师在工作区分支中构建脚本、流程和应用,并提供实时预览和部署前审查的差异。保护规则集可以阻止直接部署,因此更改只有在工程师审查后才能进入生产环境。AI 构建的代码在自己的工作线程组或单独实例上运行。

数据处理

  • 数据表 — 每个工作区获得托管的 Postgres 表,使用类型检查的 SQL 查询,无需暴露连接字符串。
  • DuckDB — 脚本可以用 SQL 查询 S3/Azure 文件(CSV、Parquet、JSON)、数据表、Postgres、MySQL 和 BigQuery。
  • DuckLake — 将大型数据集作为湖仓表存储在工作区对象存储中,用纯 SQL 查询。
  • 管道(alpha)— 通过脚本读写的数据连接脚本,而不是手动绘制 DAG。

技术栈

  • 数据库:PostgreSQL(兼容 Aurora、Cloud SQL、Neon、Azure PostgreSQL)
  • 后端:Rust — 无状态 API 服务器和工作线程从 Postgres 队列拉取作业
  • 前端:Svelte 5
  • 沙箱:nsjail 和 PID 命名空间隔离
  • 运行时:Bun(TypeScript/JavaScript)、带 uv 的 Python,以及 Go、Bash、PowerShell、Rust、C#、Java、Ansible 等

性能

Windmill 声称是最快的可自托管工作流引擎,在基准测试中击败了 Airflow、Prefect 和 Temporal(包括 40 个轻量任务和 10 个长时间运行任务)。作业一旦开始,与直接运行脚本相比没有开销;排队和结果报告的额外延迟约为 50 毫秒。

安全性

  • 沙箱:通过 nsjail 进行文件系统/资源隔离,以及 PID 命名空间隔离,防止作业访问工作线程进程内存。
  • 密钥:每个工作区一个加密密钥,用于存储凭据。

自托管

  • Docker compose — 三个文件,一条命令:docker compose up -d
  • Kubernetes — 提供 Helm 图表
  • 云提供商 — 适用于 AWS、GCP、Azure、Fly.io、Render.com、Hetzner、Digital Ocean 等。经验法则:每个 1vCPU 和 1–2 GB RAM 配 1 个工作线程。
  • OAuth/SSO — 从超级管理员 UI 配置 Google Workspace、Microsoft/Azure、Okta。

许可证

  • 社区版在设定限制内可免费用于内部或通过 API 使用。
  • 将其作为托管服务出售/转售、修改/包装它,或将其作为产品功能重新暴露,需要商业许可证。
  • 未使用 enterprise 标志构建的二进制文件是 AGPLv3;API 客户端和 OpenAPI 规范是 Apache 2.0。

贡献

该项目目前不寻求外部贡献,但欢迎错误报告、功能请求和小型可验证的 PR。

关键事实

  • 支持 20 多种语言的脚本
  • 脚本可通过计划、Webhooks、HTTP 路由、Kafka、WebSockets、电子邮件等触发
  • 现有的 dbt 项目无需修改即可作为脚本运行
  • 默认 Docker 凭据:admin@windmill.dev / changeme
  • 活跃项目:高提交活动、Discord 社区,以及用于共享社区脚本的 Hub

简而言之:编写一个函数,获得一个 UI、一个 API、一个计划和一个工作流 — 全部自托管,内置 AI 辅助和人工审查。

相关

  • 项目
  • 项目
  • 项目
  • 项目