30 commands in 4 groups, from Kestra’s official documentation (Server CLI + kestractl).
| Command | Action | What it does |
|---|---|---|
| kestra server standalone | Start All-in-One Server | Runs every Kestra component (webserver, scheduler, executor, worker) in a single process — the standard single-node deployment. |
| kestra server local | Start Local Dev Server | Development mode with an embedded H2 file database; no external backend needed. |
| kestra plugins install <plugin> | Install Plugins | Standalone JARs ship without plugins; install what your tasks need before starting the server. |
| kestra flow validate <file> | Validate a Flow | Checks a YAML flow definition against a running server; the CI/CD workhorse. |
| kestra flow namespace update <ns> <dir> | Deploy Flows to Namespace | Uploads a directory of flows into a namespace; add --no-delete to keep flows not present in the directory. |
| Command | Action | What it does |
|---|---|---|
| kestractl config add | Add Auth Context | Stores a server, tenant, and credentials in ~/.kestractl/config.yaml; basic auth for OSS, API token for Enterprise. |
| kestractl flows list | List Flows | Lists flows across all namespaces, or one namespace; add --output json for scripting. |
| kestractl flows deploy <dir> | Deploy Flows | Deploys a directory with --namespace, --override, and --fail-fast flags for release pipelines. |
| kestractl flows validate <path> | Validate Flow or Directory | Validates a single YAML file or a whole directory before deployment. |
| kestractl flows export | Export Flows to ZIP | Exports a namespace's flows with --namespace and --output-file; export-by-ids and export-by-query narrow the set. |
| kestractl flows import <zip> | Import Flows from ZIP | Restores flows from an exported archive. |
| kestractl flows enable <ns> <flow> | Enable a Flow | Turns a disabled flow back on; disable-by-query and enable-by-query handle bulk changes. |
| kestractl flows disable <ns> <flow> | Disable a Flow | Stops a flow from triggering without deleting it. |
| kestractl flows delete <ns> <flow> | Delete a Flow | Removes a flow; delete-by-query bulk-deletes by filter. |
| kestractl flows graph <ns> <flow> | Show Flow Topology | Prints the task graph of a deployed flow; --revision inspects older versions. |
| Command | Action | What it does |
|---|---|---|
| kestractl executions run <ns> <flow> | Run a Flow | Starts an execution; --wait blocks until completion and --output json returns the result for scripts. |
| kestractl executions list | List Executions | Filters by --namespace and --flow. |
| kestractl executions get <id> | Execution Details | Shows one execution; aliases show and describe. |
| kestractl executions watch <id> | Watch in Real Time | Follows an execution live and exits non-zero on FAILED, KILLED, or CANCELLED — ideal as a CI gate. |
| kestractl executions kill <id> | Kill Execution | Stops a running execution. |
| kestractl executions pause <id> | Pause Execution | Suspends a running execution. |
| kestractl executions resume <id> | Resume Execution | Continues a paused execution. |
| kestractl executions restart <id> | Restart Execution | Re-runs a finished or failed execution. |
| Command | Action | What it does |
|---|---|---|
| kestractl namespaces update | Update a Namespace | Manages namespace settings and plugin defaults; list, get, create, and delete complete the set. |
| kestractl nsfiles upload <ns> <dir> | Upload Namespace Files | Syncs local files into namespace storage with --path, --override, and --fail-fast. |
| kestractl kv set | Set Key-Value Pair | Stores a value with an optional TTL; update, get, and delete manage existing keys. |
| kestractl kv get | Get Key-Value Pair | Reads a stored value; note that kv list requires token auth. |
| kestractl logs list | List Execution Logs | Lists logs; search, download, and delete complete the log commands. |
| kestractl plugins list | List Compatible Plugins | Shows plugins compatible with a given Kestra version. |
| kestractl plugins download | Download Plugins | Fetches plugin JARs to a local directory for offline installs. |
Kestra ships two distinct command-line tools, and knowing which is which saves real confusion. The classic kestra binary is the server CLI: it starts components (kestra server standalone runs everything in one process, kestra server local adds an embedded H2 database for development), installs plugins into the runtime, and carries the two deployment commands CI/CD pipelines have used for years. kestractl is the newer Go-based client: it talks to a running server’s API and manages flows, executions, namespaces, key-value pairs and more from anywhere. In short — server and runtime operations go to kestra, day-to-day resource management goes to kestractl.
A typical release runs four commands. kestractl flows validate ./flows/ checks every YAML file; kestractl flows deploy ./flows --namespace prod pushes them (with --override and --fail-fast for strictness); kestractl executions run with --wait fires a smoke-test flow and blocks until it finishes; and kestractl executions watch follows it live, exiting non-zero on FAILED, KILLED, or CANCELLED — which makes it a natural CI gate with no extra scripting. Teams on the classic toolchain can do the first two steps with kestra flow validate and kestra flow namespace update instead; note that namespace update deletes flows missing from the directory unless you pass --no-delete.
Almost every kestractl command accepts --output json, which turns the CLI into a query tool: list flows, pull an execution’s state, or read a KV pair straight into jq. Execution control is unusually complete for a CLI — kestractl executions pause, resume, restart and kill cover the whole lifecycle without touching the UI. Authentication lives in named contexts created by kestractl config add (basic auth for open source, API tokens for Enterprise), so switching between a local instance and production is one flag, not an environment surgery.
kestra is the server CLI: it starts components (server standalone, server local), installs plugins, and handles runtime operations. kestractl is the API client for daily work — flows, executions, namespaces, KV pairs. Use kestra for the machine, kestractl for the resources.
kestra server standalone runs the webserver, scheduler, executor and worker together — the standard single-node setup. For development, kestra server local uses an embedded H2 file database so nothing else needs installing.
Validate with kestractl flows validate ./flows/, then deploy with kestractl flows deploy ./flows --namespace prod. The classic equivalents are kestra flow validate and kestra flow namespace update — with the caveat that namespace update deletes flows absent from the directory unless --no-delete is passed.
Yes, two ways: kestractl executions run with --wait blocks until completion, and kestractl executions watch follows an execution live and exits non-zero on FAILED, KILLED, or CANCELLED — handy as a CI gate.
The standalone JAR ships without plugins. Install them first with kestra plugins install (for example the script plugins), then start the server.
Through named contexts: kestractl config add stores the host, tenant and credentials in ~/.kestractl/config.yaml. Open source uses --username/--password, Enterprise uses an API --token; the default context applies automatically.
Open your assistant with this page preloaded as the source — great for follow-up questions like "which of these work in other apps?"