Skip to main content

Core concepts

On top of its editors to build endpoints, flows and apps, Windmill comes with a set of features.

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 runs
Get an aggregated view of past and future runs on your workspace.
Schedules
Scheduling allows you to define schedules for Scripts and Flows, automatically running them at set frequencies.
Webhooks
Trigger scripts and flows from webhooks.
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.
Email triggers
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.
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.
Jobs
A job represents a past, present or future `task` or `work` to be executed by a worker.
Service logs
View logs from any worker or servers directly within the service logs section of the search modal.
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

Script-specific features

All details on Scripts can be found in the Script section.

Flow-specific features

All details on Flows can be found in the Flows section.

Triggering flows
Trigger 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.

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.
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 alert channels
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.