diff --git a/docs/docs/get-started/basic-concepts.md b/docs/docs/get-started/basic-concepts.md
index 5fe94293e1..1c3f4a604e 100644
--- a/docs/docs/get-started/basic-concepts.md
+++ b/docs/docs/get-started/basic-concepts.md
@@ -10,13 +10,13 @@ Package
A package defines the set up logic for a containerized backend. Packages can be accessed via Github locators.
-```bash
+```console
kurtosis run github.com/kurtosis-tech/basic-service-package
```
Packages can accept a set of parameters, defined by the package author, which enable the package consumer to modify their deployed backend at a high-level without needing to know how to configure each individual service.
-```bash
+```console
kurtosis run github.com/kurtosis-tech/basic-service-package \
'{"service_a_count": 2,
"service_b_count": 2,
@@ -27,31 +27,19 @@ kurtosis run github.com/kurtosis-tech/basic-service-package \
Enclave
-----------
-An enclave is a "walled garden" in which Kurtosis runs a containerized backend. Enclaves can run anywhere that you have a Docker engine or a Kubernetes cluster. The main purposes of an enclave are resource isolation and "garbage collection". With an "enclave remove" command (`kurtosis enclave rm`), you can destroy all of the resources used to set up your environment and leave nothing hanging around on your machine(s).
+An enclave is a "walled garden" in which Kurtosis runs a containerized backend. Enclaves can run anywhere that you have a Docker engine or a Kubernetes cluster. The main purposes of an enclave are resource isolation and "garbage collection".
-Plan
------------
-
-The "plan" is the series of instructions, encoded in a package, that runs in an enclave. Each instruction in a plan is a basic building block for spinning up a containerized backend. You can see the plan that a package will run by "dry-running" the package:
-
-```bash
-kurtosis run --dry-run github.com/kurtosis-tech/basic-service-package
-```
-
-Rendered Plan
+With an "enclave remove" command (`kurtosis enclave rm`), you can destroy all of the resources used to set up your environment and leave nothing hanging around on your machine(s).
-```title="Steps in the Plan"
-> render_templates
-
-> add_services configs={"service-a-1": ServiceConfig(image="h4ck3rk3y/service-a", ports={"frontend": PortSpec(number=8501, application_protocol="http")}, files={"/app/config": "slender-boulder"})}
-
-> render_templates
+Files Artifact
+-----------
-> add_services configs={"service-b-1": ServiceConfig(image="h4ck3rk3y/service-b", ports={"frontend": PortSpec(number=8501, application_protocol="http")}, files={"/app/config": "purple-comet"}, cmd=["false"])}
+A files artifact is a set of files shipped with, or generated by, a package. Files artifacts are typically used for rendering configuration files that must be dynamically generated when an environment spins up, or for shipping static configuration files that must be shared across multiple services.
-> render_templates
+When you run a package, you can see the files artifacts that the package uses in the enclave output:
-> add_services configs={"service-c-1": ServiceConfig(image="h4ck3rk3y/service-c", ports={"frontend": PortSpec(number=8501, application_protocol="http")}, files={"/app/config": "arctic-oak"}, env_vars={"PARTY_MODE": "false"})}
+```console
+kurtosis run github.com/kurtosis-tech/basic-service-package
```
-
+![files-artifact-output-concepts.png](/img/home/files-artifact-output-concepts.png)
\ No newline at end of file
diff --git a/docs/docs/get-started/get-started.md b/docs/docs/get-started/get-started.md
index c205bb2e61..6acedd6e4f 100644
--- a/docs/docs/get-started/get-started.md
+++ b/docs/docs/get-started/get-started.md
@@ -16,7 +16,7 @@ To quickly see what Kurtosis feels like, check out the example snippets below:
### Local Deploy on Docker
-```bash
+```console
kurtosis run github.com/kurtosis-tech/basic-service-package
```
@@ -34,7 +34,7 @@ kurtosis run github.com/kurtosis-tech/basic-service-package
### Local deploy with feature flag and different numbers of each service
-```bash
+```console
kurtosis run github.com/kurtosis-tech/basic-service-package \
'{"service_a_count": 2,
"service_b_count": 2,
@@ -56,10 +56,10 @@ kurtosis run github.com/kurtosis-tech/basic-service-package \
### Remote deploy on Kubernetes
-```bash
+```console
kurtosis cluster set remote-kubernetes; kurtosis gateway > /dev/null 2>&1 &
```
-```bash
+```console
kurtosis run github.com/kurtosis-tech/basic-service-package \
'{"service_a_count": 2,
"service_b_count": 2,
diff --git a/docs/docs/get-started/installing-the-cli.md b/docs/docs/get-started/installing-the-cli.md
index 6ee0273cb5..dfbba8fae5 100644
--- a/docs/docs/get-started/installing-the-cli.md
+++ b/docs/docs/get-started/installing-the-cli.md
@@ -1,7 +1,7 @@
---
-title: Installing Kurtosis
+title: Install Kurtosis
id: installing-the-cli
-sidebar_label: Installing Kurtosis
+sidebar_label: Install Kurtosis
slug: /install
sidebar_position: 2
---
@@ -13,31 +13,18 @@ import TabItem from '@theme/TabItem';
-
-The instructions in this guide will walk you through installing the latest version of Kurtosis.
-
-:::info
-We're working on a cloud-hosted version of Kurtosis that doesn't require installing anything. If this interests you, let us know [here](https://mp2k8nqxxgj.typeform.com/to/U1HcXT1H) and we'll let you know when it's ready!
-:::
-
-If you already have Kurtosis installed and you're looking to upgrade to latest, [see here][upgrade-guide].
-
-If you're looking to install a historical version instead, [see here][install-historical-guide].
+The instructions in this guide will walk you through installing the latest version of Kurtosis.
I. Install & Start Docker
-----------------
1. If you don't already have Docker installed, follow the instructions [here][docker-install] to install the Docker application specific to your machine (e.g. Apple Intel, Apple M1, etc.).
-1. Start the Docker daemon (e.g. open Docker Desktop)
-1. Verify that Docker is running:
+2. Start the Docker daemon (e.g. open Docker Desktop)
+3. Verify that Docker is running:
```bash
docker image ls
```
-:::note
-For some users, Kurtosis fails to run if Docker was not installed in `sudo` mode. We have a workaround detailed in [#1140](https://github.com/kurtosis-tech/kurtosis/issues/1140) while we work on a more graceful solution, outlined in [#1469](https://github.com/kurtosis-tech/kurtosis/issues/1469).
-:::
-
II. Install the CLI
-------------------------
@@ -134,7 +121,7 @@ kurtosis version
III. (Optional) Add command-line completion
--------------------------------
-Kurtosis supports command-line completion to allow completing subcommands and dynamic values (e.g. enclave name during `enclave inspect`). This isn't required, but we believe it significantly enhances the Kurtosis experience for those who are using . If you'd like to install it, see [these instructions][installing-command-line-completion].
+Kurtosis supports optional command-line completion to allow completing subcommands and dynamic values (e.g. enclave name during `enclave inspect`). If you'd like to install it, see [these instructions][installing-command-line-completion].
Run the quickstart
------------------
diff --git a/docs/docs/get-started/quickstart.md b/docs/docs/get-started/quickstart.md
index 02e6d7db38..a581dbbdc6 100644
--- a/docs/docs/get-started/quickstart.md
+++ b/docs/docs/get-started/quickstart.md
@@ -7,188 +7,183 @@ toc_max_heading_level: 2
sidebar_position: 3
---
-Introduction
-------------
+This guide takes ~5 minutes and will walk you through running a containerized application using the Kurtosis CLI. You'll install Kurtosis, deploy an application from a Github locator, inspect your running environment, and then modify the deployed application by passing in a JSON config.
-Welcome to the [Kurtosis][homepage] quickstart! This guide takes ~5 minutes and will walk you through how to use a Kurtosis package to spin up a distributed system over Docker. Specifically, you will use the [ethereum-package][ethereum-package] to bootstrap and start-up a private Ethereum testnet.
-
-Kurtosis is a platform for packaging and launching environments of containerized services and serve two types of users: the author of an environment definition, referred to as a [Kurtosis package][packages-reference], and the consumer or user of the environment definition. This quickstart is intended to put you in the shoes of the consumer - someone who needs a quick and easy way to get a production-like environment to develop and test changes against for your distributed system. A separate guide is [available here][how-to-set-up-postgres-guide] to introduce you to the world of Kurtosis package authoring and how one might define and build an environment with Kurtosis for themselves or for their team.
+Install Kurtosis
+--------------------
+Before you get started, make sure you have:
+* [Installed Docker](https://docs.docker.com/get-docker/) and ensure the Docker Daemon is running on your machine (e.g. open Docker Desktop). You can quickly check if Docker is running by running: `docker image ls` from your terminal to see all your Docker images.
+* [Installed Kurtosis](https://docs.kurtosis.com/install/#ii-install-the-cli) or [upgrade Kurtosis to the latest version](https://docs.kurtosis.com/upgrade). You can check if Kurtosis is running using the command: `kurtosis version`, which will print your current Kurtosis engine version and CLI version.
-Further reading about what Kurtosis is and what problems Kurtosis aims to solve, is available on our [introduction page][homepage]. To learn more about our motivations behind starting Kurtosis, go [here][why-kurtosis-explanation].
+Run a basic package from Github
+---------------------------------------
-This guide is in a "code along" format, which means you are expected to follow the code examples and run the Kurtosis CLI commands on your local machine. Everything you run in this guide is free, public, and does not contain any sensitive data.
+Run the following in your favorite terminal:
-:::tip What You'll Do
-1. Install Kurtosis and Docker, if you haven't already.
-2. Configure how you want your distributed system to be spun up, using parameters that are passed in at runtime.
-3. Run a single command to spin up your network.
-:::
+```console
+kurtosis run github.com/kurtosis-tech/basic-service-package --enclave quickstart
+```
-TL;DR Version
+You should get output that looks like:
-This quickstart is in a "code along" format. You can also dive straight into running the end results and exploring the code too.
-
-**Open the Playground: [Start](https://gitpod.io/?autoStart=true&editor=code#https://github.com/kurtosis-tech/ethereum-package)**
+![quickstart-default-run.png](/img/home/quickstart-default-run.png)
-Click on the "New Workspace" button! You don't have to worry about the Context URL, Editor or Class. It's all pre-configured for you.
-
-
+By running this command, you can see the [basic concepts][basic-concepts] of Kurtosis at work:
-If you ever get stuck, every Kurtosis command accepts a `-h` flag to print helptext. If that doesn't help, feel free to post your question in our [Github Discussions Forum][github-discussions] or ask us in our [Discord server](https://discord.gg/jJFG7XBqcY).
+1. `github.com/kurtosis-tech/basic-service-package` is the [package][basic-package] you used, and it contains the logic to spin up your application.
+2. Your application runs in an [enclave][basic-enclave], which you named `quickstart` via the `--enclave` flag.
+3. Your enclave has both services and [files artifacts][basic-files-artifact], which contain the dynamically rendered configuration files of each service.
-Install dependencies
+Inspect your deployed application
--------------------
-Before you get started, make sure you have:
-* [Installed Docker](https://docs.docker.com/get-docker/) and ensure the Docker Daemon is running on your machine (e.g. open Docker Desktop). You can quickly check if Docker is running by running: `docker image ls` from your terminal to see all your Docker images.
-* [Installed Kurtosis](https://docs.kurtosis.com/install/#ii-install-the-cli) or [upgrade Kurtosis to the latest version](https://docs.kurtosis.com/upgrade). You can check if Kurtosis is running using the command: `kurtosis version`, which will print your current Kurtosis engine version and CLI version.
-Define how your system should look like
----------------------------------------
+Command-click, or copy-and-paste to your browser, the URL next to the service called `service-c-1` in your CLI output. This local port binding is handled automatically by Kurtosis, ensuring no port conflicts happen on your local machine as you work with your environments. You should see a simple frontend:
+
+![quickstart-default-service-c-frontend.png](/img/home/quickstart-default-service-c-frontend.png)
-Kurtosis environment definitions, referred to here on as [Kurtosis packages][packages-reference], support parameterization out of the box. This means your teams or your communities can leverage the same package with different configurations for their specific use-case, eliminating the need to maintain different Bash scripts or `docker-compose.yml` files per use of the environment definition.
-
-You're now going to create a file to house the parameters that you will pass in at runtime when your system starts up. Check out the README for the [ethereum-package][ethereum-package] to see the full list of configuration options and flags available for use.
-
-Create a file titled: `network_params.yaml` in your home directory, populate it with the below contents, and save your file:
-```yaml
-participants:
- - el_client_type: geth
- el_client_image: ethereum/client-go:latest
- el_client_log_level: ''
- el_extra_params: []
- cl_client_type: lighthouse
- cl_client_image: sigp/lighthouse:latest
- cl_client_log_level: ''
- beacon_extra_params: []
- validator_extra_params: []
- builder_network_params:
- count: 2
-network_params:
- network_id: '3151908'
- deposit_contract_address: '0x4242424242424242424242424242424242424242'
- seconds_per_slot: 12
- slots_per_epoch: 32
- num_validator_keys_per_node: 64
- preregistered_validator_keys_mnemonic: 'giant issue aisle success illegal bike spike
- question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy
- very lucky have athlete'
- deneb_for_epoch: 500
-verifications_epoch_limit: 5
-global_client_log_level: info
-additional_services: []
+Service C depends on Service A and Service B, and has a configuration file containing their private IP addresses that it can use to communicate with them. To check that this is true, copy the files artifact containing this config file out of the enclave:
+```console
+kurtosis files download quickstart service-c-rendered-config
```
-The arrays in the `participant` object enables you to define the specific Ethereum client types and respective image tags you want to use in your network, alongside any extra parameters for the validator, beacon, or builder as well as some useful flags for the verbosity of log lines. In this example you'll be using the `latest` image tags for the Geth and Lighthouse clients and have specified `2` nodes to be spun up.
-Meanwhile, the `network_params` object defines the specific parameters for the network, including traits like the `network_id`, `seconds_per_slot`, and `slots_per_epoch`.
+This will put the `service-c-rendered-config` [files artifact][files-artifacts-reference] on your machine. You can see its contents with:
-Lastly, there are a few fields that let you, as a consumer, define the log verbosity level and whether or not you'd like additional services and infrastructure to be spun up with your distributed system. In this example, you will not spin up extra monitoring tools (via the `launch_additional_service` field) or Proposer-Builder Separation (PBS) infrastructure (via the `mev_type` field).
+```console
+cat service-c-rendered-config/service-config.json
+```
+You should see the rendered config file with the contents:
+```
+{
+ "service-a": [{"name": "service-a-1", "uri": "172.16.12.4:8501"}],
+ "service-b": [{"name": "service-b-1", "uri": "172.16.12.5:8501"}]
+}
+```
-Spin up your system!
---------------------
-Great! You're now ready to bring up your own network. Simply run:
+In this step, you saw two ways to interact with your enclave:
+
+1. Accessing URLs via automatically generated local port bindings
+2. Transferring [files artifacts][files-artifacts-reference] to your machine, for inspection
+
+More ways to interact with an enclave
+
+You can also do a set of actions you would expect from a standard Docker or Kubernetes deployments, like:
+1. Shell into a service: `kurtosis service shell quickstart service-c-1`
+2. See a service's logs: `kurtosis service logs quickstart service-c-1`
+3. Execute a command on a service: `kurtosis service exec quickstart service-c-1 'echo hello world'`
+
+
+
+Modify your deployed application with a JSON config
+----------
+
+Kurtosis packages take in JSON parameters, allowing developers to make high-level modifications to their deployed applications. To see how this works, run:
+
+```console
+kurtosis run --enclave quickstart github.com/kurtosis-tech/basic-service-package \
+ '{"service_a_count": 2,
+ "service_b_count": 2,
+ "service_c_count": 1,
+ "party_mode": true}'
+```
+
+This runs the same application, but with 2 instances of Service A and Service B (perhaps to test high availability), and a feature flag turned on across all three services called `party_mode`. Your output should look like:
+
+![quickstart-params-output.png](/img/home/quickstart-params-output.png)
+
+If you go to the URL of any of the services, for example Service C, you will see the feature flag `party_mode` is enabled:
+
+![quickstart-service-c-partying.png](/img/home/quickstart-service-c-partying.png)
+
+Each service is partying, but they're each partying for different reasons at the configuration level. By changing the JSON input to the package, you did all of these:
+- Changed number of instances of Service A and Service B
+- Turned on a feature flag on Service A using its configuration file
+- Turned on a feature flag on Service B using a command line flag to its server process
+- Turned on a feature flag on Service C using an environment variable on its container
+
+To inspect how each of these changes happened, check out the following:
+
+See that the count of each service changed
+
+You can see 2 instances of Service A and 2 instances of Service B in the CLI output:
+
+![quickstart-params-output.png](/img/home/quickstart-params-output.png)
+
+You can verify that the configuration file of Service C has been properly changed so it can talk to all 4 of them:
+
+```console
+kurtosis files download quickstart service-c-rendered-config
+```
```console
-kurtosis run github.com/kurtosis-tech/ethereum-package --args-file ~/network_params.yaml --enclave eth-network
+cat service-c-rendered-config/service-config.json
+```
+You should see the rendered config file with the contents:
+```
+{
+ "service-a": [{"name": "service-a-1", "uri": "172.16.16.4:8501"},{"name": "service-a-2", "uri": "172.16.16.7:8501"}],
+ "service-b": [{"name": "service-b-1", "uri": "172.16.16.5:8501"},{"name": "service-b-2", "uri": "172.16.16.8:8501"}]
+}
```
-Kurtosis will then begin to spin up your private Ethereum testnet by interpreting the instructions in the Kurtosis package, validating the plan to ensure there are no conflicts or obvious errors, and then finally executes the plan (read more about multi-phase runs [here][multi-phase-runs-reference]). Kurtosis first spins up an isolated, ephemeral environment on your machine called an [enclave][enclaves-reference] where all the services and [files artifacts][files-artifacts-reference] for your system will reside in. Then, those services will be bootstrapped and required files generated to start up the system.
+
-You will see a stream of text get printed in your terminal as Kurtosis begins to generate genesis files, configure the Ethereum nodes, launch a Grafana and Prometheus instance, and bootstrap the network together. In ~2 minutes, you should see the following output at the end:
+See a feature flag turned on by a configuration file on disk
+Service A has the `party_mode` flagged turned on by virtue of its configuration file. You can see that with by downloading the `service-a-rendered-config` files artifact, as you've seen before:
+
+```console
+kurtosis files download quickstart service-a-rendered-config
+```
```console
-INFO[2023-08-28T13:05:31-04:00] ====================================================
-INFO[2023-08-28T13:05:31-04:00] || Created enclave: eth-network ||
-INFO[2023-08-28T13:05:31-04:00] ====================================================
-Name: eth-network
-UUID: e1a41707ee8e
-Status: RUNNING
-Creation Time: Mon, 28 Aug 2023 13:04:53 EDT
-
-========================================= Files Artifacts =========================================
-UUID Name
-a662c7c74685 1-lighthouse-geth-0-63
-6421d80946ce 2-lighthouse-geth-64-127
-a1ad3962f148 cl-genesis-data
-730d585d5ec5 el-genesis-data
-c1e452ad7e53 genesis-generation-config-cl
-284cde692102 genesis-generation-config-el
-b03a5b7b9340 geth-prefunded-keys
-013f5d8708fa prysm-password
-
-========================================== User Services ==========================================
-UUID Name Ports Status
-202516f0ff8f cl-1-lighthouse-geth http: 4000/tcp -> http://127.0.0.1:65191 RUNNING
- metrics: 5054/tcp -> http://127.0.0.1:65192
- tcp-discovery: 9000/tcp -> 127.0.0.1:65193
- udp-discovery: 9000/udp -> 127.0.0.1:64174
-66bdfbd6c066 cl-1-lighthouse-geth-validator http: 5042/tcp -> 127.0.0.1:65236 RUNNING
- metrics: 5064/tcp -> http://127.0.0.1:65237
-b636913d4d03 cl-2-lighthouse-geth http: 4000/tcp -> http://127.0.0.1:65311 RUNNING
- metrics: 5054/tcp -> http://127.0.0.1:65312
- tcp-discovery: 9000/tcp -> 127.0.0.1:65310
- udp-discovery: 9000/udp -> 127.0.0.1:51807
-e296eefa1710 cl-2-lighthouse-geth-validator http: 5042/tcp -> 127.0.0.1:65427 RUNNING
- metrics: 5064/tcp -> http://127.0.0.1:65428
-4df1beb0203d el-1-geth-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:65081 RUNNING
- rpc: 8545/tcp -> 127.0.0.1:65079
- tcp-discovery: 30303/tcp -> 127.0.0.1:65078
- udp-discovery: 30303/udp -> 127.0.0.1:55146
- ws: 8546/tcp -> 127.0.0.1:65080
-581a0fe5de77 el-2-geth-lighthouse engine-rpc: 8551/tcp -> 127.0.0.1:65130 RUNNING
- rpc: 8545/tcp -> 127.0.0.1:65132
- tcp-discovery: 30303/tcp -> 127.0.0.1:65131
- udp-discovery: 30303/udp -> 127.0.0.1:49475
- ws: 8546/tcp -> 127.0.0.1:65129
-4980884d9bb0 prelaunch-data-generator-cl-genesis-data RUNNING
-3174baf6a6ff prelaunch-data-generator-el-genesis-data RUNNING
+cat service-a-rendered-config/service-config.json
+```
+You should see the config file contents with the feature flag turned on:
+```
+{
+ "party_mode": true
+}
```
-Thats it! You now have a full, private Ethereum blockchain on your local machine.
+
-The first section that gets printed contains some basic metadata about the enclave that was spun up. This includes the name of the enclave `eth-network`, its [Resource Idenfitier](https://docs.kurtosis.com/advanced-concepts/resource-identifier/), your enclave's status, and the time it was created.
+See a feature flag turned on by an command line argument
-Next, you'll see a section dedicated to [Files Artifacts](https://docs.kurtosis.com/advanced-concepts/files-artifacts/), which are Kurtosis' first-class representation of data inside your enclave, stored as compressed TGZ files. You'll notice there are configuration files for the nodes, grafana, and prometheus as well as private keys for pre-funded accounts and genesis-related data. These files artifacts were generated and used by Kurtosis to start the network and abstracts away the complexities and overhead that come with generating validator keys and getting genesis and node config files produced and mounted to the right containers yourself.
+Service B has the `party_mode` flag turned on by virtue of a command line flag. To see this, run:
+```console
+kurtosis service inspect quickstart service-b-1
+```
-Lastly, there is a section called `User Services` which display the number of services (running in Docker containers) that make up your network. You will notice that there are 2 Ethereum nodes comprised of 3 services each (an EL client, a CL beacon client, and a CL validator client) and 2 genesis data generators for each the CL and EL. Each of these services are running in Docker containers inside your local enclave & Kurtosis has automatically mapped each container port to your machine's ephemeral ports for seamless interaction with the services running in your enclave.
+You should see, in the output, the CMD block indicating that the flag was passed as a command line argument to the server process:
+```console
+CMD:
+ --
+ --party-mode
+```
-Why Kurtosis packages - from a consumer's perspective
------------------------------------------------------
-Kurtosis was built to make building distributed systems as easy as building a single server app. Kurtosis aims to achieve this by bridging the environment definition author-consumer divide. Tactically, this means making it dead simple for a consumer (like yourself) to pick up an environment definition, spin it up, and deploy it the way you want, where you want - all without needing to know specialized knowledge about how the system works or how to use Kubernetes or Docker.
+
-Specifically, this guide showed you:
-- ***The power of parameterizability***: as a consumer of the environment definition, having both the knowledge and means to configure the system to spin up the way you need it is incredibly valuable - a big reason why Kurtosis packages are meant to be parameterized. In this guide, you created the `network_params.yaml` file which contained your preferences for how the network should look and passed them in to Kurtosis with relative ease. The author of the package need only define the arguments and flags available for a consumer, and Kurtosis handles the rest once those are passed in at runtime.
-- ***Portable and easy to wield***: a major contributor to the author-consumer divide comes from the knowledge gap between the author and consumer regarding the infrastruture and tools needed to instantiate a system. Understanding how Kubernetes works, what Bash script to use at which step, and working with Docker primitivies are all pain points we believe Kurtosis alleviates. In this guide, you installed Kurtosis and ran a single command to get your system up and running. This same command will work anywhere, over Docker or on Kubernetes, locally or on remote infrastructure. We believe this portability and ease of use are requirements for bridging the author-consumer divide.
+See a feature flag turned on by an environment variable
-There are many other reasons why we believe Kurtosis is the right tool for bridging the author-consumer divide. Check out the [next guide][how-to-set-up-postgres-guide] to experience the workflow for a package author and how Kurtosis improves the developer experience for an environment definition author.
+Service C has the `party_mode` flag turned on by virtue of an environment variable. To see the environment variable flag is indeed enabled, run:
-Conclusion
-----------
-And that's it - you've successfully used Kurtosis to instantiate a full, private Ethereum testnet - one of the most complex distributed systems in todays time.
+```console
+kurtosis service inspect quickstart service-c-1
+```
-Let's review. In this tutorial you have:
+In the output, you will see a block called `ENV:`. In that block, you should see the environment variable `PARTY_MODE: true`.
-1. Installed Kurtosis and Docker.
-2. Configure how your system should look like, using parameters that are passed in at runtime.
-3. Run a single command to spin up your network.
-4. Reviewed how package consumers benefit from using environment definitions written for Kurtosis.
+
-:::tip
-In this short guide, you went through the workflow that a Kurtosis package consumer would experience. It is strongly encouraged that you check out the [next guide][how-to-set-up-postgres-guide] where you will set up a Postgres database and an API server to as a package author.
-:::
-
-This was still just an introduction to Kurtosis. To dig deeper, visit other sections of our docs where you can read about [what Kurtosis is][homepage], understand the [architecture][architecture-explanation], and hear our [inspiration for starting Kurtosis][why-kurtosis-explanation].
+With a JSON (or YAML) interface to packages, developers don't have to dig through low-level docs, or track down the maintainers of Service A, B, or C to learn how to deploy their software in each of these different ways. They just use the arguments of the package to get their environments the way they want them.
-To learn more about how Kurtosis is used, we encourage you to check out our [`awesome-kurtosis` repository][awesome-kurtosis-repo], where you will find real-world examples of Kurtosis in action, including:
-- How to run a simple [Go test][go-test-example] or [Typescript test][ts-test-example] against the app we just built
-- The [Ethereum package][ethereum-package], used by the Ethereum Foundation, which can be used to set up local testnets
-- A parameterized package for standing up an [n-node Cassandra cluster with Grafana and Prometheus][cassandra-package-example] out-of-the-box
-- The [NEAR package][near-package] for local dApp development in the NEAR ecosystem
+--------
-Finally, we'd love to hear from you. Please don't hesitate to share with us what went well, and what didn't, using `kurtosis feedback` to file an issue in our [Github](https://github.com/kurtosis-tech/kurtosis/issues/new/choose) or to [chat with our cofounder, Kevin](https://calendly.com/d/zgt-f2c-66p/kurtosis-onboarding).
+Now that you've use the Kurtosis CLI to run a package, inspect the resulting environment, and then modify it by passing in a JSON config, you can take any of these next steps:
-Lastly, feel free to [star us on Github](https://github.com/kurtosis-tech/kurtosis), post your questions on our [Github Discussions Forum][github-discussions], [join the community in our Discord](https://discord.gg/6Jjp9c89z9), and [follow us on Twitter](https://twitter.com/KurtosisTech)!
+- To continue working with Kurtosis by using packages that have already been written, take a look through our [code examples][code-examples].
+- To learn how to deploy packages over Kubernetes, instead of over your local Docker engine, take a look at our guide for [running Kurtosis over k8s][running-in-k8s]
+- To learn how to write your own package, check out our guide on [writing your first package][write-your-first-package].
-Thank you for trying our quickstart. We hope you enjoyed it.
@@ -196,7 +191,12 @@ Thank you for trying our quickstart. We hope you enjoyed it.
[installing-kurtosis-guide]: ../get-started/installing-the-cli.md
[installing-docker-guide]: ../get-started/installing-the-cli.md#i-install--start-docker
[upgrading-kurtosis-guide]: ../guides/upgrading-the-cli.md
-[how-to-set-up-postgres-guide]: write-your-first-package.md
+[basic-concepts]: ../get-started/basic-concepts.md
+[basic-enclave]: ../get-started/basic-concepts.md#enclave
+[basic-package]: ../get-started/basic-concepts.md#package
+[basic-files-artifact]: ../get-started/basic-concepts.md#files-artifact
+[write-your-first-package]: ../get-started/write-your-first-package.md
+[running-in-k8s]: ../guides/running-in-k8s.md
[architecture-explanation]: ../advanced-concepts/architecture.md
@@ -231,6 +231,7 @@ Thank you for trying our quickstart. We hope you enjoyed it.
[plan-reference]: ../advanced-concepts/plan.md
[future-references-reference]: ../advanced-concepts/future-references.md
[files-artifacts-reference]: ../advanced-concepts/files-artifacts.md
+[code-examples]: ../code-examples.md
diff --git a/docs/docs/guides/installing-historical-versions.md b/docs/docs/guides/installing-historical-versions.md
index cfd7b22c34..e8b530434a 100644
--- a/docs/docs/guides/installing-historical-versions.md
+++ b/docs/docs/guides/installing-historical-versions.md
@@ -1,6 +1,6 @@
---
-title: Installing Historical Versions
-sidebar_label: Installing Historical Versions
+title: Installing Old Versions
+sidebar_label: Installing Old Versions
slug: /install-historical
sidebar_position: 4
---
@@ -12,9 +12,9 @@ import TabItem from '@theme/TabItem';
-Occasionally, using historical versions of Kurtosis is necessary. For example, when working with a [Starlark](../advanced-concepts/starlark.md) Kurtosis package that was initially developed with an older version of Kurtosis, we might want rollback our Kurtosis version to ensure the version of Kurtosis we are running is compatible with the Kurtosis package.
+Occasionally, using older versions of Kurtosis is necessary. For example, when working with a [Starlark](../advanced-concepts/starlark.md) Kurtosis package that was initially developed with an older version of Kurtosis, we might want rollback our Kurtosis version to ensure the version of Kurtosis we are running is compatible with the Kurtosis package.
-The instructions in this guide will walk you through installing and using a historical version of Kurtosis. To see what versions are available, reference our [changelog](../changelog.md).
+The instructions in this guide will walk you through installing and using an older version of Kurtosis. To see what versions are available, reference our [changelog](../changelog.md).
If you're looking to install the latest version of Kurtosis, [see here][install-kurtosis].
diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 4d255715cd..3f40d3c3e1 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -65,7 +65,7 @@ const config = {
logo: {
alt: 'Kurtosis',
src: 'img/brand/kurtosis-logo-white-text.png',
- href: 'https://kurtosis.com',
+ href: 'https://docs.kurtosis.com',
target: '_self'
},
items: [
diff --git a/docs/static/img/home/basic-service-default-output.png b/docs/static/img/home/basic-service-default-output.png
index d5829c18b5..2e0d98ae28 100644
Binary files a/docs/static/img/home/basic-service-default-output.png and b/docs/static/img/home/basic-service-default-output.png differ
diff --git a/docs/static/img/home/basic-service-modified-cli-output.png b/docs/static/img/home/basic-service-modified-cli-output.png
index 3d95ecb388..496aa46d98 100644
Binary files a/docs/static/img/home/basic-service-modified-cli-output.png and b/docs/static/img/home/basic-service-modified-cli-output.png differ
diff --git a/docs/static/img/home/files-artifact-output-concepts.png b/docs/static/img/home/files-artifact-output-concepts.png
new file mode 100644
index 0000000000..f5ebf31537
Binary files /dev/null and b/docs/static/img/home/files-artifact-output-concepts.png differ
diff --git a/docs/static/img/home/quickstart-default-run.png b/docs/static/img/home/quickstart-default-run.png
new file mode 100644
index 0000000000..0207529628
Binary files /dev/null and b/docs/static/img/home/quickstart-default-run.png differ
diff --git a/docs/static/img/home/quickstart-default-service-c-frontend.png b/docs/static/img/home/quickstart-default-service-c-frontend.png
new file mode 100644
index 0000000000..b64ccc6a1f
Binary files /dev/null and b/docs/static/img/home/quickstart-default-service-c-frontend.png differ
diff --git a/docs/static/img/home/quickstart-params-output.png b/docs/static/img/home/quickstart-params-output.png
new file mode 100644
index 0000000000..31a365b43b
Binary files /dev/null and b/docs/static/img/home/quickstart-params-output.png differ
diff --git a/docs/static/img/home/quickstart-service-c-partying.png b/docs/static/img/home/quickstart-service-c-partying.png
new file mode 100644
index 0000000000..a3f718fbd1
Binary files /dev/null and b/docs/static/img/home/quickstart-service-c-partying.png differ
diff --git a/docs/static/img/home/service-c-default.png b/docs/static/img/home/service-c-default.png
index 4f660cc58e..9479abc9eb 100644
Binary files a/docs/static/img/home/service-c-default.png and b/docs/static/img/home/service-c-default.png differ
diff --git a/docs/static/img/home/service-c-partying.png b/docs/static/img/home/service-c-partying.png
index 4b2fb845f2..7b4691b8d6 100644
Binary files a/docs/static/img/home/service-c-partying.png and b/docs/static/img/home/service-c-partying.png differ