Skip to content

Scripts

A script is a versioned, reusable piece of code that can be executed by a Script node inside a workflow. Scripts are language-agnostic: you write them in whichever runtime makes sense for the task.

Scripts can be written in a wide range of languages, including:

RuntimeFile extension
Python.py
TypeScript (Bun / Deno).ts
Bash / PowerShell.sh / .ps1
Go.go
PHP.php
SQL (PostgreSQL, MySQL, BigQuery, …).sql
Rust.rs

…and more. See the CLI docs for the full, current list of supported languages.

A script is a plain source file that exports a main function. Its input schema is inferred from the parameters of main. There is no separate input declaration to keep in sync:

def main(customer_id: str, dry_run: bool = False):
# ... your logic ...
return {"result": f"processed:{customer_id}"}

The parameter types and defaults determine validation and the auto-generated UI. Run orvanta generate-metadata to produce the lock and schema files that capture this for deployment.

Every push creates a new version. You can inspect a script’s history and show any previous version:

Terminal window
orvanta script history f/folder/my_script
orvanta script get f/folder/my_script

Scripts live at a path. Folder-owned scripts (f/folder/...) are shared with everyone who has access to that folder; user-owned scripts (u/user/...) are private to you. Access is governed by roles and permissions.