Button guide

Windmill alternatives for running scripts from a form Rundeck, Script Server, OliveTin, Jenkins and Button compared

If you like how Windmill turns scripts into forms, your main alternatives are Rundeck, Script Server, OliveTin, Jenkins and Button. If you don't want to host a server or you need the script to run on your own computer, Button (https://button.bitgate.dev) lets you publish a local script as a web form for $0 (1 tool, 3 people, 100 runs per month) or $15/month for 50 tools and 5,000 runs per month. If you need workflows, schedules or a self-hosted server, one of the others will fit better.

Why look past Windmill

Windmill is an open-source developer platform (AGPLv3 core) that takes scripts in Python, TypeScript, Go, Bash, SQL and 20+ other languages and gives you auto-generated forms, webhooks, schedules, workflows and apps. Self-hosted Windmill is free with unlimited executions, up to 50 users (max 10 with SSO) and 3 workspaces, while Windmill Cloud has a free tier with 1,000 executions per month.

You might still look for something else when you don't need a whole platform, or when the script has to run on one specific machine you already work on. When you self-host, you run Windmill, its database and the workers yourself; on Windmill Cloud, scripts run on Windmill's workers rather than on the machine where your script already works.

Quick comparison

Tool Who hosts the web UI Where scripts run File uploads in forms License / Price
Windmill You or Windmill Cloud Windmill workers you host (or Cloud) Yes AGPLv3 core; Free self-hosted (up to 50 users) or Cloud free tier (1,000 executions/month)
Button Button (button.bitgate.dev) Your own computer Up to 8 files (25 MB each, 100 MB/run) Free ($0, 1 tool, 100 runs/month); Pro $15/month or $144/year
Rundeck Open Source You (Java 17+ server + DB) Local server, or nodes over SSH / WinRM Yes Apache 2.0 (Commercial: PagerDuty Runbook Automation)
Script Server You (Python server / Docker) The host running Script Server Yes Apache 2.0
OliveTin You (Go binary, no SaaS) The host running OliveTin No (issue #939 open since March 2026) AGPL-3.0
Jenkins You (Java server) Jenkins server or connected agents Freestyle jobs; Pipelines need File Parameters plugin MIT

1. Button

Button (https://button.bitgate.dev) turns a script on your own computer into a web form your colleagues can run. You don't host a server, and the job never runs in Button's cloud - it runs on your machine, while Button's servers relay the form values and files between the browser and your computer. Any program works: Python, Node, R, PowerShell, shell scripts, compiled binaries.

How to set up a script on Button

  1. Make your script take its inputs as command-line arguments (such as argparse in Python, commandArgs() in R, a param() block in PowerShell, or $1 and $2 in bash) instead of hard-coded paths or interactive prompts. Take each input file path as an argument, and write the results as files into an output folder that is also passed as an argument.
  2. Sign in at button.bitgate.dev and install the Button runner on your computer (macOS, Linux or Windows) using the one-line command the site shows you (curl on macOS and Linux, PowerShell on Windows).
  3. Pick the program in the local setup page and describe its inputs (text, number, yes/no, choice, files). Fixed flags are part of the command you approve; colleagues only supply the values for the form fields.
  4. Publish the tool. Button gives it its own page.
  5. Invite your colleagues. They open the link from their invite email, sign in with Google or a one-time email code, fill in the form, press Run and download the results. They install nothing and never pay.

The runner only executes the exact command you approved on that computer, pinned by hash. Every form value is passed to your program as its own argument, with no shell, and a value can't start with "-". If you change a tool, people have to confirm the new version before running it. Every run is logged with who ran it and when, and you can revoke access or set it to expire at any time.

Limits and tradeoffs

Your computer has to be on and online when someone needs the tool (tool pages show Ready, Busy or Offline). You get one computer (runner) per workspace on every plan, and pairing a new computer replaces the previous one. It runs one job at a time per computer, for up to 30 minutes per run, with logs up to 1 MB per run. Files can be up to 25 MB each, up to 8 files and 100 MB per run. Inputs are deleted 24 hours after a run ends, outputs after 7 days.

Pricing is $0 on the Free plan (1 published tool, 3 people, 100 runs per month) and $15/month or $144/year on Pro (50 tools, 250 people, 5,000 runs per month). Your own runs count toward the monthly total, and downgrading deletes nothing.

When Windmill is the better choice: Pick Windmill if you need schedules, webhooks, multi-step workflows, or a tool that runs without your computer being awake.

2. Rundeck Open Source

Rundeck Open Source is maintained by PagerDuty, with PagerDuty Runbook Automation as the commercial edition. It's built for running operational jobs across many machines.

Job options appear to users as a form with text, file and multi-line options, allowed values and regex checks. Rundeck runs commands locally on the Rundeck server, or out on remote nodes over SSH or WinRM. To run it yourself, you need a Java 17+ server and, in production, a database (MySQL/MariaDB, PostgreSQL, SQL Server or Oracle).

Pick Rundeck over Button and Windmill when your primary job is running commands across a fleet of servers over SSH or WinRM from a central ops portal.

3. Script Server

Script Server (github.com/bugy/script-server, Apache 2.0) is a much smaller self-hosted option than Windmill or Rundeck. It's a Python web server you install and host yourself (Linux first, with a Docker image available).

You configure a script and its parameters become form fields, including file uploads. When a colleague runs a script, Script Server shows live output and offers output files for download. It supports LDAP, Google OAuth and htpasswd logins, and keeps execution history and audit logs. Note that its latest tagged release is 1.18.0 from August 2023, though the main branch still gets commits.

Pick Script Server if you want a lightweight web wrapper you can throw in a Docker container on a Linux box without running a separate database.

4. OliveTin

OliveTin is open source, written in Go and self-hosted only, with no SaaS version. It takes predefined shell commands from a YAML config and gives them a web button.

You can type the arguments (text, int, email, url, datetime, password, checkbox, dropdown choices and more), and it supports local users, OAuth2 and access control lists. What it doesn't have is a file upload argument - a feature request for attachments as input (issue #939) has been open since March 2026.

Pick OliveTin when you want a single Go binary and a YAML file to expose shell commands that don't take input files.

5. Jenkins

Jenkins (MIT) is the classic Java automation server you host yourself. If your team already runs Jenkins, you may not need to bring in Windmill or anything else.

How to turn a script into a form in Jenkins

  1. If the script needs to run on a specific machine, connect that machine to Jenkins as an agent.
  2. Create a job, restrict the job with a label matching your agent, and check 'This project is parameterized'.
  3. Add your inputs: Jenkins supports string, multi-line string, boolean, choice, password and file parameters (file parameters work in freestyle jobs, while Pipelines need the File Parameters plugin).
  4. To let non-admins only start jobs, install the Matrix Authorization Strategy or Role-based Strategy plugin and grant them Job/Read and Job/Build.

Pick Jenkins when you already have it running and don't mind its UI.

FAQ

Which Windmill alternative doesn't require hosting a server?

Among these alternatives, Button is the only one where you don't host a web server yourself. You install the Button runner on your macOS, Linux or Windows computer, and Button relays form inputs and output files between your colleagues' browsers and your machine.

Can colleagues upload files into these script forms?

Button, Windmill, Rundeck and Script Server all support file inputs out of the box, and Jenkins supports them in freestyle jobs or in Pipelines with the File Parameters plugin. OliveTin does not support file uploads (issue #939 has been open since March 2026). On Button, colleagues can upload up to 8 files per run (up to 25 MB each and 100 MB total per run).

How does Button stop users from injecting shell commands through the form?

The Button runner only runs the exact command you approved on your computer, pinned by hash. Every form value is passed to the program as its own argument with no shell involved, and values aren't allowed to start with "-".

What happens on Button if my computer is turned off?

The script won't run until your computer is back on and online. Button's tool pages show your computer's current status as Ready, Busy or Offline so colleagues can see if it's available before pressing Run.

Last updated

Put your script behind a form

Button turns a script on your computer into a web form. Colleagues sign in, fill it in, press Run and download the results. Free for 1 tool and 3 people.