Core concepts
On top of its editors to build endpoints, flows and apps, Windmill comes with a set of features.
Triggers
Schedules
Scheduling allows you to define schedules for Scripts and Flows, automatically running them at set frequencies.
Webhooks
Trigger scripts and flows from webhooks.
Emails
Scripts and flows can be triggered by email messages sent to a specific email address.
Custom HTTP routes
Trigger scripts and flows from custom HTTP routes.
Websocket
Trigger scripts and flows from websocket servers.
Kafka
Trigger scripts and flows from Kafka topics.
Windmill features
Architecture
Schema of Windmill architecture
Auto-generated UIs
Windmill creates auto-generated user interfaces for scripts and flows based on their parameters.
JSON schema and parsing
JSON Schemas are used for defining the input specification for scripts and flows, and specifying resource types.
Instant preview & testing
Windmill allows users to see and test what they are building directly from the editor, even before deployment.
Rich display rendering
The result renderer in Windmill supports rich display rendering, allowing you to customize the display format of your results.
Dependency management & imports
Windmill's strength lies in its ability to run scripts without having to manage a package.json directly.
Workflows as code
Automate tasks and their flow with only code.
Draft and deploy
Develop and cooperate in a structured way.
Persistent storage & databases
Ensure that your data is safely stored and easily accessible whenever required.
Object storage in Windmill
Windmill comes with native integrations with S3 and Azure Blob, making it the recommended storage for large objects like files and binary data.
Data pipelines
Windmill enables building fast, powerful, reliable, and easy-to-build data pipelines.
Roles and permissions
Control access and manage permissions within your instance and workspaces.
Authentification
Windmill provides flexible authentication options to ensure secure access to the platform.
Error handling
There are 5 ways to do error handling in Windmill.
Jobs
A job represents a past, present or future `task` or `work` to be executed by a worker.
Jobs runs
Get an aggregated view of past and future runs on your workspace.
Variables and secrets
Variables and secrets are encrypted, dynamic values used for reusing information and securely passing sensitive data within scripts.
Resources and resource types
Resources are structured configurations and connections to third-party systems, with Resource types defining the schema for each Resource.
Groups and folders
Groups and folders enable efficient permission management by grouping users with similar access levels.
Workers and worker groups
Worker Groups allow users to run scripts and flows on different machines with varying specifications.
Workspace secret encryption
When updating the encryption key of a workspace, all secrets will be re-encrypted with the new key and the previous key will be replaced by the new one.
Caching
Caching is used to cache the results of a script, flow, flow step or app inline scripts for a specified number of seconds.
Handling files and binary data
In Windmill, JSON is the primary data format used for representing information. When working with binary data, such as files, they are represented as Base64 encoded strings.
Service logs
View logs from any worker or servers directly within the service logs section of the search modal.
Preprocessors
Preprocessors are used to transform incoming requests before they are passed to the runnable.
Search bar
Navigate through workspace pages & content.
Collaboration in Windmill
Collaboration in Windmill is simplified through various features and workflows.
Windmill AI
Have AI complete code on Windmill.
Hosting & advanced
Self-host
Run Windmill on your own infrastructure.
Windmill on AWS ECS
Windmill can be deployed on an ECS cluster.
Command-line interface
Interact with Windmill instances right from your terminal.
Local development
Develop from various environments such as your terminal, VS Code, and JetBrains IDEs.
Version control in Windmill
Sync your workspace to a git repository.
Deploy to prod
Deploy to prod using a staging workspace
Preinstall binaries
Workers in Windmill can preinstall binaries. This allows them to execute these binaries in subprocesses or directly within bash.
React app import
Import your own Apps in React.
Browser automation
Run browser automation scripts.
Run Docker containers
Windmill supports running any docker container through its bash integration.
Setup OAuth and SSO
Windmill supports Single Sign-On for Microsoft, Google, GitHub, GitLab, Okta, and domain restriction.
Sharing common logic
It is common to want to share common logic between your scripts. This can be done easily using relative imports in both Python and TypeScript.
TypeScript client
The TypeScript client for Windmill allows you to interact with the Windmill platform using TypeScript in Bun / Deno runtime.
Python client
The Python client library for Windmill provides a convenient way to interact with the Windmill platform's API from within your script jobs.
Set/Get progress from code
You can now set progress of script execution from within the script (Python and TypeScript)
Share on Windmill Hub
Share your scripts, flows, apps and resource types on Windmill Hub.
Code editor-specific features
Parameter inference
Windmill ensures that the parameters passed to scripts, flows, and resources match the expected format and type.
Add resources and variables to code
You can directly access Variables and Resources from the Code editor.
Code assistants
Windmill integrates code assistants into its code editor to provide language-specific suggestions, linting, formatting, and more.
Script-specific features
All details on Scripts can be found in the Script section.
Script kind
You can attach additional functionalities to Scripts by specializing them into specific Script kinds.
Generated UI
main function's arguments can be given advanced settings that will affect the inputs' auto-generated UI and JSON Schema.
Versioning
Scripts, when deployed, can have a parent script identified by its hash.
Concurrency limit
The Concurrency limit feature allows you to define concurrency limits for scripts and inline scripts within flows.
Running services with perpetual scripts
Perpetual scripts restart upon ending unless canceled.
Multiplayer
The Multiplayer feature allows you to collaborate with team members on scripts simultaneously.
Run scripts in VS Code
The Windmill VS Code extension allows you to run your scripts and preview the output within VS Code.
Flow-specific features
All details on Flows can be found in the Flows section.
Triggering flows
Trigger scripts and flows on-demand, by schedule or on external events.
Testing flows
Iterate quickly and get control on your flow testing.
AI-generated flows
Generate flows from prompts.
Branches
Split the execution of the flow based on a condition.
For loops
Iterate a series of tasks.
While loops
While loops execute a sequence of code indefinitely until the user cancels or a step set to Early stop stops.
Error handler
Configure a script to handle errors.
Trigger scripts
Trigger scripts are designed to pull data from an external source and return all of the new items since the last run, without resorting to external webhooks.
Retries
Re-try a step in case of error.
Concurrency limits
The Concurrency limit feature allows you to define concurrency limits for scripts and inline scripts within flows.
Custom timeout for step
If the execution takes longer than the time limit, the execution of the step will be interrupted.
Priority for steps
Prioritize a flow step in the execution queue.
Lifetime / Delete after use
The logs, arguments and results of this flow step will be completely deleted from Windmill once the flow is complete.
Cache for steps
Re-use a step's previous results.
Early stop / Break
Stop early a flow based on a step's result.
Early return
Define a node at which the flow will return at for sync endpoints. The rest of the flow will continue asynchronously.
Suspend & Approval / Prompts
Suspend a flow until specific event(s) are received, such as approvals or cancellations.
Sleep / Delays in flows
Executions within a flow can be suspended for a given time.
Step mocking
When a step is mocked, it will immediately return the mocked value without performing any computation.
App-specific features
All details on Apps can be found in the Apps section.
List of components
Use prebuilt interface elements to display data, and manipulate or interact with it based on user actions.
Link your app to scripts and flows
Run any script or flow for your UI.
Styling
Customize the styling of your App according to your own graphical standards.
Public apps
Apps can be accessed as a standalone app by anyone who has the secret URL
Schedule app reports
Send a PDF or PNG preview of any app at a given schedule.
Group of components
Components can be grouped within containers.
Import custom React components
Define components in React or Vanilla JS that interact with the rest of your app.
Workspace default app
If configured, users who are operators in this workspace will be redirected to this app automatically when logging into this workspace.
Enterprise & cloud features
All details & features on Pricing page.
Support & SLA
Our SLAs are designed to provide timely assistance and address any issues.
Audit logs
Windmill provides audit logs for every operation and action that has side-effects.
Worker groups management UI
Manage Worker Groups through Windmill UI.
Autoscaling
Autoscaling automatically adjusts the number of workers based on your workload demands.
Deploy to prod using the UI
Deploy items to another staging/prod workspace.
Git sync
Connect a Windmill workspace to a Git repository to automatically commit and push scripts, flows and apps to the repository on each deploy.
Concurrency limits
The Concurrency limits feature allows you to define concurrency limits for scripts, flows and inline scripts within flows.
Instance object storage distributed cache for Python, Rust, Go
Leverage a global S3 cache to speed up Python dependency handling by storing and reusing pre-installed package.
OpenID Connect (OIDC)
Use Windmill's OIDC provider to authenticate from scripts to cloud providers and other APIs.
SAML & SCIM
Configure Okta or Microsoft for both SAML and SCIM.
External auth with JWT
Generate your own JWT tokens with the desired permissions for your already authenticated users and pass them to Windmill.
Dedicated workers / High throughput
Dedicated Workers are workers that are dedicated to a particular script.
Agent workers
Agent workers are a 4th mode of execution of the Windmill binary, but instead of using MODE=worker, we use here MODE=agent.
Critical alerts
Get a notification everytime a job is re-run after a crash.
Content search
Search any scripts, flows, resources, apps for a specific string similar to GitHub search.
Codebases & bundles
Deploy scripts with any local relative imports as bundles.
CSS editor
The Global CSS editor is designed to give styling and theming across your entire app.
Multiplayer
Collaborate on scripts simultaneously.
Private Hub
Host your own Hub of scripts, flows, apps and resource types for your team.
White labeling Windmill
Windmill offers white labeling capabilities, allowing you to embed and customize the Windmill platform to align with your brand.
Windmill React SDK
The Windmill React SDK provides a suite of tools and components to integrate Windmill applications into React-based projects.
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**, and **PowerShell** executors.
Private Hub
Host your own Hub of scripts, flows, apps and resource types for your team.
White labeling Windmill
Windmill offers white labeling capabilities, allowing you to embed and customize the Windmill platform to align with your brand.
Full text search
Full text search on jobs and service logs, allowing quick access and good observability out of the box. Learn how to set it up.