Run Python scripts online, with no server to keep
Write def main, press Run and Waiso runs it on CPython 3.15 in an isolated sandbox. The same script then runs on a schedule, behind an HTTP endpoint or as a step of a flow.
Parameters become inputs
Each parameter of main is an input, typed by its annotation: str, int, float, bool, lists, dicts, Literal. The value main returns is the JSON result, and anything printed goes to the logs.
Learn more →def main(prices: list[float], tax_rate: float = 0.1, currency: str = "USD"):
subtotal = sum(prices)
total = round(subtotal * (1 + tax_rate), 2)
print(f"{len(prices)} items, total {total} {currency}")
return {"subtotal": subtotal, "total": total, "currency": currency}
PyPI packages from your imports
Waiso reads your imports with Python’s own parser and installs the matching PyPI packages, cached for the next run. Publishing freezes the exact versions, so schedules and the API run what you tested.
Learn more →Schedule it, call it, chain it
Publish the script and give it a schedule, turn on its HTTP endpoint with a token, or drop it into a flow as a step. Every trigger runs the latest published version.
Learn more →Questions
Which Python version runs my script?
CPython 3.15, with 3.14 beside it. A script follows the latest version unless you pin the previous one in the editor.
Can main be async?
Keep main synchronous: it is called as a normal function. Call asyncio.run(...) inside it when you need async code.
Can my script call a website?
No. Scripts run with no network access. Data comes in through inputs, integrations and variables, and a flow’s HTTP Request step makes outside calls.