Windows workers
Windows Native Workers are a Self-Hosted Enterprise Feature.
You can use the Windows worker natively if you do not want to run Docker or WSL on Windows (e.g., for policy or security reasons). This feature supports the Python, Bun, PowerShell, C# and Nu executors.
You can connect Windows workers to your existing Dockerized or cloud self-hosted PostgreSQL database and Windmill server.
Setting up Windmill worker executable
-
Set up a working directory:
- Create a directory from where you want to run the Windmill worker, e.g.,
C:\Users\Alex\windmill
.
- Create a directory from where you want to run the Windmill worker, e.g.,
-
Download Windmill executable:
- Download the
windmill-ee.exe
file into the newly created directory from the releases page.
- Download the
-
Set basic environment variables:
- Set the following environment variables (replace the placeholders with your specific values):
More environment variables and worker settings can be found here.
# Replace these variables with your specific configuration
$env:MODE="worker"
$env:DATABASE_URL="postgres://postgres:changeme@172.12.0.1:5432/windmill?sslmode=disable"
$env:SKIP_MIGRATION="true"
- Set the following environment variables (replace the placeholders with your specific values):
-
Run windmill-ee.exe:
PS C:\Users\Alex\windmill> .\windmill-ee.exe
We recommend running Windmill as a service on your Windows environment using
sc
orNSSM
to monitor the Windmill worker, start it at system boot, and manage the restart policy.
After the basic setup, follow these steps for each language your worker should support.
Python executor
- Install uv:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
You can also check other installation methods in uv`s official documentation.
Bun executor
-
Install Bun: Follow the official documentation for Windows.
-
Locate Bun installation:
- Find where Bun is installed by running:
Example output:
where.exe bun
C:\Users\Alex\.bun\bin\bun.exe
- Find where Bun is installed by running:
-
Set environment variables:
- Add the following environment variables (replace the placeholders with your specific values):
# Replace these variables with your specific configuration
$env:BUN_PATH="C:\Users\Alex\.bun\bin\bun.exe"
- Add the following environment variables (replace the placeholders with your specific values):
PowerShell executor
-
Install PowerShell 7+ (stable): Ensure you have the latest stable release of PowerShell by following the official documentation.
- Start PowerShell 7 and verify you're running PowerShell 7 by checking
$PSVersionTable
:$PSVersionTable
PSVersion 7.4.5
- Start PowerShell 7 and verify you're running PowerShell 7 by checking
-
Locate PowerShell 7 installation:
- Find where PowerShell 7 is installed by running:
Example output:
where.exe pwsh.exe # Note: previous versions used powershell.exe
C:\Program Files\PowerShell\7\pwsh.exe
- Find where PowerShell 7 is installed by running:
-
Set environment variables:
- Add the following environment variables (replace the placeholders with your specific values):
# Replace these variables with your specific configuration
$env:POWERSHELL_PATH="C:\Program Files\PowerShell\7\pwsh.exe"
- Add the following environment variables (replace the placeholders with your specific values):
C# executor
-
Install .NET 9.0 SDK: Follow Microsoft instructions and make sure you have .NET 9.0 installed.
- You can check it by listing the installed SDKs:
dotnet --list-sdks
- You can check it by listing the installed SDKs:
-
Locate your .NET installation:
- Find where .NET is installed by running:
where.exe dotnet
- Find where .NET is installed by running:
-
Set environment variables:
- Add the following environment variables (replace with your values if needed):
# Replace these variables with your specific configuration
$env:DOTNET_ROOT="C:\Program Files\dotnet"
$env:DOTNET_PATH="C:\Program Files\dotnet\dotnet.exe"
- Add the following environment variables (replace with your values if needed):
Nu executor
-
Nu: Ensure you have installed Nu by following the official documentation.
- Start PowerShell and verify you can enter Nushell:
nu
- Start PowerShell and verify you can enter Nushell:
-
Locate Nu installation:
- Find where Nu is installed by running:
where.exe nu.exe
- Find where Nu is installed by running:
-
Set environment variables:
- Add the following environment variables (replace the placeholders with your specific values):
# Replace these variables with your specific configuration
$env:NU_PATH="C:\..\..\nu.exe"
- Add the following environment variables (replace the placeholders with your specific values):