In Git
One YAML file per workflow.
Review a change in a pull request and roll it back like any other code. The editor in the UI writes the same YAML.
Each tool already automates its own step. Kestra runs the chain
between them: one YAML file in Git, with triggers, approvals,
retries and a log of every run.
Open source, self-hosted, and your first flow runs in minutes.
Free and open source. Runs on a laptop, a single VM or Kubernetes.
Trusted in production by:
A request comes in with a hostname. When the change needs sign-off, the owner approves it, then Terraform creates the VM and your playbook configures it. If a step fails, the run stops there with its logs, and you restart it from that step.
Each node is a task in one YAML file, versioned in Git.
In Git
Review a change in a pull request and roll it back like any other code. The editor in the UI writes the same YAML.
No rewrite
Your playbooks, modules and scripts run as they are, each in its own container. Kestra runs the order between them.
Around every step
A schedule, a webhook or a Git push starts a flow. A failed step retries, a pause waits for approval, and every run keeps its logs.
2,600+ open-source plugins, installed the first time a flow uses them.
Nothing is rewritten up front. Each piece moves when you are ready.
| Today | becomes | Kestra |
|---|---|---|
| Cron jobs and systemd timers on scattered hosts | Schedule triggers that run the same scripts, with logs and alerts in one place | |
| Ansible playbooks run from a laptop, Semaphore or AWX | Ansible tasks with the same playbooks and inventories | |
| Terraform or OpenTofu applied from a laptop or a CI job | Terraform and OpenTofu tasks on your existing modules and state backend | |
| Rundeck or Jenkins jobs stored in a database | Flows stored as YAML files in Git |
Using VMware Cloud Foundation?
vRA and vRO are no longer sold on their own. They ship inside VMware Cloud Foundation, licensed per core, so the automation bill follows the size of the hypervisor footprint, not how much you automate. The workflows built on them do not move by themselves.
Read the vRA migration guideMigration Assistant
The lifecycle of a VM in Kestra, one person at a time: who requests it, who approves it, who runs it, and what each of them sees.
The same flows run on both editions, so nothing is rewritten when you move.
Yes. The engine, the UI and the open-source plugins are Apache 2.0 and on GitHub, and the open-source edition runs in production on its own. The Enterprise Edition adds what a shared, multi-team instance needs: individual logins, access control, secret managers and audit logs.
Kestra runs on the JVM and needs at least 2 vCPUs and 4 GiB of memory. A single standalone server with Postgres is enough for a homelab or a small team, and server roles split apart when you need to scale.
Only for the quickstart. Script tasks run in containers by default, which is why the one-liner mounts the Docker socket and runs as root. You can run tasks as plain processes with the Process task runner instead, or deploy with rootless Podman.
As base64-encoded environment variables prefixed with SECRET_, read in flows with the secret() function, so values never sit in the YAML. Vault, AWS, Azure, Google Cloud and other secret managers connect in the Enterprise Edition.
Semaphore and AWX put a UI on running playbooks, and Rundeck runs jobs and runbooks. Kestra chains the steps around them: take a Proxmox snapshot, run the playbook, call a webhook, post to Slack, all in one versioned YAML file. You can also call your existing jobs from a flow and move them across later.
The open-source edition is free. The Enterprise Edition is not priced per execution: the price depends on how broadly it is deployed and the support tier, and we walk through it on the call.
Apache 2.0, self-hosted on your own machines.