Button guide
Let someone run your Python script without installing Python 4 options compared, including a browser form that runs on your computer
When a colleague's locked-down work laptop won't let them install Python, you have four options: bundle the script into an executable with PyInstaller or Nuitka, put it on a hosted server like PythonAnywhere or Render, let them into your machine over remote desktop, or keep the script on your own computer behind a Button web form. With Button (https://button.bitgate.dev), your colleague runs the script from their browser while the job executes on your machine, and the Free plan ($0) includes 1 published tool, 3 people, and 100 runs per month, with files up to 25 MB each.
The four options at a glance
| Option | Tools | Where the script runs | Cost | Main catch |
|---|---|---|---|---|
| Package an executable | PyInstaller, Nuitka | Colleague's computer | Free (open source) | One build per OS; antivirus false positives |
| Host on a server | PythonAnywhere, Render | Cloud server | $0 free tiers; PythonAnywhere Developer is $10/month | Free tiers sleep after 15 minutes (Render) or cap at 100 CPU-seconds/day and expire monthly (PythonAnywhere) |
| Remote desktop | Windows Remote Desktop, Chrome Remote Desktop, TeamViewer | Your computer | Chrome Remote Desktop is free; Windows Pro required to host RDP; TeamViewer isn't free for work | You hand over your whole screen |
| Browser form on your machine | Button | Your computer | $0 Free plan (1 tool, 3 people, 100 runs/month); $15/month Pro ($12/month billed at $144/year) | Your computer must be on and online; 30 minutes max per run |
Option 1: Package an executable with PyInstaller or Nuitka
PyInstaller bundles your Python program and its packages into a single executable or a folder. Nuitka compiles your Python code to C first and then builds the executable.
What usually breaks is the colleague's machine or the build step. Neither tool is a cross-compiler: if you're on a Mac and your colleague is on Windows, you need a Windows machine to build their .exe. A laptop too locked down for Python may also block an unknown executable, and antivirus false positives are a known PyInstaller issue. Every fix to the script means a new build and a new file to send around.
When to pick this anyway: if your colleague needs to run the script offline on their own machine, you're both on the same operating system, and their laptop won't flag the executable you hand them, PyInstaller or Nuitka is the cleanest choice because nothing has to stay running on your end.
Option 2: Host the script on PythonAnywhere or Render
Instead of fighting their laptop, you can wrap the script in a small web app and deploy it to a hosting service so they just visit a URL.
If you're looking at free tiers, watch the limits closely. PythonAnywhere's free Beginner account gives you 1 web app and 100 CPU-seconds per day, restricts outbound internet to an allowlist of sites, and expires the free web app after 1 month unless you log in and renew it. Their cheapest paid plan is Developer at $10/month. Over on Render, free web services spin down after 15 minutes without traffic and take about a minute to wake back up when your colleague finally clicks the link.
When to pick this: if your computer isn't on during the hours your colleague works, or several people need to run jobs at the exact same time, hosting it on a paid server plan is the better route.
Option 3: Let them onto your computer with remote desktop
You already have Python and your dependencies working on your machine, so the brute-force workaround is letting your colleague log into it.
Chrome Remote Desktop is free. Windows Remote Desktop is built in, though it can only host sessions on Windows Pro or higher editions, not Home. TeamViewer is free for personal use only, which rules it out for work. And while SSH gives a terminal session without taking over your screen, non-technical colleagues rarely want a terminal.
The problem with any screen-sharing setup is that you're handing over your desktop. You can't use your mouse and keyboard while they're working, and they can see and click whatever else you have open. Still, if this is a one-off run that you want to watch them do live, Chrome Remote Desktop gets it done without touching your code.
Option 4: Keep the script on your computer behind a Button form
Button (https://button.bitgate.dev) turns a script on your own computer into a web form your colleagues can open in their browser. Jobs run on your machine, never in Button's cloud, while Button's servers relay the form values and files between their browser and your computer. Python works, and so do Node, R, PowerShell, shell scripts, and compiled binaries.
How to set it up
- Update your script so it takes its inputs as command-line arguments instead of hard-coded paths or interactive
input()prompts. In Python, useargparse(orcommandArgs()in R, aparam()block in PowerShell, or$1and$2in bash). Pass each input file path as an argument, and have the script write its result files into an output folder that's also passed in as an argument:
import argparse
import pathlib
parser = argparse.ArgumentParser()
parser.add_argument("--input-file", required=True)
parser.add_argument("--currency", required=True)
parser.add_argument("--output-dir", required=True)
args = parser.parse_args()
out = pathlib.Path(args.output_dir) / "report.csv"
# process args.input_file and write to out
- Sign in at
button.bitgate.devand install the Button runner on your computer (macOS, Linux, or Windows) using the one-line command the site shows you -curlon macOS and Linux, or PowerShell on Windows. - Open the local setup page, pick your program, and describe its inputs (text, number, yes/no, choice, or files). Fixed flags like
--currencyare part of the command you approve; your colleagues only fill in the values for the form fields. - Publish the tool and invite your colleagues by email. Button gives the tool its own page.
- Your colleague opens the link from their email, signs in with Google or a one-time email code, fills in the form, presses Run, and downloads 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 - (so nobody can sneak in extra flags). If you change a tool later, 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 whenever you want.
What breaks with Button
Your computer has to be on and online for anyone to use the form; the tool page shows Ready, Busy, or Offline so people know before they hit Run. Only one job runs at a time per computer, and you only get one computer (runner) per workspace on every plan - pairing a new computer replaces the previous one.
There are also hard limits per run: 30 minutes max, logs up to 1 MB, and up to 8 files totaling no more than 100 MB (with each file capped at 25 MB). If your script crunches multi-gigabyte files or runs for two hours, Button won't fit.
FAQ
Does our data stay on my computer when someone uses Button?
No. While the script itself executes on your computer, the form values and files pass through Button's servers to get between your colleague's browser and your machine. Button deletes inputs 24 hours after a run ends, and outputs after 7 days.
How much does Button cost if I need more than the Free plan?
The Free plan is $0 and gives you 1 published tool, 3 invited people (you don't count toward that limit), 100 runs per month including your own runs, and 1 GB of file transfer per month. Pro is $15/month, or $144/year ($12/month), and raises the limits to 50 tools, 250 people, 5,000 runs per month, and 50 GB of file transfer per month. Recipients never pay, and downgrading deletes nothing.
Can I build a Windows executable with PyInstaller from my Mac?
No, neither PyInstaller nor Nuitka is a cross-compiler. You have to build the Windows executable on a Windows machine and the macOS app on a Mac.
What happens if my computer is asleep when a colleague opens the Button link?
They won't be able to run the script until your machine is back on and connected to the internet. The tool page shows whether your runner is Ready, Busy, or Offline.
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.