Buckets:
| name: windmill | |
| description: >- | |
| Build internal tools and workflows with Windmill. Use when a user asks to | |
| create internal tools, build admin dashboards, orchestrate scripts, automate | |
| DevOps tasks, or self-host a Retool alternative with code-first approach. | |
| license: Apache-2.0 | |
| compatibility: 'TypeScript, Python, Go, Bash, SQL (self-hosted or cloud)' | |
| metadata: | |
| author: terminal-skills | |
| version: 1.0.0 | |
| category: automation | |
| tags: | |
| - windmill | |
| - internal-tools | |
| - workflow | |
| - scripts | |
| - automation | |
| # Windmill | |
| ## Overview | |
| Windmill is an open-source platform for building internal tools, workflows, and scripts. Think Retool + Temporal — visual workflows with real code (TypeScript, Python, Go, Bash, SQL). Scripts run in isolated containers with auto-generated UIs. | |
| ## Instructions | |
| ### Step 1: Self-Host | |
| ```bash | |
| # Quick start with Docker | |
| docker run -d -p 8000:8000 --name windmill ghcr.io/windmill-labs/windmill:main | |
| # Or with docker-compose (recommended for production) | |
| curl -o docker-compose.yml https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml | |
| docker compose up -d | |
| ``` | |
| ### Step 2: Write Scripts | |
| ```typescript | |
| // TypeScript script — auto-generates UI from type signature | |
| export async function main( | |
| db_url: string, // renders as text input | |
| table_name: string, // renders as text input | |
| limit: number = 100, // renders as number input with default | |
| ) { | |
| const client = new Client(db_url) | |
| const result = await client.query(`SELECT * FROM ${table_name} LIMIT $1`, [limit]) | |
| return result.rows // displayed as a table in the UI | |
| } | |
| ``` | |
| ```python | |
| # Python script — same auto-UI behavior | |
| def main( | |
| api_key: str, | |
| start_date: str, # renders as date picker with "date" in name | |
| end_date: str, | |
| ) -> list[dict]: | |
| response = requests.get( | |
| "https://api.example.com/data", | |
| headers={"Authorization": f"Bearer {api_key}"}, | |
| params={"start": start_date, "end": end_date}, | |
| ) | |
| return response.json()["results"] | |
| ``` | |
| ### Step 3: Build Workflows | |
| ```yaml | |
| # Workflows chain scripts together with branching and loops | |
| # Visual editor or YAML definition: | |
| # 1. Fetch data from API (TypeScript) | |
| # 2. Transform data (Python) | |
| # 3. Branch: if errors > threshold → alert Slack | |
| # 4. Insert into database (SQL) | |
| # 5. Send summary email | |
| ``` | |
| ### Step 4: Build Apps (UI) | |
| Windmill includes a drag-and-drop app builder for internal tools. Connect to scripts, display tables, forms, charts — all backed by your scripts. | |
| ## Guidelines | |
| - Self-hosted: free community edition. Enterprise: starts at $10/user/month. | |
| - Scripts get auto-generated UIs from function signatures — no frontend code needed. | |
| - Supports approval steps (human-in-the-loop) for sensitive workflows. | |
| - Better than Retool for code-first teams; better than Temporal for simpler workflows. | |
Xet Storage Details
- Size:
- 2.87 kB
- Xet hash:
- 36f9f34c1ba788e4b7a0270aa9318a64b8b2279e243154515bd8af8c0014a3d7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.