Experiment and Debug Workflows with Kestra Playground
For the complete documentation index, see llms.txt. For a full content snapshot, see llms-full.txt. Append.mdto anykestra.io/docs/*URL for plain Markdown.
Available on:Open Source EditionEnterprise Edition
Playground mode supports iterative flow development by running tasks individually rather than executing the full workflow.
Playground mode lets you build workflows iteratively, one task at a time. This feature is especially useful when building data processing flows, where you typically start with a task extracting data, and you need to inspect the output before knowing what kind of transformation might be required. Then, you can work on that transformation task without rerunning the extraction task.
If you’ve ever worked with a Jupyter notebook, you might be familiar with this pattern: you run the first cell to extract data, then you run the second cell to transform that data, and you can rerun the second cell multiple times to test different transformations without having to rerun the first cell again. Kestra’s Playground mode allows you to do the same within your flows.
Running tasks in Playground mode
Playground mode runs tasks one at a time via their Play button. Each task reuses the cached outputs of all upstream tasks that have already been played, so only the selected task re-executes. Run all tasks and Run all downstream tasks are available to run multiple tasks in sequence.
Kestra tracks up to 10 recent playground runs, so you can go back to inspect the outputs of previously executed tasks. Older runs are purged automatically. Playground runs won’t appear in the regular execution list to avoid confusion with production executions.
Playground mode requires a DAG (Directed Acyclic Graph) structure, so you cannot run a task before its upstream tasks have been played.
When reused results are reset
Playground reuses earlier task outputs as long as nothing that affects them has changed. It starts a fresh run when you change:
- a task before the one you run
- the flow
inputs - the flow
labels - the flow
variables
Playground only tracks the flow definition. Reused results can still be out of date after a change to namespace files, KV store entries, secrets, or an external system a task reads from. Use Run all tasks to start a fresh run when you change any of these.
To see Playground in action, check out the demo below.
id: playground_data_pipelinenamespace: company.teamdescription: | A step-by-step data pipeline designed for the Playground feature. Run each task individually to inspect outputs before proceeding to the next stage.labels: team: engineering type: demo
tasks: - id: fetch_products type: io.kestra.plugin.core.http.Request uri: https://jsonplaceholder.typicode.com/todos?_limit=10 method: GET
- id: extract_titles type: io.kestra.plugin.core.debug.Return format: "{{ outputs.fetch_products.body | jq('map(select(.completed == false)) | map(.title)') }}"
- id: count_pending type: io.kestra.plugin.core.debug.Return format: "{{ outputs.fetch_products.body | jq('[.[] | select(.completed == false)] | length') }}"
- id: build_report type: io.kestra.plugin.core.debug.Return format: "Pending tasks: {{ outputs.count_pending.value }} | First item: {{ outputs.extract_titles.value | jq('.[0]') }}"Was this page helpful?