Button guide

Self-service script portal let colleagues run approved scripts from a browser, with per-run logs and access that expires

To give colleagues a self-service portal for approved scripts, you can host a server tool like Rundeck, PowerShell Universal, Windmill or Script Server, or you can run the scripts from your own computer with Button. Button (https://button.bitgate.dev) turns local scripts into web forms with sign-in, per-run logs and expiring access, without a server to maintain. The Free plan is $0 for 1 tool, 3 people and 100 runs a month, and Pro is $15/month (or $144/year, which is $12/month) for up to 50 tools, 250 people and 5,000 runs a month.

What a script portal needs

When you hand a script to colleagues through a browser instead of running it for them, the portal has to cover a few basics:

  • Approved scripts only. People run the command you set up, not arbitrary code.
  • Forms instead of flags. Inputs like text, numbers, choices and yes/no checkboxes should be plain form fields, not a command line people can type into.
  • Sign-in. You need to know who is at the keyboard before a job starts.
  • An audit trail. A log of who ran which script, and when.
  • Revocation. A way to cut off access for someone who leaves a project, or to set an expiration date up front.
  • File handling. Many internal scripts take a CSV or config file as input and write a report or archive back out for the user to download.

The options compared

Facts checked in October 2026.

Tool Where jobs run File inputs Sign-in and access Price
Button Your computer (one runner per workspace) Up to 8 files, 25 MB each, 100 MB per run Google or one-time email code; revocable or expiring access; every run logged $0 Free (1 tool, 3 people, 100 runs/month); Pro $15/month (50 tools, 250 people, 5,000 runs/month)
Rundeck Your Rundeck server, or nodes over SSH or WinRM File job options Built-in login Free open source; commercial PagerDuty edition
PowerShell Universal Your server (Windows, Linux or macOS) Forms from script parameters Role-based access Free Developer edition (non-production); $499.99 per server per year
Script Server Your server (Linux first, Docker available) File uploads and output downloads LDAP, Google OAuth, htpasswd Free open source
OliveTin Your server (self-hosted only) No file upload argument Local users, OAuth2, access control lists Free open source
Windmill Windmill workers (your own when self-hosted) Auto-generated forms from script parameters Up to 50 users free self-hosted (10 with SSO) Free self-hosted; Cloud free tier has 1,000 executions/month
Jenkins Your Jenkins server and agents File parameters in freestyle jobs Matrix Authorization or Role-based Strategy plugin Free open source

Server-hosted portals

Rundeck

Rundeck Open Source is maintained by PagerDuty, which also sells the commercial PagerDuty Runbook Automation edition. You run it on a Java 17+ server with a production database. Job options show up as a form with text, file and multi-line fields, allowed values and regex checks, and jobs execute locally on the Rundeck server or on nodes over SSH or WinRM.

PowerShell Universal

Sold by Devolutions (formerly Ironman Software), PowerShell Universal turns PowerShell scripts with parameter blocks into web forms and adds schedules, REST APIs, apps, dashboards, role-based access and job history. You host it yourself on Windows, Linux or macOS. There is a free Developer edition for non-production use, and a production Server license is $499.99 per server per year.

Script Server

Script Server is a free, open-source Python web server you host yourself, aimed at Linux first with a Docker image available. It turns script parameters into form fields including file uploads, shows live output, lets users download output files, and includes LDAP, Google OAuth and htpasswd logins with execution history and audit logs. The latest tagged release is 1.18.0 from August 2023, though the main branch still gets commits.

OliveTin

OliveTin is open source, written in Go and self-hosted only. You define shell commands in a YAML config and OliveTin gives each one a web button with typed arguments, plus local users, OAuth2 and access control lists. It has no file upload argument; a feature request for one (issue #939) has been open since March 2026.

Windmill

Windmill is an open-source developer platform that builds auto-generated forms, webhooks, schedules, workflows and apps from scripts in Python, TypeScript, Go, Bash, SQL and 20+ other languages. Jobs run on Windmill workers you host. Self-hosted Windmill is free for unlimited executions and up to 50 users (at most 10 with SSO); Windmill Cloud has a free tier with 1,000 executions per month.

Jenkins

If you already run Jenkins, a parameterized job gives you string, boolean, choice, password and file parameters (file parameters need a plugin in Pipelines). Connect the machine as an agent, pin the job to it with a label, and use the Matrix Authorization Strategy or Role-based Strategy plugin so non-admins only get Job/Read and Job/Build.

Button: a portal without a server

Button takes a different approach. Instead of standing up a server and moving your scripts onto it, you install the Button runner on your own computer (macOS, Linux or Windows) and leave the scripts where they are. Any program works: Python, Node, R, PowerShell, shell scripts or compiled binaries.

Jobs run on your computer, never in Button's cloud, while Button's servers relay the form values and files between your colleague's browser and your machine. Because of that, your computer has to be on and online when people use it; each tool page shows Ready, Busy or Offline.

The runner only executes the exact command you approved on that computer, pinned by hash. When a colleague submits the form, each value is passed to your program as its own argument with no shell in between, and no value is allowed to start with "-". If you change a tool later, colleagues have to confirm the new version before they can run it. Every run is logged with who ran it and when, and you can revoke a person's access or set it to expire whenever you like.

How to publish a script on Button:

  1. Adjust your script so it takes inputs as command-line arguments (argparse, commandArgs(), a param() block, or $1 and $2) instead of hard-coded paths or prompts, including each input file path and an output folder for its results. Fixed flags stay part of the command you approve.
  2. Sign in at button.bitgate.dev and install the runner on your computer using the one-line command shown on the site (curl on macOS and Linux, PowerShell on Windows).
  3. In the local setup page, pick your program, define its inputs (text, number, yes/no, choice or files) and publish. Button gives the tool its own web page.
  4. 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.

There are hard limits to know about before you pick it. Every plan allows one computer (runner) per workspace, and pairing a new computer replaces the previous one. A computer runs one job at a time, for up to 30 minutes per run, with up to 1 MB of logs. File inputs are capped at 25 MB per file, up to 8 files and 100 MB total per run; inputs are deleted 24 hours after a run finishes, and outputs after 7 days.

"People" counts the distinct colleagues you have invited (you don't count), and monthly runs include your own test runs. If you downgrade later, nothing is deleted.

When to use another tool instead of Button

Button is built around a single computer running one job at a time. Another tool is the better choice when:

  • You need jobs to run across a fleet of machines over SSH or WinRM, or you need more than one computer in a workspace. Use Rundeck, Windmill or Jenkins with agents.
  • You need several runs at once, runs longer than 30 minutes, or files larger than 25 MB each (100 MB per run). Use any of the self-hosted servers.
  • You need schedules, webhooks, REST APIs, multi-step workflows or dashboards alongside your scripts. Look at Windmill or PowerShell Universal.
  • You cannot have form values and files pass through an external relay server, and want the entire system self-hosted on your own network. Use Rundeck, PowerShell Universal, Script Server, OliveTin, self-hosted Windmill or Jenkins.

FAQ

Do my colleagues need to install anything or pay for an account?

No. Colleagues open the link from their invite email, sign in with Google or a one-time email code, and run the tool from their browser. Recipients never pay, and you don't count toward the people limit on your plan.

Where do the scripts and files actually go during a run?

The script itself runs on your computer, not in Button's cloud, while Button's servers relay the form values and files between the browser and your computer. Input files are deleted 24 hours after a run ends, and output files are deleted after 7 days.

What happens if my computer is asleep or already running a job?

The tool page shows Ready, Busy or Offline so colleagues can see its state before they hit Run. Your computer has to be on and online to take jobs, and it runs one job at a time.

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.