Write scripts for production
Write a script in any language, Windmill turns it into an API endpoint, a scheduled job, or a shareable tool with a UI. No infrastructure to manage.
What is a script on Windmill?
A script is a function in any language that you write, deploy and monitor directly on Windmill. Windmill handles the runtime, the dependencies, the UI and the API. You just write the logic.
Each script automatically gets an auto-generated form, webhook endpoints and real-time logs. Scripts can run on demand or through built-in triggers, and can be composed into workflows and apps.
Standalone or used as building blocks
Scripts work on their own as API endpoints, scheduled jobs or shareable tools. They can also be composed into workflows, data pipelines, internal apps and more.

Build production-grade internal apps with backend scripts, data tables and React, Vue or Svelte frontends.

Orchestrate ETL jobs with parallel branches, DuckDB queries and connections to any database or S3 bucket.

Build AI agents with tool-calling, DAG orchestration, sandboxes and direct access to your scripts and resources.

Chain scripts into flows with approval steps, parallel branches, loops and conditional logic.

Run cron jobs with a visual builder, execution history, error handlers, recovery handlers and alerting.
Two ways to write scripts
Write scripts directly in the Windmill UI or develop locally with your own editor. Both paths deploy to the same platform.
In the Windmill UI
The built-in editor gives you autocomplete, LSP support, a live preview of the auto-generated UI, one-click deploy and AI assistance (BYOK).
Learn more about the script editorIn your local editor
Use the CLI, the VS Code extension or AI coding tools like Claude Code. Scripts are standard files on disk, ready for any editor or AI agent.
Learn more about local developmentBuilt-in triggers
Every script gets an auto-generated UI so anyone on your team can run it. It also gets sync and async API endpoints out of the box. On top of that, Windmill provides a full set of built-in triggers: schedules, Kafka, Postgres CDC, SQS, MQTT, emails, WebSockets and more.
Learn more about available triggers
Built for production
Every script runs within a platform built for enterprise requirements: immutable versioning, role-based access control, full audit trails, SSO and self-hosting. No extra setup needed.
Versioning and deploy
Every script version is immutable and addressable by hash. Deploy from the UI, the CLI or Git sync. Roll back to any previous version instantly. Sync your workspace with GitHub or GitLab and use your existing code review workflows.
Learn more about deployment and versioningFull observability
Every run is logged with inputs, outputs, duration and status. Real-time execution logs stream as your script runs. Set up error handlers to send alerts on failure. Audit trails track who ran what and when.
Learn more about observabilityRBAC and permissions
Control who can view, edit and run each script with role-based access control. Organize scripts into folders with group-level permissions. Authenticate users with SSO. Every action is recorded in the audit log.
Learn more about RBACAssign scripts to dedicated infrastructure
Choose where and how each script runs. Assign scripts to worker groups with specific hardware, network access or pre-installed dependencies. Run them remotely with agent workers behind firewalls, or use dedicated workers for high-throughput scripts that need permanently warm runtimes.
Learn more about workersFrequently asked questions
Build your internal platform on Windmill
Scripts, flows, apps, and infrastructure in one place.

