Python, R, Node.js and Shell Scripts
Kestra is language agnostic. You can orchestrate custom business logic written in Python
, R
, Julia
, Ruby
, Node.js
, Powershell
and Shell
scripts, and you can also build custom plugins in Java.
By default, these tasks run in individual Docker containers (runner: DOCKER
). You can overwrite that default behavior if you prefer that your scripts run in a local process (runner: PROCESS
) instead.
If you use a commercial version of Kestra, you can also run your scripts on dedicated remote workers by specifying a workerGroup
property.
The following pages dive into details of each runner, supported programming languages and how to manage dependencies.
Programming Languages
Kestra currently supports the following programming languages: Python, R, Node.js, Shell, Powershell, Julia and Ruby.
Commands and Script tasks
For each of the supported languages (a.o. Python, R, Node.js, Shell), Kestra provides two types of tasks: Script and Commands.
Inline Scripts in Docker
To get started with a Script task, paste your custom script inline in your YAML workflow definition along with any other configuration.
DOCKER and PROCESS runners
Kestra supports two runners for scripting tasks: DOCKER and PROCESS.
Building a custom Docker image
This page shows how to build a custom Docker image for your script tasks.
Installing dependencies at runtime
There are several ways of installing custom packages for your workflows. This page shows how to install dependencies at runtime using the beforeCommands property.
Additional languages (Rust)
Kestra is language agnostic. This section shows how to use Rust in your flows.
Bind mount
To run a script stored locally, you can bind-mount it to your Kestra container.
The Git Clone task
This task allows you to clone a Git repository into a working directory and then use the files from that repository in downstream tasks.
Input and Output Files
Outputs and metrics
Your scripts can send outputs and metrics to Kestra's backend during flow execution. This allows you to track custom metadata and visualize it across multiple executions of a flow.
Working Directory
This task allows you to run multiple tasks sequentially in the same working directory. It is useful when you want to share files from Namespace Files or from a Git repository across multiple tasks.
Was this page helpful?