Kestra Scripts Guide – Multi-Language Tasks and Runners

Kestra is language agnostic. Write your business logic in any language.

Run scripts in any language with Kestra

You can orchestrate custom business logic written in any language, and you can also build custom plugins in Java.


There are dedicated plugins for Python, R, Julia, Ruby, Node.js, Powershell and Shell. You can also run any language using the Shell plugin too.

By default, these tasks run in individual Docker containers (taskRunner type: io.kestra.plugin.scripts.runner.docker.Docker). You can overwrite that default behavior if you prefer that your scripts run in a local process (taskRunner type: io.kestra.plugin.core.runner.Process) instead.

If you use the Enterprise Edition, you can also run your scripts on dedicated remote workers by specifying a workerGroup property or using other Task Runner types for AWS, GCP, Azure, and Kubernetes.

The following pages dive into details of each task runner, supported programming languages, and how to manage dependencies.

Supported Programming Languages in Kestra

See which languages have dedicated Kestra script plugins and how to run other languages with Shell tasks and Docker.

Commands vs Script Tasks in Kestra

Understand the differences between Script and Commands tasks in Kestra and when to use each for your workflows.

Inline Scripts in Docker – Write Code Directly in Tasks

Writing code directly inside your task.

Task Runners in Scripts – Control Execution Environment

Manage execution environments for your scripts using Kestra's Task Runners, including Docker and Process runners.

Build a Custom Docker Image for Script Tasks

Build and use custom Docker images to package dependencies and environments for your Kestra script tasks.

Install Dependencies at Runtime for Script Tasks

Learn how to install dependencies at runtime for your script tasks using beforeCommands or prebuilt Docker images.

Outputs and Metrics from Scripts – Send Data Back to Kestra

Send outputs and metrics from your scripts back to Kestra to track metadata, pass data between tasks, and visualize performance.

Input and Output Files in Script Tasks

Learn how to manage input and output files within Kestra script tasks. Pass additional files to scripts using inputFiles (including Namespace Files or trigger data) and generate files for downstream tasks with the outputFiles property, supporting glob patterns.

Logging from Scripts – Send Logs to Kestra

Learn how to send logs from your Python, Node.js, and Shell scripts directly to Kestra's backend during execution.

Bind Mount Scripts into Kestra – Run Local Code

Bind-mount locally stored scripts into Kestra containers to execute code from your filesystem without importing it.

Git Clone Task – Fetch Repos for Script Workflows

Use the Git Clone task to fetch repositories into Kestra's working directory and process files in your workflows.

Working Directory Task – Share Files Across Scripts

Run multiple tasks in the same working directory sequentially.

Was this page helpful?