Release Notes


June 5, 2023

The latest release is `0.77.1`. Below is a collection of user-facing changes we've shipped since last week. Visit our [docs]( for a more detailed changelog of all changes. # Features - [0.77.1] We've implemented the `PortSpec wait` functionality on the Kubernetes backend, ensuring feature parity with our Docker backend. More details in [#640]( # Improvements - [0.77.1] As part of our work to open-source Kurtosis' Kubernetes backend, we've added a Golang testsuite against k8s in our CI to increase reliability and helps ensure a smooth user experience. Addressess [#654](

May 29, 2023

The latest release is `0.77.0`. Below is a collection of user-facing changes we've shipped since last week. Visit our [docs]( for a more detailed changelog of all changes. # Features - [0.77.0] We've open-sourced our Kubernetes backend with [#638](! Users can now run their environments on a k8s cluster. Read [this guide]( to learn more on how to get started and sign up for early access to [Kurtosis Kloud]( if you're looking for a stress-free Kurtosis on remote k8s setup. In the coming weeks, we plan to invest heavily in usability and product improvements, so please don't hesitate to reach out if you need support. # Improvements - [0.76.8] We've standardized the errors returned when Starlark is run via the SDK to simply `err == nil`. More details in [#634]( # Bug Fixes - [0.76.9] We have fixed a bug where the Kurtosis engine fails frequently when `kurtosis engine restart` is called. More details in [#635]( - [0.76.8] Kurtosis will now roll back to use the previously-set k8s cluster when `kurtosis cluster set` fails.

May 15, 2023

The latest release is `0.76.6`. Below is a collection of user-facing changes we've shipped since last week. Visit our [docs]( for a more detailed changelog of all changes. # Features - [0.76.4] Kurtosis now natively supports Windows for Kurtosis versions starting from 0.75.5! While we still encourage users to use [Windows Subsystem for Linux (WSL)](, the option to download a native executable is now available [here]( To see the full install instructions, go [here]( - [0.76.4] We've added a [sign-up form for users who wish to get early access for Kurtosis Kloud]( If you're looking to test and develop on a distributed system in the cloud, look no further! - [0.76.4] The Kurtosis CLI now supports the ability to print `WARN` logs when a user calls or uses a deprecated or soon-to-be deprecated instruction, type, or field. The intent behind this new feature is to reduce the likelihood of a user running into breaking changes and to help users stay up to speed with the latest and greatest versions of the product. # Improvements - [0.76.5] We've added tab completion support for file paths (from your current working directory) for the below CLI commands. Addresses [#601]( and [#254](

* kurtosis dump
* kurtosis enclave dump
* kurtosis engine logs
* kurtosis files download
* kurtosis files rendertemplates
* kurtosis files upload
* kurtosis context add


May 1, 2023

The latest release is `0.76.3`. For a more detailed changelog, including non-user facing changes, please visit our [docs]( # Breaking Changes - [0.76.0] We've added automatic port waiting for all TCP and UDP ports by default. This means upon service startup, Kurtosis will automatically check to confirm that the service's ports are open and ready to receive traffic. This behavior can be disabled or its timeout changed, depending on your use case, with the [`PortSpec` constructor]( This is a breaking change as the default timeout (15 seconds) may not be enough for your service(s). # Bug Fixes - [0.76.1] Fixed an issue where the CLI would print an ambiguous `WARN` line when a user runs `kurtosis` without any arguments, flags, or commands. Running `kurtosis` without any arguments, flags, or commands will now instead be interpreted as if you ran `kurtosis --help` which will print out all valid arguments and flags you can use.

April 24, 2023

The latest release is `0.75.9`. Below is a collection of user-facing changes we've shipped since last week. Visit our [docs]( for a more detailed changelog of all changes. # Features - [0.75.9] Users can now run a starting bash command with the `--exec` flag upon accessing a service container's shell with the [`kurtosis service shell`]( command. - [0.75.5] We've added an `extract` dictionary field for the [`ExecRecipe`]( that can be used to extract specific parts from a response body using [jquery]( Fixes [#503]( # Improvements - [0.75.9] Replaced runtime values in outputs of future references with real values. See our docs on [future references]( for more details. - [0.75.9] We've raised the file size limit to 100 MB when using the [`kurtosis files download`]( and [`kurtosis files upload`]( CLI commands. - [0.75.7] Historical versions of our docs will now only display the latest patch releases for each minor version in the past. Fixes: [#487]( - [0.75.6] Improved the formatting of error messages in the recipe extraction logic to help with debugging - [0.75.2] Renamed all code and docs mentions of "network partitioning" to "subnetworking". Fixes [#443]( # Bug Fixes - [0.75.4] Fixed a bug where [`ReadyCondition`]( did not properly support the [`ExecRecipe`]( - [0.75.2] Fixed a bug where the `wait` command would continue past the specified timeout threshold. Addressed [#477](

April 17, 2023

The latest release is `0.75.1`. For a more detailed changelog, visit our [docs]( # Bug Fixes: - [0.75.1] The `kurtosis files download` CLI command now properly considers `--enclave` as an arg instead of a flag. Previously, specifying the enclave to download files from was required but that was not explicit since it was incorrectly labelled as a flag. Fixes: [#460](

April 10, 2023

The latest release is `0.75.0`. For a more detailed changelog, visit our [docs]( # Breaking Changes - [0.75.0] We've removed the `kurtosis config init` CLI command as the Kurtosis configuration file is now automatically initialized upon engine startup. Fixes [#435](

April 3, 2023

The latest release is `0.74.0`. For a more detailed changelog, visit our [docs]( # Breaking Changes - [0.74.0] We've renamed the [`ReadyCondition` Starlark instruction](, from `ReadyConditions`, to better clarify that each time this custom type is used, it is explicitly defining a single condition for Kurtosis to use as the readiness check after a service is started. Users using this Starlark instruction will need to update it syntactically. - [0.73.0] The service_name argument is now the first argument in the [`exec`](, [`request`](, and [`wait`]( Starlark instructions, compared to before when it was the `recipe` argument. Kurtosis packages that use these Starlark instructions may need to be updated to pass in the `service_name` first now before other positional arguments. This is not a breaking change for users who use named arguments in their custom Starlark types. - [0.72.0] The `args` object is now parsed as a dictionary instead of as a struct and is empty by default. Users may need to update Starlark scripts that use arguments to avoid a breaking change. - [0.71.0] We’ve renamed the service_name argument to name for the [`update_service`](, [`add_service`](, and [`remove_service`]( Starlark instructions. Users may need to update Kurtosis packages that use these instructions with the updated argument name. # Features - [0.73.0] We’ve reduced the verbosity and length of Starlark output errors to make them easier to reason about and understand. The full stack trace paths can still be viewed when a user passes in the [`--cli-log-level debug` flag]( - [0.71.1] Tab completion support for Enclave names has been added to kurtosis services logs. - [0.70.6] We’ve added [Search functionality on our documentation](, with support for older versions of our docs. # Improvements - [0.74.0] Error messages from all CLI commands are now colored red, making it easier to spot and debug errors. - [0.73.1] Reduced the verbosity and language in our Github issue templates for easier readability. - [0.72.1] We’ve clarified the help text printed when using `kurtosis files download` to make it easier for users to understand how to use the command to export files artifacts from their enclaves. - [0.71.1] A timestamp suffix is now appended to the name of the default output directory when no output directory is specified while using `kurtosis dump`, making it easier to locate and use the log outputs. - [0.71.1] Shortened the taglines and removed the title prefixes for all our Github issues templates. - [0.70.6] We’ve shortened the number of log lines that gets printed when an error is encountered executing a Starlark script. The level of detail in the logs for any command can be configured using the [`--cli-log-level flag`]( Read more about configuring the log level of details here. - [0.70.5] The Kurtosis CLI and Engine version are now both printed for `kurtosis version`, making it more obvious easier to reason about upgrades in cases where a user has upgraded the CLI, but have yet to restart the Engine to apply the change. - [0.70.4] We’ve added additional words that will be used for auto-name generation of artifacts, in line with the theme we currently use. # Bug Fixes - [0.73.2] Update various links in our documentation. - [0.73.1] Re-organize the sidebar in the documentation to split out reference content into [CLI](, [Starlark](, and various Concepts. - [0.73.1] Fix various outdated internal links and typos in our documentation. - [0.71.0] Fix a typo in our quickstart code snippet. - [0.70.6] Fix a reindex bug with the Search feature on our doc.

March 28, 2023

The latest release is `0.70.3`. For a more detailed changelog, visit our [docs]( # Features - [0.70.1] To make it easier to debug issues with the Kurtosis engine, we’ve added a new CLI command, called `kurtosis engine logs`, that can be used to export both running and stopped Kurtosis engine container logs to an optionally specified output directory on a user’s local machine. These logs are incredibly helpful for our team when troubleshooting bugs or issues. Read more about this command [here]( # Improvements - [0.70.1] Added an example to clarify the correct syntax needed for installing an earlier version of Kurtosis. For example, installing version 0.68.6 with Homebrew:

brew install kurtosis-tech/tap/kurtosis-cli@0.68.6

- [0.70.1] Reformatted the dependencies section in our [Github readme]( to make it easier to follow and get started with Kurtosis using the Github readme - [0.70.1] The service object returned by both the `add_service` and `add_services` Starlark instruction now returns the name field. - [0.70.3] We’ve made Github the default feedback path for the `kurtosis feedback` CLI command and have also added new flags to this command as well to support being able to bring the user directly to the bug report, feature request and docs issue Github issues templates, straight from the CLI. Read more about the new flags for this command [here](‍ - [0.70.3] Kurtosis will now check that the `service_name` value contains allowed characters and we’ve made the error logs cleaner to reason about when this happens for smoother debugging/troubleshooting. # Fixes - [0.70.1] Fixed a bug where running `kurtosis engine start` would log an ambiguous line about the engine starting with a blank or unknown image. Now, `kurtosis engine start` will be more specific about the exact container image and version being used to start that particular instance of the Kurtosis engine. - [0.70.1] Fixed a bug in our [Quickstart]( where some parts of the code snippets were invalid Starlark code because not all of the arguments were named.

March 23, 2023

The latest release is `0.70.0`. For a more detailed changelog, visit our [docs]( # Breaking Changes - [0.70.0] We have removed the service_namefields from the following Starlark types: [`ExecRecipe`](, [`GetHttpRequestRecipe`](, and [`PostHttpRequestRecipe`]( The `service_name` must instead be declared in the [`exec`](, [`request`](, and [`wait`]( Starlark instructions, where this field is now mandatory. - [0.70.0] Users who previously specified the `service_name` in the [`ExecRecipe`](, [`GetHttpRequestRecipe`](, and [`PostHttpRequestRecipe`]( types must migrate the `service_name` declaration to the [`exec`](, [`request`](, and [`wait`]( Starlark instructions. # Features - [0.70.0] Service readiness can now be checked after a service is started to confirm that it is ready to receive connections and traffic. The specific conditions to be checked can be defined using the new [`ReadyConditionsrecipe` ]( These conditions are passed into the [`ServiceConfig.ReadyConditions`]( field which can be used when adding services using the `add_service` or `add_services` instruction.

March 21, 2023

The latest release is `0.69.0`. For a more detailed changelog, visit our [docs]( # Breaking Changes - [0.69.0] We’ve renamed all references of `--enclave-identifier` and `--service-identifier` to simply `--enclave` and `--service`, respectively, and have also removed all references to `enclave-id`. This will break any scripts or CI configurations that depend on those old references. This renaming impacts the following CLI commands:

- enclave inspect
- enclave rm
- enclave rm
- enclave stop
- enclave dump
- files download
- files rendertemplate
- files storeservice
- files storeweb
- files upload
- service add
- service rm
- service logs
- service shell
- run

- [0.69.0] The default timeout for the wait instruction has been reduced to 10 seconds, from 15 minutes. This can be a breaking change for packages that were authored to rely on the previous behavior (i.e. waiting for 15 minutes). More info about this instruction can be found [here]( - [0.69.0] When using the `exec` and `request` instructions, you may now use a new `acceptable_codes` field to specify the specific acceptable response codes needed for the instruction to pass and as well as a new `skip_code_check` field to enforce response code checks. The default values for `acceptable_codes` are 2XX codes and the default value for `skip_code_check` is `false`. Read more about using these instructions [here]( and [here]( # Features - [0.69.0] The [@KurtosisTech Twitter]( page can be opened directly from the CLI by running: [`kurtosis twitter`]( Folks can follow to stay apprised of important announcements and exciting updates we share through Twitter. - [0.69.0] Running `kurtosis enclave inspect` will now print any files artifacts registered within that enclave, in addition to the services that are running within the enclave and the enclave’s status. Read more about enclave inspect [here]( - [0.68.9] We’ve added a simple [Pull Request (PR) template]( to encourage contributors to add more details and context for their PRs to the Kurtosis codebase. Read more about contributing to Kurtosis [here]( - [0.68.9] After running a Kurtosis package using `kurtosis run`, the CLI will now automatically print the state and contents of the enclave used for the package (essentially performing an enclave inspect command on the enclave in the context of the run command). Read more about the run command [here]( - [0.68.9] Enclaves can now be added with subnetworking enabled using a new `--with-subnetworking` flag for the `kurtosis enclave add` CLI command. The flag is set to `false` by default, but can be enabled when running a package that requires [subnetworking capabilities](, like [simulating a network failure in your system]( # Improvements - [0.69.0] It is now much easier to know when to [upgrade Kurtosis]( and to understand the versions of both the Kurtosis CLI and engine you are running on, because Kurtosis will now: emit a `WARN` log line whenever the Kurtosis engine version exceeds the CLI version and, emit an `ERROR` log line whenever the CLI version exceeds the engine version. - [0.69.0] We’ve fixed some typos and simplified the language in our documentation about the: [`GetHttpRequestRecipe`](, [`PostHttpRequestRecipe`](, [`request`]( instruction to help users better understand when this instruction could be valuable for their workflows. - [0.69.0] To make it easier to send feedback to our team, we’ve added [additional documentation]( about the various flags and args that can be used with the kurtosis feedback command! - [0.69.0] We’ve improved the look of the Calendly banner in our docs page to be more visible and easier to use when grabbing time with our team to get help or ask questions. - [0.69.0][0.68.13] We’ve made some usability improvements to our [Github Issue templates]( to make filing Bug Reports and Feature Requests smoother and easier to use. - [0.69.0] The body of the request used in the `PostHttpRequestRecipe` is now optional and is empty by default. Read more about this recipe type [here]( - [0.68.13] The content type field for the `PostHttpRequestRecipe` Starlark instruction is now optional, with application/json being the default if this field is not set. Read more about how to make HTTP POST requests within your Kurtosis package [here]( - [0.68.13] We’ve revamped our [Quickstart]( guide to more accurately reflect the current capabilities of Kurtosis, which includes the many new features and improvements we’ve made since the previous version of the Quickstart was published. We encourage users, both new and existing, to try it out and let us know how it goes! - [0.68.13] We’ve changed how often Kurtosis checks for, and warns the user about, version discrepancies between the CLI and the Kurtosis engine. Before, the versions were checked every time a command was run with the CLI, but now the versions are checked on an hourly basis instead. This change reduces the number of repeated `WARN` lines a user previously saw when using Kurtosis with a version discrepancy. - [0.68.11] Both the `RUNNING` and `STOPPED` statuses of enclaves, their API containers, and services within those enclaves are now color-coded to make it easier to understand the state of your enclaves and the services within/on them. - [0.68.11] To improve readability and confusion, only the status of the API Container (and not the API Container Host GRPC port & proxy port) will get printed when running enclave inspect for an enclave. - [0.68.9] [Command-line completion]( with Kurtosis will now only suggest the names of enclaves and services, instead of both the names and UUIDs, improving the readability and usability of command-line completion. - [0.68.8] We’ve re-ordered the sidebar in our CLI docs for the guides on how to install the CLI and how to install historical versions of the CLI. # Fixes - [0.68.12] The [`wait` Starlark instruction]( on a given plan will now throw a validation error if a `service_name` is not specified. The CLI would previously hang forever when a service_name was not specified. - [0.68.8] Fixed a bug where running `kurtosis clean` after a kurtosis engine restart would only print the UUIDs, but not the names, of removed artifacts for enclaves and services created on the previous instance of a Kurtosis engine. Enclave names and artifacts are now persisted through engine restarts.