windmill-labs/windmill

Code-first platform for workflows, apps and AI agents, on the fastest self-hostable orchestrator (benchmarked against Airflow, Prefect and Temporal). Business teams build with AI, engineers control what ships. Open-source alternative to Lovable, Retool and n8n.

Windmill이란?

Windmill은 직접 호스팅하는 오픈소스 플랫폼으로, 코드를 작성하여 워크플로, 웹 앱, AI 에이전트를 구축할 수 있습니다. Retool, n8n과 같은 도구의 자체 호스팅 가능한 대안이자 단순화된 Temporal로 설명됩니다.

핵심 아이디어: 스크립트가 모든 것이 됩니다

Python, TypeScript, Go, Bash 등의 언어로 작고 집중된 스크립트(일반 함수)를 작성합니다. 그러면 Windmill이 자동으로 해당 스크립트를 다음으로 변환합니다:

  • 공유 가능한 UI(스크립트 매개변수에서 생성된 웹 양식)
  • API 엔드포인트
  • cron 작업(예약된 작업)
  • CLI 명령

스크립트를 플로우(워크플로)로 연결하거나, 그 위에 전체 코드 React 또는 Svelte 앱을 구축하거나, AI 에이전트 및 데이터 파이프라인으로 구성할 수 있습니다.

작동 방식

  1. 스크립트 작성 — 브라우저 기반 편집기 또는 CLI/VS Code 확장으로 로컬에서 작성하고 Git과 동기화합니다.
  2. Windmill이 프론트엔드 생성 — 스크립트의 타입이 지정된 인수가 자동으로 양식, HTTP 엔드포인트, CLI 명령이 됩니다.
  3. 스크립트를 플로우로 연결 — 시각적으로 또는 코드로, 각 단계는 자체 로그가 있는 자체 작업으로 실행됩니다.
  4. UI 구축 — 스크립트와 플로우 위에.

가드레일이 있는 AI

비즈니스 팀과 엔지니어가 동일한 인스턴스에서 작업합니다. AI 세션을 통해 비엔지니어는 워크스페이스 포크에서 스크립트, 플로우, 앱을 구축할 수 있으며, 라이브 미리보기와 배포 전 검토할 diff가 제공됩니다. 보호 규칙 세트는 직접 배포를 차단할 수 있으므로 변경 사항은 엔지니어 검토 후에만 프로덕션에 도달합니다. AI로 구축된 코드는 자체 작업자 그룹 또는 별도 인스턴스에서 실행됩니다.

데이터 처리

  • 데이터 테이블 — 각 워크스페이스는 관리되는 Postgres 테이블을 얻으며, 연결 문자열을 노출하지 않고 타입 검사된 SQL로 쿼리할 수 있습니다.
  • DuckDB — 스크립트는 S3/Azure 파일(CSV, Parquet, JSON), 데이터 테이블, Postgres, MySQL, BigQuery를 SQL로 쿼리할 수 있습니다.
  • DuckLake — 대규모 데이터 세트를 워크스페이스 객체 스토리지의 레이크하우스 테이블로 저장하고 일반 SQL로 쿼리합니다.
  • 파이프라인(알파) — 수동으로 DAG를 그리는 대신 스크립트가 읽고 쓰는 데이터로 스크립트를 연결합니다.

기술 스택

  • 데이터베이스: PostgreSQL(Aurora, Cloud SQL, Neon, Azure PostgreSQL과 호환)
  • 백엔드: Rust — 무상태 API 서버와 작업자가 Postgres 큐에서 작업을 가져옴
  • 프론트엔드: Svelte 5
  • 샌드박싱: nsjail 및 PID 네임스페이스 격리
  • 런타임: Bun(TypeScript/JavaScript), uv가 포함된 Python, 그리고 Go, Bash, PowerShell, Rust, C#, Java, Ansible 등

성능

Windmill은 가장 빠른 자체 호스팅 가능한 워크플로 엔진이라고 주장하며, 벤치마크(경량 작업 40개와 장기 실행 작업 10개 모두)에서 Airflow, Prefect, Temporal을 능가합니다. 작업이 시작되면 스크립트를 직접 실행하는 것과 비교해 오버헤드가 없습니다. 큐잉 및 결과 보고의 추가 대기 시간은 약 50ms입니다.

보안

  • 샌드박싱: nsjail을 통한 파일 시스템/리소스 격리 및 PID 네임스페이스 격리로 작업이 작업자 프로세스 메모리에 액세스하지 못하도록 방지합니다.
  • 비밀: 저장된 자격 증명을 위한 워크스페이스당 하나의 암호화 키.

자체 호스팅

  • Docker compose — 세 개의 파일, 하나의 명령: docker compose up -d
  • Kubernetes — Helm 차트 사용 가능
  • 클라우드 제공업체 — AWS, GCP, Azure, Fly.io, Render.com, Hetzner, Digital Ocean 등에서 작동. 경험 법칙: 1vCPU 및 1–2GB RAM당 작업자 1개.
  • OAuth/SSO — 슈퍼 관리자 UI에서 Google Workspace, Microsoft/Azure, Okta를 구성합니다.

라이선스

  • 커뮤니티 에디션은 설정된 제한 내에서 내부 또는 API를 통해 무료로 사용할 수 있습니다.
  • 관리형 서비스로 판매/재판매, 수정/래핑, 또는 제품의 기능으로 재노출하려면 상업용 라이선스가 필요합니다.
  • enterprise 플래그 없이 빌드된 바이너리는 AGPLv3입니다. API 클라이언트와 OpenAPI 사양은 Apache 2.0입니다.

기여

이 프로젝트는 현재 외부 기여를 찾지 않습니다만, 버그 보고, 기능 요청, 작고 사소하게 검증된 PR은 환영합니다.

주요 사실

  • 스크립트에 20개 이상의 언어 지원
  • 스크립트는 일정, 웹훅, HTTP 경로, Kafka, WebSocket, 이메일 등으로 트리거 가능
  • 기존 dbt 프로젝트는 수정 없이 스크립트로 실행
  • 기본 Docker 자격 증명: admin@windmill.dev / changeme
  • 활발한 프로젝트: 높은 커밋 활동, Discord 커뮤니티, 커뮤니티 스크립트 공유용 Hub

요약하자면: 함수를 작성하면 UI, API, 일정, 워크플로를 얻습니다 — 모두 자체 호스팅되며 AI 지원과 인간 검토가 내장되어 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트