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.
Monitor Past and Future 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.
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.
Windmill for Developers
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.
Run Docker Containers
Windmill supports running any docker container through its bash integration.
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 Kinds
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.
Worker Group Tag
Scripts can be assigned custom worker groups for efficient execution on different machines with varying specifications.
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.
Write Scripts on 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 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.
Deploy to Staging/Prod Web 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.
Worker Groups Management UI
Manage Worker Groups through Windmill UI.
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.
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.