---
title: "Deploy Windmill | Open-Source Retool Alternative"
description: "Self-host Windmill. Run & automate workflows, scripts, and internal tools"
category: "Automation"
url: https://railway.com/deploy/windmill-automation-platform
---

# Deploy Windmill | Open-Source Retool Alternative

Self-host Windmill. Run & automate workflows, scripts, and internal tools

**[Deploy Windmill | Open-Source Retool Alternative on Railway](https://railway.com/template/windmill-automation-platform)**

- **Creator:** Heimdall
- **Category:** Automation
- **Total deploys:** 5

## Template content

### Windmill-Worker https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/windmill.svg

- **Image:** ghcr.io/windmill-labs/windmill:latest

### Windmill-Server https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/windmill.svg

- **Image:** ghcr.io/windmill-labs/windmill:latest
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

## Documentation

![Windmill logo](https://www.windmill.dev/assets/images/windmill_alone-fecdb574d84bb26bc048f78e16b84daf.png)

# Deploy and Host Windmill on Railway

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/windmill-automation-platform?referralCode=QXdhdr)

Deploy Windmill on Railway to get a fully self-hosted developer platform for building internal tools, workflows, and scripts. Windmill is the open-source alternative to Retool and Temporal — a code-first automation engine that turns Python, TypeScript, Go, Bash, and SQL scripts into production-ready webhooks, workflows, and UIs.

This Railway template pre-configures three services: **Windmill-Server** (API + web UI), **Windmill-Worker** (job execution engine), and **PostgreSQL** (state + job queue). Railway handles SSL, networking, and scaling — you focus on building scripts and flows.

![Windmill Railway architecture](https://res.cloudinary.com/asset-cloudinary/image/upload/v1776783230/windmill-railway-architecture_khxh2i.png)

## Getting Started with Windmill on Railway

After deployment completes, open the public URL assigned to Windmill-Server. Log in with the default credentials `admin@windmill.dev` / `changeme` — change the password immediately from the user settings page. Create a new workspace or use the default `admins` workspace. Navigate to the **Home** tab and click **+ Script** to write your first Python or TypeScript script. Windmill auto-generates a UI form from your script's parameters, so you can run it immediately without building a frontend.

To create a workflow, click **+ Flow** and chain multiple scripts together with branching, error handlers, and approval steps. Schedule any script or flow as a cron job from the **Schedules** tab.

![Windmill dashboard screenshot](https://res.cloudinary.com/asset-cloudinary/image/upload/v1776783231/windmill-dashboard_ddaaew.png)

## About Hosting Windmill

Windmill is a code-first orchestration platform built in Rust (backend) and Svelte (frontend) with 16k+ GitHub stars. It solves the problem of scattered internal scripts by providing a centralized platform where teams can write, run, schedule, and share scripts with auto-generated UIs.

Key features:
- **Multi-language support** — Python, TypeScript/JavaScript, Go, Bash, SQL, PHP, C#, Rust
- **Auto-generated UIs** — every script gets a form UI from its type signature
- **Flow builder** — visual editor for multi-step workflows with parallel branches and retries
- **13x faster than Airflow** — Rust-based job queue with sub-second scheduling
- **58+ integrations** — Google Workspace, Slack, GitHub, PostgreSQL, AWS, OpenAI, and more
- **Webhook endpoints** — turn any script into an HTTP API endpoint
- **Approval steps** — human-in-the-loop flows for sensitive operations
- **Built-in IDE** — browser-based code editor with LSP intellisense

## Why Deploy Windmill on Railway

- One-click deploy with PostgreSQL pre-configured
- Automatic SSL and public domain — no reverse proxy setup needed
- Server and worker scale independently via Railway's container management
- Zero-maintenance database with Railway-managed PostgreSQL
- Private networking between services out of the box

## Common Use Cases for Self-Hosted Windmill

- **Internal tools and admin panels** — auto-generate CRUD interfaces from database queries with approval workflows
- **ETL and data pipelines** — schedule Python/SQL scripts to transform and sync data across databases and APIs
- **Webhook-driven automation** — receive events from Stripe, GitHub, or Slack and trigger multi-step processing flows
- **AI/LLM pipelines** — chain OpenAI calls with data retrieval, processing, and notification steps

## Dependencies for Windmill on Railway

- **Windmill-Server** — `ghcr.io/windmill-labs/windmill:latest` — API server and web frontend
- **Windmill-Worker** — `ghcr.io/windmill-labs/windmill:latest` — job execution engine (same image, different MODE)
- **PostgreSQL** — Railway-managed — stores all state, scripts, flows, schedules, and job queue

### Environment Variables Reference for Windmill

| Variable | Service | Description |
|---|---|---|
| `DATABASE_URL` | Server, Worker | PostgreSQL connection string |
| `MODE` | Server, Worker | `server` or `worker` — determines binary behavior |
| `BASE_URL` | Server | Public URL for the instance (used in OAuth, resume URLs) |
| `PORT` | Server | HTTP listening port (8000) |
| `WORKER_GROUP` | Worker | Worker group name (`default` for standard jobs) |

### Deployment Dependencies

- **Runtime:** Rust binary (pre-compiled in Docker image)
- **Docker image:** [ghcr.io/windmill-labs/windmill](https://github.com/orgs/windmill-labs/packages/container/package/windmill)
- **GitHub:** [windmill-labs/windmill](https://github.com/windmill-labs/windmill)
- **Docs:** [windmill.dev/docs](https://www.windmill.dev/docs/advanced/self_host)

## Hardware Requirements for Self-Hosting Windmill

| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 1 vCPU | 4 vCPU (1 server + 3 workers) |
| RAM | 2 GB | 8 GB (server 2 GB + workers 2 GB each) |
| Storage | 1 GB (app) + 1 GB (PostgreSQL) | 5 GB+ PostgreSQL for production workloads |
| Runtime | Docker | Docker Compose or Kubernetes |

Native workers (lightweight jobs) need only 0.1 CPU and 128 MB RAM. Standard workers need 1 vCPU and 2 GB RAM each.

## Self-Hosting Windmill with Docker Compose

Clone the official configuration and start all services:

```
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env
docker compose up -d
```

For production, point to an external PostgreSQL instance by editing `.env`:

```
DATABASE_URL=postgres://user:password@your-postgres-host:5432/windmill?sslmode=require
```

Access the UI at `http://localhost` and log in with `admin@windmill.dev` / `changeme`.

## How Much Does Windmill Cost to Self-Host?

Windmill Community Edition is **free and open-source** (AGPLv3) with unlimited executions and up to 50 users. The Enterprise Edition starts at $120/month ($20/developer, $10/operator) and adds SAML/SCIM, audit logs, Kafka/NATS triggers, and priority 24/7 support. On Railway, your only cost is infrastructure — typically $5–15/month for a small deployment with server, worker, and PostgreSQL.

## Windmill vs n8n: Which Automation Platform to Self-Host?

| Feature | Windmill | n8n |
|---|---|---|
| Approach | Code-first (scripts → UIs) | Visual-first (node graph) |
| Languages | Python, TS, Go, Bash, SQL, PHP, C# | JavaScript/TypeScript only |
| Auto-generated UIs | Yes (from type signatures) | No |
| Flow builder | Visual + code | Visual only |
| Integrations | 58+ OAuth + any HTTP API | 400+ pre-built nodes |
| Performance | 13x faster than Airflow (Rust) | Node.js runtime |
| License | AGPLv3 | Sustainable Use License |

Windmill suits teams that prefer writing code and need multi-language support. n8n is better for non-developers who want drag-and-drop integration building.

## FAQ

**What is Windmill and why should you self-host it?**
Windmill is an open-source developer platform that turns scripts into workflows, webhooks, and UIs. Self-hosting gives you full control over data, unlimited executions, and zero per-seat costs for the Community Edition.

**What does this Railway template deploy for Windmill?**
Three services: Windmill-Server (API + web UI on port 8000), Windmill-Worker (job execution engine), and Railway-managed PostgreSQL. The server handles the frontend and API, while the worker executes scripts and flows.

**Why does Windmill need PostgreSQL on Railway?**
PostgreSQL stores everything — scripts, flows, schedules, job queue, execution logs, user accounts, and workspace configuration. It's the single source of truth. Without it, Windmill has no persistent state.

**How do I add more workers to Windmill on Railway?**
Create a new service with the same `ghcr.io/windmill-labs/windmill:latest` image, set `MODE=worker`, `WORKER_GROUP=default`, and `DATABASE_URL=${{Postgres.DATABASE_URL}}`. Each additional worker adds parallel job execution capacity.

**How do I enable OAuth/SSO login in self-hosted Windmill?**
Navigate to the instance settings as a superadmin and configure OAuth providers (Google, GitHub, Azure AD, GitLab). You'll need to create an OAuth app on each provider and enter the client ID and secret in Windmill's settings UI.

**Can Windmill run Docker containers as workflow steps?**
Yes, but it requires Docker-in-Docker (DinD) which is not available on Railway. For Railway deployments, use Windmill's native script execution (Python, TypeScript, Go, Bash, SQL) instead.


## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — [Jul'26] WhatsApp automation platform using Evolution API, n8n & PostgreSQL
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/windmill-automation-platform
