Windmill 完全开源(AGPLv3 许可),Windmill Labs 提供专用实例以及商业支持和许可。
您的脚本参数会被自动解析并生成前端界面。
创建流程!您可以将自己的脚本或社区在WindmillHub上共享的脚本链接起来。
在脚本和流程之上构建复杂UI。
基于 Windmill 构建您的整个基础设施!
//从npm导入任何依赖
import * as wmill from "windmill-client";
import * as cowsay from "cowsay@1.5.0";
// 填充类型,或使用+Resource类型获取资源的类型安全引用
type Postgresql = {
host: string;
port: number;
user: string;
dbname: string;
sslmode: string;
password: string;
};
export async function main(
a: number,
b: "my" | "enum",
c: Postgresql,
d = "从默认参数推断的字符串类型",
e = { nested: "object" }
//f: wmill.Base64
) {
const email = process.env["WM_EMAIL"];
// 变量按路径进行权限控制
let variable = await wmill.getVariable("f/company-folder/my_secret");
const lastTimeRun = await wmill.getState();
// 日志会被打印并始终可查看
console.log(cowsay.say({ text: "hello " + email + " " + lastTimeRun }));
await wmill.setState(Date.now());
// 返回值会序列化为JSON
return { foo: d, variable };
}
Windmill 支持多种本地开发方式,并可与您的实例同步:
| 工具 | 描述 |
|---|---|
| 命令行工具(CLI) | 从本地文件或GitHub同步脚本,通过命令行运行脚本/流程 |
| VS Code 扩展 | 直接在VS Code/Cursor中编辑和测试脚本与流程,提供完整IDE支持 |
| Git 同步 | Windmill 与Git仓库之间的双向同步 |
| Claude Code | 借助Claude进行AI辅助开发,支持脚本、流程和应用 |
您可以通过为wmill客户端库传递正确的环境变量,从实例获取资源和变量,从而在本地运行脚本。详见本地开发文档。
我们将 Windmill 与其他可自托管工作流引擎(Airflow、Prefect 和 Temporal)进行了比较,在两个基准测试中 Windmill 都是性能最佳的解决方案:一个包含40个轻量级任务的流程,以及一个包含10个长时间运行任务的流程。
所有方法和结果详见我们的基准测试页面。
详见安全文档。
任务启动后,与在节点上使用相应运行器(Deno/Go/Python/Bash)运行相同脚本相比,没有额外开销。任务从队列拉取、启动到结果返回数据库的新增延迟约为50ms。典型的轻量级deno任务总耗时约为100ms。
有关详细的设置选项,请参见自托管文档。
使用3个文件部署Windmill(docker-compose.yml、Caddyfile、.env):
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env
docker compose up -d
访问 http://localhost - 默认凭据:admin@windmill.dev / changeme
使用外部数据库:在.env中设置DATABASE_URL指向您的托管Postgres(AWS RDS、GCP Cloud SQL、Azure、Neon等),并将数据库副本数设为0。
helm repo add windmill https://windmill-labs.github.io/windmill-helm-charts/
helm install windmill-chart windmill/windmill --namespace=windmill --create-namespace
Windmill 可在 AWS (EKS/ECS)、GCP、Azure、Ubicloud、Fly.io、Render.com、Hetzner、Digital Ocean 等平台上运行。经验法则:每 1 个 vCPU 和 1-2 GB 内存配置 1 个工作节点。
可直接从超级管理员界面配置 OAuth 和 SSO(Google Workspace、Microsoft/Azure、Okta)。参见文档。
社区版可免费在内部使用。如需商业再分发或托管服务,请联系 。详情参见LICENSE和定价。
托管在 ghcr.io/windmill-labs/windmill 下的 Docker 镜像以及 GitHub 二进制发行版中提供的 Windmill“社区版”包含 AGPLv3 和 Apache 2 许可下的源代码文件,但也包含专有和非公开代码及功能——这些代码和功能并非开源,其条款如下:Windmill Labs, Inc. 授予免费使用“社区版”所有功能的权利(除软件中设置的限制和配额外无其他限制),以及按原样分发社区版的权利;但未经明确协议,不得销售、转售、将 Windmill 作为托管服务提供、修改或以任何形式包装。
从本仓库源代码编译且未启用“enterprise”功能标志的二进制文件,根据https://github.com/windmill-labs/windmill/blob/main/LICENSE-AGPL%E8%AE%B8%E5%8F%AF%E6%9D%A1%E6%AC%BE%E5%92%8C%E6%9D%A1%E4%BB%B6%E5%BC%80%E6%BA%90%E3%80%82
若要将 Windmill 的任何部分作为您产品的功能直接重新向用户公开(嵌入的公开 Windmill“应用”除外),或在“Windmill 社区版”基础上构建您商业销售或嵌入到可分发产品/二进制文件中的功能,您必须获得商业许可。如有任何问题,请联系我们。若要通过从本仓库源代码编译且未启用“enterprise”功能标志的二进制文件执行相同操作,您必须遵守 AGPLv3 许可条款和条件,或从 Windmill Labs, Inc. 获得商业许可。
若要在您的组织内部按原样使用 Windmill“社区版”,或按原样使用其 API,则无需商业许可。
在 Windmill 中,集成被称为资源和资源类型。每个资源都有一个资源类型,该类型定义了资源需要实现的模式。
在自托管实例上,您可能需要从WindmillHub导入所有已批准的资源类型。设置脚本会提示您将其配置为每天自动同步。
| 环境变量名称 | 默认值 | 描述 | 作用范围(API服务器/工作器/全部) |
|---|---|---|---|
| DATABASE_URL | Postgres 数据库 URL。 | 全部 | |
| WORKER_GROUP | default | 工作器所属的工作组,工作器将从中拉取配置 | 工作器 |
| MODE | standalone | 二进制文件的运行模式。可能的值:standalone(独立模式)、worker(工作器模式)、server(服务器模式)、agent(代理模式) | 全部 |
| METRICS_ADDR | None | (仅企业版)用于在 /metrics 路径暴露 Prometheus 指标的套接字地址。设置为 "true" 可在 8001 端口暴露指标 | 全部 |
| JSON_FMT | false | 以 JSON 格式输出日志,而非 logfmt 格式 | 全部 |
| BASE_URL | http://localhost:8000 | 公开访问实例的基础 URL。如果存在实例设置,将覆盖此值 | 服务器 |
| ZOMBIE_JOB_TIMEOUT | 30 | 如果工作器未发送作业处理 ping(服务器每 30 秒检查一次僵尸作业),超过此超时时间后作业将被视为僵尸作业 | 服务器 |
| RESTART_ZOMBIE_JOBS | true | 如果为 true,僵尸作业将被重启(使用相同 UUID 原地重启并保留部分日志);如果为 false,僵尸作业将标记为失败 | 服务器 |
| NATIVE_MODE | false | 启用原生模式:设置 NUM_WORKERS=8,拒绝非原生作业(nativets、postgresql、mysql 等) | 工作器 |
| SLEEP_QUEUE | 50 | 数据库中最后一次检查新作业后休眠的毫秒数。该值乘以 NUM_WORKERS,因此对于一个工作器实例,平均每 SLEEP_QUEUE 毫秒拉取一次作业 | 工作器 |
| KEEP_JOB_DIR | false | 作业完成后保留作业目录。对调试有用。 | 工作器 |
| LICENSE_KEY (EE only) | None | Windmill 企业版启动时检查的许可证密钥 | 工作器 |
| SLACK_SIGNING_SECRET | None | Slack 应用的签名密钥。参见 Slack 文档 | 服务器 |
| COOKIE_DOMAIN | None | Cookie 的域名。如果未设置,浏览器将根据完整源自动设置 Cookie | 服务器 |
| DENO_PATH | /usr/bin/deno | deno 二进制文件的路径。 | 工作器 |
| PYTHON_PATH | 若不想由 uv 管理 python 二进制文件,可指定其路径。 | 工作器 | |
| GO_PATH | /usr/bin/go | go 二进制文件的路径。 | 工作器 |
| GOPRIVATE | 用于私有 Go 模块的 GOPRIVATE 环境变量 | 工作器 | |
| GOPROXY | 要使用的 GOPROXY 环境变量 | 工作器 | |
| NETRC | 用于私有 Go 仓库的 netrc 内容 | 工作器 | |
| PY_CONCURRENT_DOWNLOADS | 20 | 设置 Windmill 在任何时候执行的最大并发 Python 下载数。 | 工作器 |
| PATH | None | 路径环境变量,通常继承自系统 | 工作器 |
| HOME | None | 用于 Go 和 Bash 的主目录,通常继承自系统 | 工作器 |
| DATABASE_CONNECTIONS | 50(服务器)/3(工作器) | 数据库连接池中的最大连接数 | 全部 |
| SUPERADMIN_SECRET | None | 允许调用者以虚拟超级管理员 *** 身份操作的令牌 | 服务器 |
| TIMEOUT_WAIT_RESULT | 20 | 'run_wait_result' 端点超时前的等待秒数 | 工作器 |
| QUEUE_LIMIT_WAIT_RESULT | None | 'run_wait_result' 端点在立即拒绝请求前的最大队列作业数。优先于查询参数。如果未指定,则无限制。 | 工作器 |
| DENO_AUTH_TOKENS | None | 传递给工作器的自定义 DENO_AUTH_TOKENS,以允许使用私有模块 | 工作器 |
| DISABLE_RESPONSE_LOGS | false | 禁用响应日志 | 服务器 |
| CREATE_WORKSPACE_REQUIRE_SUPERADMIN | true | 如果为 true,仅超级管理员可创建新工作区 | 服务器 |
| MIN_FREE_DISK_SPACE_MB | *** | 工作器的最小可用磁盘空间(MB)。如果工作器可用空间不足,将发送严重警报。 | 工作器 |
| RUN_UPDATE_CA_CERTIFICATE_AT_START | false | 如果为 true,在启动时先运行 CA 证书更新命令,再进行其他初始化 | 全部 |
| RUN_UPDATE_CA_CERTIFICATE_PATH | /usr/sbin/update-ca-certificates | 当 RUN_UPDATE_CA_CERTIFICATE_AT_START 为 true 时,要运行的 CA 证书更新命令/脚本的路径 | 全部 |
我们建议使用 Nix。有关所有选项,请参见 ./frontend/README_DEV.md。
使用后端配合本地前端(热重载):
cd frontend
npm install
npm run generate-backend-client # 或在 Mac 上使用 generate-backend-client-mac
npm run dev
Windmill 可通过 http://localhost/ 访问
有关所有运行选项,请参见 ./frontend/README_DEV.md 文件。
start-dev-db.sh 脚本启动本地 Postgres 数据库,该脚本将在 postgres://postgres:changeme@localhost:5432/windmill 提供数据库。然后使用以下命令运行迁移:cargo install sqlx-cli
env DATABASE_URL= sqlx migrate run
这也将避免 sqlx 的 query! 宏出现编译时问题。
2. (可选,仅 Linux)安装 https://github.com/google/nsjail 并确保其在 PATH 中可访问
3. 安装 bun、deno 和 python3(以及任何你想使用的语言),确保二进制文件位于 /usr/bin/bun、/usr/bin/deno 和 /usr/local/bin/python3,或设置相应的环境变量。
4. (可选)安装 lld 链接器
5. 进入 frontend/ 目录:
npm install、npm run generate-backend-client,然后 REMOTE=http://localhost:8000 npm run devexport NODE_OPTIONS="--max-old-space-size=4096"mkdir frontend/build 创建空的 frontend/build 文件夹backend/ 目录:
env DATABASE_URL= RUST_LOG=info cargo runcargo run --features python 以启用 python 执行器。http://localhost:3000 访问© 2023-2026 Windmill Labs, Inc.
请登录使用轩辕镜像享受快速拉取体验,支持国内访问优化,速度提升
docker pull ghcr.io/windmill-labs/windmill-ee-cuda:1.668.2探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务