Python, R, Node.js and Shell Scripts​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

Programming Languages

Kestra currently supports the following programming languages: Python, R, Node.js, Shell, Powershell, Julia and Ruby.

Commands and Script tasks

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

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

DOCKER and PROCESS runners

Kestra supports two runners for scripting tasks: DOCKER and PROCESS.

Building a custom Docker image

Building a custom Docker image

This page shows how to build a custom Docker image for your script tasks.

Installing dependencies at runtime

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)

Additional languages (Rust)

Kestra is language agnostic. This section shows how to use Rust in your flows.

Bind mount

Bind mount

To run a script stored locally, you can bind-mount it to your Kestra container.

The Git Clone task

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.

Output directory

Output directory

If you want to generate files in your script to make them available for download and use in downstream tasks, you can leverage either the outputFiles property or the outputDir expression.

Outputs and metrics

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

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.