Note of Intent
All code is not made equal and can be split in 2 categories:
- Code that matters: high-value code containing your business logic, data transformation, internal API calls, and all the logic of your internal long-running services and workflows. This is the crux of the value-added of your engineering. Usually that code is prototyped and started under the form of scripts and SQL files, until it is turned at great expense into micro-services and hard to maintain custom internal tools.
- Boilerplate: all the rest is boilerplate. Be it UI and frontends that allow you to call the code above, API calls to external services, error handling, retries, logic to make your code scalable, dependency management, CI/CD, managing secrets, schedule, permissions, authentication, etc. That code is boilerplate because it feels like you shouldn't have to reinvent the wheel, over and over again.
Many services labels themselves as no-code or low-code, as they address indeed the challenge of getting rid of the boilerplate and provide a comprehensive platform accessible to all members of a diverse organization not made solely of engineers. However, we believe they lack the full power and flexibility of code as they either hide it completely, or only allow it under restricted forms.
Windmill is different:
- Windmill is an open-source developer platform and infra to turn scripts (TypeScript, Python, Go, PHP, Bash, SQL) into endpoints, workflows and UIs. In that respect, Windmill is an alternative to Retool, Prefect and n8n.
- It empowers semi-technical users to access and edit that code without being overwhelmed by the usual barriers to entry (git, IDE, local environments, secrets managements, etc).
- It is compatible with senior/staff software engineers with high standards for production-grade yet flexible and customizable with code
Windmill embeds:
- a super fast runtime to run code in TypeScript, Python, Go, Bash and even SQL from a self-managed job queue, at scale, with any dependency, no overhead, and minimal cold start
- a parser that will infer the dependencies and arguments from the code
itself and generate lockfiles and input specs
- the lockfile allows the script being deployed to maintain exactly the same set of versioned dependencies forever
- the input spec (which is actually a JSON schema) is used to generate a minimal UI automatically for both using the script as a standalone compute or as a step of a Flow
- a powerful web IDE to write Scripts with autocompletion and syntax checking
- a low-code builder and workflow engine to build and run complex
Flows by composing your
custom scripts and generic scripts shared on
Windmill Hub. Flows can, among others, do:
- retries with fixed and exponential backoff
- error handling
- For Loops over list triggering one flow per item
- branching to one subflow given a predicate or all sub-flows
- be suspended with its state preserved without consuming any resources to sleep for a pre-determined amount of time or waiting to be reactivated by an external webhook who may contain payloads
- approval steps leveraging being suspended and reactivated at some secret urls known only by the approvers
- a low-code UI builder to build complex internal apps, admin panels and dashboards using inline scripts in TypeScript, Python, Go, PHP, Bash and SQL or trigger the Scripts and Flows of the workspace
- an enterprise-grade platform with tight permissioning, secret management, groups and folders enabling RBAC permissions, OAuth handling for fetching and refreshing credentials
- webhooks for every scripts and flows to be triggered externally and an open api to be easily embedded into your current infrastructure
- a scheduler to trigger Scripts and Flows. Combined with state storage, it can be used to watch for external events - for example triggering a Flow only if the external state is different from the one stored previously
- a CLI and Git Sync to automatically commit and push scripts, flows, and apps to a given repository.
On top of all these, you'll get an active community and a responsive support team to attend you in your journey.
Use cases
Examples of what can be built with Windmill include:
- Scripts that are deployed automatically into UIs, webhook endpoints and scheduled jobs.
- Applicative workflows such as the ones of Temporal, Airflow or Retool. Applicative workflows allow external APIs (Salesforce, Hubspot, Google Sheets), internal APIs and databases to talk to each other. Their logic can be complex and include approval steps and conditional branching.
- Data-oriented ETLs as you would find in tools such as Airflow, Dagster and Prefect. One notable difference is our TypeScript support thanks to Deno. Most common ETLs would be syncing transformed data to data warehouses (Snowflake, BigQuery, Redshift) and building reports out of data stores in the same data warehouses. And of course you can include more applicative steps in those ETLs.
- Powerful apps and dashboards that are internal or external-facing, using either a low-code builder similar to Retool or full react views / svelte. In either case, those apps do a mix of frontend logic and calling the scripts and flows directly.
You can find plenty of examples and inspirations on the Hub or on our Blog.
What pain points are immediately solved
- There's no agreed upon way to run scripts.
- Building even minimal UIs for script is time consuming.
- Many issues arise along the way that are painful to solve (permissions, collaboration, audit logs, secrets, deployment).
- Running scripts on a production-grade infra that is cost-efficient, reliable and easily monitorable takes a lot of skill and time to do right.
Windmill solves those problems, and makes sure that scripts become widely useful tools. The central tenet is: make building automation fast and easy, and everybody will automate repetitive tasks and save a lot of time.
Honorable mentions
Windmill is not the only framework out there, but it is the only one to provide this comprehensive set of feature and to be fully open-source at the same time. Some other very interesting frameworks that Windmill shares overlap with:
- Temporal and Airflow for the workflow engine, both open-source. They are both heavily code-based, have no low-code builders for the flows, are complex to set up and operate, and do not allow to share scripts easily or build UIs.
- Retool for building admin panels, and its other open-source alternatives: Tooljet, Appsmith.
- Airplane (†) and Superblocks have comparable set of features, but not open-source nor self-hostable, limited workflow engines, not made for scalability and have no open APIs.
You will find more details on our view over our space and competitors in the Windmill compared to competitors page.
Windmill is an open-source and self-hostable serverless runtime and platform combining the power of code with the velocity of low-code. We turn your scripts into internal apps and composable steps of flows that automate repetitive workflows.
You can self-host Windmill using a docker compose up
, our go with the Cloud App.