Event-Driven Declarative Orchestrator
Get started with Kestra in 4 minutes.
Kestra for VS Code
Author, run, and inspect Kestra flows in VS Code: live validation, {{ }} autocompletion, run from the editor with live logs, topology preview, namespace files, and documentation, all backed by the Kestra instance you connect to.
Features
- Live validation as you type: the connected instance's validate endpoint runs on each edit and surfaces the same errors as
flow validate.
{{ }} autocompletion for Pebble expressions: context variables, functions, filters, and the flow's own input and task ids.
- Instance-aware schema: task and property autocompletion plus structural validation from your instance's installed plugin versions, not a generic all-plugins schema.
- Missing required fields: inline suggestions for the required properties a task still needs.
- Run from the editor: validate, deploy, and execute the open flow on the connected instance, with live logs and per-task status.
- Topology preview: the flow's graph rendered from the YAML as you edit, with live task states during a run.
- Namespace files: browse and edit a namespace's files as a folder, or push a local file or folder up to a namespace.
- Documentation: the Kestra docs and plugin reference beside the editor, following the cursor.
Requirements
Setup
Set the URL of your Kestra instance, and a tenant if it is multi-tenant:
"kestra.api.url": "http://localhost:8080/api/v1",
"kestra.api.tenant": "main"
On a secured instance you are prompted for credentials on the first request. It supports basic auth (username and password), an Enterprise Edition API token (sent as a Bearer token), and a legacy JWT session token. Use the Kestra: Sign in command to set or change credentials, and Kestra: Sign out to clear them.
Internal or corporate certificates
If Sign in reports the instance is not reachable, first confirm the instance itself is reachable. Open it in a browser, or run:
curl https://your-instance/api/v1/configs
If the browser loads it or curl returns a response (for example 401 Unauthorized) but Sign in still fails, VS Code's extension host is not trusting your instance's certificate. This is common when the instance uses HTTPS with an internal CA: your machine trusts the certificate, but VS Code does not by default.
Enable this setting and reload the window:
"http.systemCertificatesNode": true
It loads the operating system's certificate store, so the extension uses the certificates your machine already trusts.
Usage
Schema and autocompletion
The flow schema is downloaded from the instance set in kestra.api.url, so it matches that instance's installed plugin versions. It is cached per instance and re-downloaded when the URL or tenant changes. A property valid in latest but missing on your instance is therefore flagged. The Download Kestra schema command forces a refresh, for example after installing a plugin.
The schema attaches to any open YAML detected as a flow (it declares id, namespace, and tasks or triggers). To restrict it to a specific folder instead, set up a file mapping.
Running a flow
On a flow file, run Kestra: Save and run flow from the command palette, the play button in the editor title bar, or Ctrl+Alt+R (Cmd+Alt+R on macOS). The extension validates the flow, deploys the current editor content to the instance, prompts for any declared inputs, starts an execution, and streams its logs with a link to the execution page.
To deploy the buffer without executing it, use Kestra: Save flow to Kestra (the save button in the editor title bar).
By default the run opens in a panel with a status badge, a log-level filter, and collapsible per-task logs. Set kestra.run.output to logs to use a native output channel instead.
Topology preview
On a flow file, run Kestra: Preview flow topology (or the graph button in the editor title bar) to open the flow's graph beside the editor. The graph is generated by the connected instance from the current buffer and refreshes as you type. Clicking a task node jumps to its YAML, and the rotate button flips the layout between vertical and horizontal. While a run streams, task nodes color with their live state.
Namespace files
Kestra: Open namespace mounts a namespace as a folder: browse, edit, create, rename, and delete its files, with each save writing back to the instance. Editing is live, there is no local copy. The picker lists namespaces you can access, or you can type one.
Kestra: Upload file to namespace pushes the active file, or the files selected in the Explorer, to a namespace. Kestra: Sync folder to namespace walks a local folder and uploads every file, creating directories as needed and overwriting files at the same path. It does not delete files that exist only on the instance. Names matching kestra.namespaceFiles.exclude (metadata and secret files like .env and *.pem by default) are skipped.
All three respect the instance's permissions. You can only reach namespaces and files your Kestra user is allowed to, and a denied request reports why instead of failing silently.
Documentation
The Open Kestra documentation action opens the Kestra docs beside the editor, matching the docs tab in the Kestra UI: search, breadcrumb navigation across plugins and their tasks, and content versioned to the connected instance. Placing the cursor on a task shows that plugin's documentation with its examples, properties, and outputs.
Configuration
kestra.api.url: URL of your Kestra instance.
kestra.api.tenant: Tenant id for multi-tenant instances. Leave empty for instances that do not use tenant-scoped API routes.
kestra.run.output: Where to show a flow run, the styled panel (default) or the native logs output channel.
kestra.run.logLevel: Minimum log level streamed when running a flow. Defaults to INFO.
kestra.schema.match-path: Restrict the schema to files under a path, for example _flows.
kestra.namespaceFiles.exclude: Names skipped when uploading or syncing a folder to a namespace. A leading or trailing * is a wildcard, for example *.pem or .env.*. Defaults to common metadata and secret files.
Contributing
See CONTRIBUTING.md for building, packaging, and releasing the extension.
Stay up to date
We release new versions every month. Give the main repository a star to stay up to date with the latest releases and get notified about future updates.
