Install Kestra on Windows – Standalone JAR Setup

Run Kestra on Windows using the standalone executable JAR — no Docker required.

One use case for this setup is running a Windows remote worker as part of a worker group, allowing Windows-native scripts such as PowerShell or batch commands to be executed within a broader Kestra deployment.

For a production-grade setup on Windows, consider running Kestra through Docker Compose with WSL 2 instead.

Prerequisites

  1. Install Java JRE 21 — download the x64 MSI installer and run it.
  2. Download the latest Kestra binary from the Releases page — find it under Assets for the desired version (e.g., kestra-1.3.6).
  3. Rename the downloaded file to kestra.bat.
  4. Open CMD in the directory containing kestra.bat.

Plugin installation

The standalone JAR ships without plugins. You must install them before starting the server, otherwise tasks that rely on plugins will fail.

Install specific plugins

Install only the plugins you need by listing them explicitly:

Terminal window
.\kestra.bat plugins install io.kestra.plugin:plugin-script-powershell:LATEST io.kestra.plugin:plugin-script-python:LATEST

Find plugin identifiers in the full plugins list.

Install all plugins

To install every available plugin at once, use the --all flag:

Terminal window
.\kestra.bat plugins install --all

Use a plugins directory

Point Kestra to a directory of pre-downloaded plugin JARs using the KESTRA_PLUGINS_PATH environment variable:

Terminal window
set KESTRA_PLUGINS_PATH=C:\kestra\plugins

Start the server

Use server local for a quick local setup backed by an H2 embedded database. To connect to an external database (PostgreSQL or MySQL), use server standalone and provide a full configuration file.

Terminal window
.\kestra.bat server local --config path\to\your\config.yaml

The .\ prefix is required when running a file from the current directory in CMD. Once started, Kestra is accessible at localhost

. Log in with your email and password.

Configuration

Kestra is configured via a YAML file passed with --config (or -c). If no flag is provided, Kestra looks for %USERPROFILE%\.kestra\config.yaml by default.

A minimal configuration for local testing:

kestra:
repository:
type: memory
storage:
type: local
local:
base-path: "C:\\kestra\\storage"
queue:
type: memory

For a production setup or Enterprise installation, your configuration requires at minimum:

kestra:
encryption:
secret-key: "<base64-encoded-32-char-key>" # generate with: openssl rand -base64 32
secret:
type: jdbc
jdbc:
secret: "<your-jdbc-secret-key>"
repository:
type: postgres
queue:
type: postgres
storage:
type: s3
s3:
endpoint: "<your-s3-endpoint>"
access-key: "<your-aws-access-key-id>"
secret-key: "<your-aws-secret-access-key>"
region: "<your-aws-region>"
bucket: "<your-s3-bucket-name>"
ee:
license:
id: "<your-license-id>"
fingerprint: "<your-license-fingerprint>"
key: |
<your-license-key>
datasources:
postgres:
url: jdbc:postgresql://<host>:<port>/<db>
driver-class-name: org.postgresql.Driver
username: "<username>"
password: "<password>"

The JDBC secret backend stores secrets in the same PostgreSQL database as Kestra. For cloud-based alternatives such as AWS Secrets Manager, Azure Key Vault, or Google Secret Manager, see the external secrets manager documentation. For all secret and encryption configuration options, see the Security and secrets guide.

For the full list of configuration options, see the Configuration guide.

Alternative: Docker Compose with WSL 2

For a production-ready setup on Windows, Docker Compose running inside WSL 2 is the recommended approach. It pairs Kestra with a PostgreSQL container and avoids the limitations of the H2 embedded database.

Prerequisites:

  • Docker Desktop with the WSL 2 backend enabled. In Docker Desktop, go to Settings → Resources → WSL Integration and confirm you are using WSL 2 rather than the Windows backend. Docker runs significantly better for Kestra under WSL 2.
  • A WSL 2 distribution installed and running (e.g. Ubuntu via the Microsoft Store).

Once those are in place, follow the Docker Compose installation guide. It includes a curl command to download the example compose file and a pre-configured PostgreSQL container.

Was this page helpful?