Skip to main content

Script Editor

In Windmill, Scripts are the basis of all major features (they are the steps of flows, linked to apps components, or can be run as standalone).

A Script can be written in: TypeScript (Deno), Python, Go, Bash or SQL. Its two most important components are the input JSON Schema specification and the code content.

Script languages

Python and Go Scripts also have an auto-generated lockfile that ensure that executions of the same Script always use the exact same set of versioned dependencies. The code must always have a main function, which is its entrypoint when executed as an individual serverless endpoint or a Flow module:


async function main(param1: string, param2: { nested: string }) {


def main(param1: str, param2: dict, ...):


func main(x string, nested struct{ Foo string \`json:"foo"\` }) (interface{}, error) {


There is no main needed for Bash. The body is executed and the args are passed directly.

The Script Editor is made of the following features: