Release Notes


  • Gracefully handle error from removing files that don’t exist when syncing.


  • Gracefully update PVCs rather than deleting and recreating them.


  • When a service has a script field but no name field, its name is the name of the deployment level object from the output of the script field.


  • Commands specified in the script field of the workspace YAML file now have access to the KELDA_NAMESPACE environment variable.
  • CRDs can now be deployed by Kelda. Using this change requires upgrading the Kelda Minion as well as the Kelda CLI.


Added a field to the Workspace config to ignore YAML files.


Fixed a bug with updating services with PVCs.


kelda login now requires a token for authentication.


Kelda now supports deploying the output of a script. This is helpful for integrating with templating tools such as kustomize.

To use this, modify your Workspace configuration to use the script field:

  - name: "hello"
  script: ["kustomize", "build", "./overlays/development"]

See here for the full kustomize example. The example doesn’t have any development services, so run it with kelda dev --no-sync.


This release adds the kelda dev --demo flag to make it even easier to experience Kelda.


This is the alpha release for Hosted Kelda. Hosted Kelda lets you dive into developing with Kelda without bothering with bernetes cluster yourself.


  • Allow upgrading from 0.14.0 without redeploying namespaces.


  • Make it easier to connect to the Kelda demo cluster. You now just need to set your context in ~/.kelda.yaml to kelda-demo-cluster.


  • Gracefully update Service objects. Before, we would delete and recreate the object, which would cause the service’s cluster IP to change.

  • You no longer need a license in order to run Kelda in trial mode (one developer per cluster).


  • Enable compression to the minion.

    This is an API breaking change, so the minion must be upgraded when the CLI is updated.

  • Change our syncing algorithm to track individual files rather than directories containing files. Syncing to a directory that already contains files now ignores any pre-existing files, rather than removing them.

  • Changing the sync command without changing any files now triggers the new command to be run.

  • Changes to file modification time and permissions are now synced. If you need to restart the remote process, you can now just run touch <tracked file>.

  • Files synced to an existing directory are now placed within the directory. For example, the sync rule {from: "index.js", to: "/"} applied to index.js syncs the file to /index.js.

  • You can now just drop your Kube YAML into your Workspace configuration directory without grouping them into services first. If no services are specified in the workspace.yaml, we now deploy all the YAML in the Workspace directory.


  • kelda logs now supports getting logs for multiple services at once.


  • Fixed a bug where Kelda would watch all files in the parent directory when syncing a file. This resulted in permission issues if there was a file in the directory with 000 permissions.
  • Pre-emptively error when Kelda configuration is malformed.
  • Prompt users to update CLI when it’s incompatible with the Minion.


  • Support Helm charts in Workspace configuration.
  • Automatically increase file watching limit. This fixes the “too many open files” error in most cases.


  • Add the kelda config get-context and kelda config get-namespace commands, which are helpful for scripting.


  • Make services under development accessible even if they fail their readiness checks.
  • Don’t prompt for known values when running the Kelda demo.


This release makes various bug fixes to support syncing and running executable files.


This release makes it easier to try out Kelda. It introduces the qk8s script to spin up Kubernetes clusters, and makes various improvements to the commands run as part of the quickstart.

It also reintroduces the namespace prioritization feature so that it’s only enabled on Kubernetes clusters that support the PriorityClass resource.


  • Added kelda upgrade-cli, which makes it easy to upgrade the CLI to match the minion’s version.
  • Simplify the initial Kelda installation process. Kelda can now be installed via a shell script downloaded by curl.


  • Added kelda update, which updates the container images in the development environment to the latest versions available upstream.
  • Added support for “init commands” during file syncs. These are commands that are only triggered when certain files are changed. For example, this can be used to only run npm install when package-lock.json is changed.


  • We’ve changed the way we transmit errors between the minion and CLI. This is a breaking change and requires updating both the CLI and Minion.
  • We now require a license file to install Kelda, and automatically collect usage analytics.


  • Fix bug where changes to Kubernetes manifests wouldn’t get deployed.


Release 0.9.0 makes it easier to install the Minion, and makes some UX improvements around error handling.


The first release using our new versioning scheme.