Schedule icon
OutputValues icon
Commands icon
Log icon

Hello World Example: Getting started with Kestra

A Hello World example flow in Kestra. Take a user input, pass values between tasks, run a shell command, and log a personalized welcome message.

Categories
Getting StartedCore

A beginner-friendly Hello World flow that introduces the core building blocks of Kestra orchestration: inputs, outputs, task chaining, logging, and scheduled triggers. It takes a user input, generates a value in one task, runs a shell command in another, then logs a friendly welcome message that combines the input with both task outputs. It solves the first problem every new orchestration user faces: understanding how data flows declaratively from inputs through tasks to logs without writing glue code.

How it works

  1. The flow declares a single user input of type STRING with a default of Rick Astley, so it runs out of the box with no configuration.
  2. first_task uses io.kestra.plugin.core.output.OutputValues to emit a message value (thrilled) that downstream tasks can reference.
  3. second_task uses io.kestra.plugin.scripts.shell.Commands to run quick shell commands and surfaces structured output via the ::{"outputs":{...}}:: convention.
  4. hello_world uses io.kestra.plugin.core.log.Log to print a greeting built from {{ inputs.user }}, {{ outputs.first_task.values.message }}, and the second task's returned data.
  5. A io.kestra.plugin.core.trigger.Schedule trigger is defined with a 0 9 * * * cron (left disabled: true) to demonstrate how recurring runs are wired up.

What you get

  • A runnable example that executes in seconds with zero external dependencies.
  • A working demonstration of passing values between tasks using outputs.
  • A clear template for reading inputs and rendering them with Pebble expressions.
  • A scheduled trigger you can enable to see automated runs.

Who it's for

  • Newcomers evaluating Kestra who want a first successful run.
  • Data and platform engineers learning the declarative YAML model.
  • Teams onboarding new members to orchestration concepts.

Why orchestrate this with Kestra

Kestra makes task dependencies, inputs, and outputs explicit in declarative YAML, so data flow is readable and versioned rather than buried in scripts. Event triggers, schedules, automatic retries, and full execution lineage are built in, giving you observability and reliability that a bare shell script or a lone cron entry cannot provide. A plain cron line can fire a command on a timer, but it cannot pass typed inputs, chain task outputs, capture per-task logs, or replay a failed run, which is exactly the gap this flow illustrates.

Prerequisites

  • A running Kestra instance (local Docker, OSS, or Cloud).

Secrets

  • None. This flow references no {{ secret('NAME') }} values and runs without credentials.

Quick start

  1. Copy this flow into your Kestra instance under the tutorial namespace.
  2. Click Execute and optionally change the user input.
  3. Open the execution to inspect the logs, outputs, and the task topology.
  4. Set disabled: false on the Schedule trigger to enable the daily 09:00 run.

How to extend

  • Replace second_task with a real script (Python, Node, or shell) that calls an API or processes a file.
  • Add more inputs and branch behavior using If or Switch tasks.
  • Chain additional tasks that consume the outputs to build a real pipeline.
  • Swap the Schedule trigger for an event trigger such as a webhook or file-detection flow trigger.

Links

Share this Blueprint
See How

New to Kestra?

Use blueprints to kickstart your first workflows.