{"id":13446838,"url":"https://github.com/kurtosis-tech/kurtosis","last_synced_at":"2026-04-02T11:48:43.514Z","repository":{"id":130012830,"uuid":"601684708","full_name":"kurtosis-tech/kurtosis","owner":"kurtosis-tech","description":"A platform for packaging and launching blockchain infra. Think docker compose for blockchain","archived":false,"fork":false,"pushed_at":"2026-03-31T09:21:11.000Z","size":171170,"stargazers_count":529,"open_issues_count":281,"forks_count":92,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-03-31T11:33:39.742Z","etag":null,"topics":["backend","cicd","containerization","deploy","devops","distributed-systems","docker","docker-compose","environment","go","infrastructure","kubernetes","networks","prototyping"],"latest_commit_sha":null,"homepage":"https://docs.kurtosistech.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kurtosis-tech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-02-14T15:44:55.000Z","updated_at":"2026-03-31T09:20:17.000Z","dependencies_parsed_at":"2023-12-20T06:31:14.355Z","dependency_job_id":"676f46e6-f69c-41e1-874b-b6c8ba157c9e","html_url":"https://github.com/kurtosis-tech/kurtosis","commit_stats":{"total_commits":1308,"total_committers":24,"mean_commits":54.5,"dds":0.8188073394495413,"last_synced_commit":"1fabfc06097ea37ee32777e4e2e83dd0d0ad7b24"},"previous_names":[],"tags_count":839,"template":false,"template_full_name":null,"purl":"pkg:github/kurtosis-tech/kurtosis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurtosis-tech%2Fkurtosis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurtosis-tech%2Fkurtosis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurtosis-tech%2Fkurtosis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurtosis-tech%2Fkurtosis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kurtosis-tech","download_url":"https://codeload.github.com/kurtosis-tech/kurtosis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurtosis-tech%2Fkurtosis/sbom","scorecard":{"id":574086,"data":{"date":"2025-08-11","repo":{"name":"github.com/kurtosis-tech/kurtosis","commit":"2b3d70426aeaf565a88f3d2d04d71dd024e6f916"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: script injection with untrusted input ' github.event.pull_request.title ': .github/workflows/check-proto-break.yml:40"],"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"26 commit(s) and 6 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'deployments' permission set to 'write': .github/workflows/push-docs.yml:18","Info: jobLevel 'contents' permission set to 'read': .github/workflows/push-docs.yml:17","Warn: no topLevel permission defined: .github/workflows/breaking-change-description-title-update.yml:1","Warn: no topLevel permission defined: .github/workflows/change-versions.yml:1","Warn: no topLevel permission defined: .github/workflows/check-proto-break.yml:1","Warn: no topLevel permission defined: .github/workflows/conventional-pr-title-checker.yml:1","Warn: no topLevel permission defined: .github/workflows/do-not-merge.yml:1","Warn: no topLevel permission defined: .github/workflows/gofmt.yml:1","Warn: no topLevel permission defined: .github/workflows/golang-package-tag.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/golangci-lint.yml:14","Info: topLevel 'contents' permission set to 'read': .github/workflows/issue-labeler.yml:8","Warn: no topLevel permission defined: .github/workflows/push-docs.yml:1","Warn: no topLevel permission defined: .github/workflows/release-please.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/breaking-change-description-title-update.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/breaking-change-description-title-update.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/breaking-change-description-title-update.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/breaking-change-description-title-update.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/breaking-change-description-title-update.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/breaking-change-description-title-update.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/change-versions.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/change-versions.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/change-versions.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/change-versions.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-proto-break.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/check-proto-break.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-proto-break.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/check-proto-break.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/check-proto-break.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/check-proto-break.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/conventional-pr-title-checker.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/conventional-pr-title-checker.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/dependabot.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/dependabot.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gofmt.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/gofmt.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gofmt.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/gofmt.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gofmt.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/gofmt.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gofmt.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/gofmt.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golang-package-tag.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/golang-package-tag.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/golang-package-tag.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/golang-package-tag.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/golangci-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/golangci-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/golangci-lint.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/golangci-lint.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/golangci-lint.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/issue-labeler.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/issue-labeler.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push-docs.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/push-docs.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/push-docs.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/push-docs.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/push-docs.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/kurtosis-tech/kurtosis/push-docs.yml/main?enable=pin","Warn: containerImage not pinned by hash: core/files_artifacts_expander/Dockerfile:1: pin your Docker image by updating alpine:3.17 to alpine:3.17@sha256:8fc3dacfb6d69da8d44e42390de777e48577085db99aa4e4af35f483eb08b989","Warn: containerImage not pinned by hash: core/server/Dockerfile:1: pin your Docker image by updating alpine:3.17 to alpine:3.17@sha256:8fc3dacfb6d69da8d44e42390de777e48577085db99aa4e4af35f483eb08b989","Warn: containerImage not pinned by hash: core/server/Dockerfile.debug:1: pin your Docker image by updating alpine:3.19 to alpine:3.19@sha256:3be987e6cde1d07e873c012bf6cfe941e6e85d16ca5fc5b8bedc675451d2de67","Warn: containerImage not pinned by hash: engine/server/Dockerfile:1: pin your Docker image by updating alpine:3.17 to alpine:3.17@sha256:8fc3dacfb6d69da8d44e42390de777e48577085db99aa4e4af35f483eb08b989","Warn: containerImage not pinned by hash: engine/server/Dockerfile.debug:2: pin your Docker image by updating alpine:3.19 to alpine:3.19@sha256:3be987e6cde1d07e873c012bf6cfe941e6e85d16ca5fc5b8bedc675451d2de67","Warn: containerImage not pinned by hash: internal_testsuites/starlark/docker-compose-package-img-build/app/Dockerfile:3","Warn: containerImage not pinned by hash: internal_testsuites/starlark/docker-compose-package-img-build/app/Dockerfile:7","Warn: containerImage not pinned by hash: internal_testsuites/starlark/image-build-package/Dockerfile:1: pin your Docker image by updating alpine:latest to alpine:latest@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Warn: containerImage not pinned by hash: internal_testsuites/starlark/image-build-package/test/test.Dockerfile:1: pin your Docker image by updating alpine:latest to alpine:latest@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Warn: downloadThenRun not pinned by hash: core/server/Dockerfile:10","Warn: downloadThenRun not pinned by hash: core/server/Dockerfile.debug:10","Warn: downloadThenRun not pinned by hash: cli/cli/scripts/build.sh:100","Info:   0 out of  14 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of  11 third-party GitHubAction dependencies pinned","Info:   0 out of   3 downloadThenRun dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned","Info:   0 out of   9 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"62 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3533 / GHSA-wq9g-9vfc-cfq9","Warn: Project is vulnerable to: GO-2021-0061 / GHSA-r88r-gmrh-7j83","Warn: Project is vulnerable to: GO-2020-0036 / GHSA-wxc4-f4m6-wwqv","Warn: Project is vulnerable to: GHSA-h74j-692g-48mq","Warn: Project is vulnerable to: GO-2025-3605 / GHSA-7vpp-9cxj-q8gv","Warn: Project is vulnerable to: GO-2024-2698 / GHSA-rhh4-rh7c-7r5v","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GO-2022-0635","Warn: Project is vulnerable to: GO-2022-0646","Warn: Project is vulnerable to: GO-2024-3269 / GHSA-p2h2-3vg9-4p87","Warn: Project is vulnerable to: GO-2024-3296 / GHSA-jwcm-9g39-pmcw","Warn: Project is vulnerable to: GO-2024-3310 / GHSA-2m9h-r57g-45pj","Warn: Project is vulnerable to: GO-2024-3295 / GHSA-55v3-xh23-96gh","Warn: Project is vulnerable to: GO-2025-3732 / GHSA-g9f5-x53j-h563","Warn: Project is vulnerable to: GO-2025-3754 / GHSA-2x5j-vhc8-9cwm","Warn: Project is vulnerable to: GO-2023-2412 / GHSA-7ww5-4wqc-m92c","Warn: Project is vulnerable to: GO-2025-3528 / GHSA-265r-hfxg-fhmg","Warn: Project is vulnerable to: GO-2024-3005 / GHSA-v23v-6jw2-98fq","Warn: Project is vulnerable to: GO-2025-3829 / GHSA-4vq8-7jfc-9cvp","Warn: Project is vulnerable to: GO-2024-2494 / GHSA-4v98-7qmw-rqr8","Warn: Project is vulnerable to: GO-2024-2492 / GHSA-9p26-698r-w4hx","Warn: Project is vulnerable to: GO-2024-2493 / GHSA-m3r6-h7wv-7xxv","Warn: Project is vulnerable to: GO-2024-2497 / GHSA-wr6v-9f75-vh2g","Warn: Project is vulnerable to: GO-2023-2331 / GHSA-8pgv-569h-w5rw","Warn: Project is vulnerable to: GO-2025-3488 / GHSA-6v2p-p543-phr9","Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-76c9-3jph-rj3q","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-w5p7-h5w8-2hfq","Warn: Project is vulnerable to: GHSA-4v9v-hfq4-rm2v","Warn: Project is vulnerable to: GHSA-9jgg-88mc-972h","Warn: Project is vulnerable to: GHSA-f9xv-q969-pqx4","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-8hc4-vh64-cxmj","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-4www-5p9h-95mh","Warn: Project is vulnerable to: GHSA-9gqv-wp59-fq42","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-rp65-9cf3-cjxr","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GO-2025-3553 / GHSA-mh63-6h87-95cp","Warn: Project is vulnerable to: GHSA-7v5v-9h63-cj86","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T17:11:14.458Z","repository_id":130012830,"created_at":"2025-08-20T17:11:14.458Z","updated_at":"2025-08-20T17:11:14.458Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","cicd","containerization","deploy","devops","distributed-systems","docker","docker-compose","environment","go","infrastructure","kubernetes","networks","prototyping"],"created_at":"2024-07-31T05:01:01.212Z","updated_at":"2026-04-02T11:48:43.508Z","avatar_url":"https://github.com/kurtosis-tech.png","language":"Go","funding_links":["https://github.com/sponsors/tedim52"],"categories":["Development with Docker","IDEs and Workspaces","Training","Users","Developer Workflow","Go"],"sub_categories":["Testing","IDEs and Workspaces"],"readme":"\n\u003cimg src=\"./readme-static-files/logo.png\" width=\"1200\"\u003e\n\n[![Follow us on X, formerly Twitter](https://img.shields.io/twitter/follow/KurtosisTech?style=social)](https://twitter.com/Kurtosistech)\n[![Number of GitHub stars](https://img.shields.io/github/stars/kurtosis-tech/kurtosis)](https://github.com/kurtosis-tech/kurtosis/stargazers)\n\n----\n\nWhat is Kurtosis?\n=================\n\nHave you ever tried to build on top of a colleague's work, or contribute to an open source project, just to get stuck on the first steps of spinning up a stack to play with? [Kurtosis](https://www.kurtosis.com) handles the complexity of spinning up ephemeral dev or test stacks so you can focus on developing, not configuring.\n\nKurtosis is formed of:\n- A packaging system for distributing backend stack definitions, which can run on docker or on kubernetes\n- A runtime with a per-stack file management system for reproducibly initializing the state of your stack\n- A set of tools to enable devs to interact with their stacks, like they do on docker or k8s\n\nWhy use Kurtosis?\n=========================\n\nKurtosis is best for:\n\n- Reusing the logic in your stack definitions for all of: local dev, scheduled testing in CI, and ad-hoc larger-scale testing on k8s clusters\n- Giving other devs a way to spin up your application, and commonly used variations of it, with one-liners, via Kurtosis' packaging and parameterization systems\n- Handling complex setup logic in your backend stack, like passing arbitrary data between services as they start up, and enforcing arbitrary wait conditions\n\nHow is Kurtosis different than Docker Compose or Helm?\n==========================\n\nKurtosis operates at a level higher than Docker Compose or Helm, and produces stacks running on either of the underlying engines (the Docker engine, or Kubernetes).\nBecause of this additional layer of abstraction, we are able to introduce several features to improve the experience of spinning up ephemeral stacks:\n\n- A per-stack file management system that enables portable state initialization for dev or test stacks\n- Stack-level parameterizability; users have a powerful and flexible way (beyond messing with env vars) to affect modifications in their stacks\n- First-class plug-and-play composability; it's expected for users to import stack definitions into larger stacks, and this experience is optimized\n- The ability to get all of the above, but running over _either_ the docker engine or k8s, at your election\n\n`NOTE: we do NOT recommend using Kurtosis to deploy long term production environments at this moment. Any issues/Discords related to production usage will be closed.`\n\nHow do I get going?\n===================\nTo see Kurtosis in action, first install it using the instructions [here](https://docs.kurtosis.com/install).\n\nThen, run the [Redis voting app Kurtosis package](https://github.com/kurtosis-tech/awesome-kurtosis/tree/main/redis-voting-app):\n\n```bash\nkurtosis run github.com/kurtosis-tech/awesome-kurtosis/redis-voting-app\n```\n\n\u003cimg src=\"./readme-static-files/redis-voting-app-run-output.png\"\u003e\n\nFinally, open the `http` link printed in the last line in your browser.\n\nIf you have an issue or feature request, we'd love to hear about it through one of the following:\n- Post your question on our [Github Discussions Forum](https://github.com/kurtosis-tech/kurtosis/discussions/new?category=q-a)\n- [Asking for help on our Discord server][discord]\n- Filing an issue on our [Github](https://github.com/kurtosis-tech/kurtosis/issues/new/choose) (which can also be done via `kurtosis feedback --bug` or `kurtosis feedback --feature`)\n- [Messaging us on Twitter][twitter]\n\n### Going further\n\nTo try more Kurtosis packages just like this one, check out the [`awesome-kurtosis` repo][awesome-kurtosis]! \n\nTo learn about how to write Kurtosis packages, check out our [quickstart][quickstart-reference].\n\nTo read about how Kurtosis works, see [our documentation][docs].\n\nTo see where we're going with the product, check out the roadmap [here](https://github.com/kurtosis-tech/kurtosis/wiki/Short%E2%80%90term-Roadmap).\n\nGot more questions? Drop them in our [Github Discussions](https://github.com/kurtosis-tech/kurtosis/discussions/new?category=q-a) where we, or other community members, can help answer.\n\nClaude Code Skills\n========================\n\nThis repository includes [Claude Code](https://claude.ai/download) skills that teach Claude how to work with Kurtosis. Skills are structured prompts in the `skills/` directory that give Claude operational knowledge about building, debugging, deploying, and managing Kurtosis enclaves.\n\n### Available Skills\n\n| Skill | Description |\n|-------|-------------|\n| `clean` | Clean up enclaves and artifacts |\n| `cli-local-build` | Build the CLI from source |\n| `cluster-manage` | Manage Kurtosis clusters |\n| `context-manage` | Manage Kurtosis contexts |\n| `docker-debug` | Debug Docker-based enclaves |\n| `docker-local-build` | Build and load Docker images locally |\n| `dump` | Dump enclave state for debugging |\n| `enclave-inspect` | Inspect running enclaves |\n| `engine-manage` | Start, stop, and restart the engine |\n| `files-inspect` | Inspect files artifacts |\n| `gateway` | Manage the Kurtosis gateway |\n| `grafloki` | Query Grafana and Loki observability |\n| `import-compose` | Import Docker Compose files |\n| `k8s-clean-cluster` | Clean Kurtosis resources from K8s |\n| `k8s-debug-pods` | Debug pods on Kubernetes |\n| `k8s-dev-deploy` | Build and deploy dev images to K8s |\n| `lint` | Lint the codebase |\n| `port-forward` | Forward ports from enclaves |\n| `portal` | Manage the Kurtosis portal |\n| `run-package` | Run Starlark packages |\n| `service-manage` | Manage services within enclaves |\n| `starlark-dev` | Develop Starlark packages |\n\n### Installing Skills\n\nSkills are auto-discovered by Claude Code when present in a project's `skills/` directory. There are several ways to install them:\n\n#### Option 1: Clone the repository (contributors)\n\nIf you're contributing to Kurtosis, skills are already included:\n\n```bash\ngit clone https://github.com/kurtosis-tech/kurtosis.git\ncd kurtosis\n```\n\nClaude Code will automatically discover the skills when you open a conversation in this directory.\n\n#### Option 2: Copy skills into your project\n\nCopy the `skills/` directory into any project where you want Claude to have Kurtosis knowledge:\n\n```bash\n# From the kurtosis repo, copy skills into your project\ncp -r /path/to/kurtosis/skills /path/to/your-project/skills\n```\n\n#### Option 3: Symlink from another project\n\nIf you want to keep skills in sync with the Kurtosis repo without copying:\n\n```bash\n# Symlink the entire skills directory\nln -s /path/to/kurtosis/skills /path/to/your-project/skills\n\n# Or symlink individual skills\nmkdir -p /path/to/your-project/skills\nln -s /path/to/kurtosis/skills/run-package /path/to/your-project/skills/run-package\n```\n\n#### Option 4: Install globally for all projects\n\nTo make Kurtosis skills available across all your Claude Code projects, add them to your global Claude configuration:\n\n```bash\n# Copy skills to your global Claude config\ncp -r /path/to/kurtosis/skills ~/.claude/skills\n```\n\n### Using Skills\n\nOnce installed, skills are invoked as slash commands in Claude Code:\n\n```\n/clean          # Clean up enclaves\n/run-package    # Run a Starlark package\n/docker-debug   # Debug Docker containers\n/k8s-debug-pods # Debug Kubernetes pods\n```\n\nYou can also reference skills naturally in conversation — Claude will use the relevant skill context automatically when discussing Kurtosis topics.\n\nContributing to Kurtosis\n========================\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand to see contribution info\u003c/summary\u003e\n\nSee our [CONTRIBUTING](./CONTRIBUTING.md) file.\n\nRepository Structure\n--------------------\n\nThis repository is structured as a monorepo, containing the following projects:\n- `container-engine-lib`: Library used to abstract away container engine being used by the [enclave][enclave].\n- `core`: Container launched inside an [enclave][enclave] to coordinate its state\n- `engine`: Container launched to coordinate [enclaves][enclave]\n- `api`: Defines the API of the Kurtosis platform (`engine` and `core`)\n- `cli`: Produces CLI binary, allowing interaction with the Kurtosis system\n- `docs`: Documentation that is published to [docs.kurtosis.com](docs)\n- `internal_testsuites`: End to end tests\n\nDev Dependencies (Nix)\n----------------\n\nInstall the [Nix package manager](https://nixos.org/download).\n```bash\nsh \u003c(curl -L https://nixos.org/nix/install)\n```\n\nAnd enable some Nix flags (alternatively you can add `--extra-experimental-features 'nix-command flakes'` every time calling the `nix` command):\n```bash\nmkdir -p ~/.config/nix\necho \"experimental-features = nix-command flakes\" \u003e\u003e ~/.config/nix/nix.conf\n```\n\nAnd to bring the environment up, just open a new shell terminal, go to the root folder of the repo and run:\n```bash\nnix  develop\n```\n\nThis will download all dev deps and setup the environment accordingly.\n\nYou can also use the [`direnv`](https://direnv.net/) to automatically load the environment when entering the main folder or using a plugin in your preferred IDE:\n- `vscode`: [mkhl.direnv](https://github.com/direnv/direnv-vscode)\n- `jet brains`: [Direnv integration](https://plugins.jetbrains.com/plugin/15285-direnv-integration)\n\nDirenv can also be easily installed with Nix (or [HomeBrew](https://formulae.brew.sh/formula/direnv) if you prefer):\n```bash\nnix-env -f '\u003cnixpkgs\u003e' -iA direnv\n```\n\nNow you just to add the direnv hook to your shell:\n```bash\necho 'eval \"$(direnv hook bash)\"' \u003e\u003e ~/.bashrc\n# or for ZSH\necho 'eval \"$(direnv hook zsh)\"' \u003e\u003e ~/.zshrc\n```\n\nNow next time you open a new shell terminal and go to repo's folder you environment will update and load automatically.\n\nDev Dependencies (Manual install)\n----------------\n\nThe commands below assume that the env variable BREW_PREFIX contains the brew prefix.\n```bash\nBREW_PREFIX=\"$(brew --prefix)\"\n```\n\n#### Bash (5 or above)\n\nOn MacOS:\n```bash\n# Install modern version of bash, the one that ships on MacOS is too old\nbrew install bash\n# Allow bash as shell\necho \"${BREW_PREFIX}/bin/bash\" | sudo tee -a /etc/shells\n# Optional: make bash your default shell\nchsh -s \"${BREW_PREFIX}/bin/bash\"\n```\n\n#### Git\n\nOn MacOS:\n```bash\n# Install modern version of git, the one that ships on MacOS can be too old\nbrew install git\n```\n\n#### Docker\n\nOn MacOS:\n```bash\nbrew install docker\n```\n\n#### Go (1.23 or above)\n\nOn MacOS:\n```bash\nbrew install go@1.23\n# Add the Go binary dir to your PATH\nPATH=\"${BREW_PREFIX}/opt/go@1.23/bin:$PATH\"\n# Add the GOPATH bin dir to your PATH\nPATH=\"${HOME}/go/bin:$PATH\"\n```\n\nOn Ubuntu:\n```bash\nwget https://go.dev/dl/go1.23.7.linux-amd64.tar.gz\ntar -C /usr/local -zxf go1.23.7.linux-amd64.tar.gz\n# Add the following to your bashrc or equivalent.\nexport PATH=$PATH:/usr/local/go/bin\n```\n\n#### Goreleaser\n\nOn MacOS:\n```bash\nbrew install goreleaser/tap/goreleaser\n```\n\nOn Ubuntu:\n```bash\necho 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list\nsudo apt update\nsudo apt install goreleaser\n```\n\n#### Node (20.* or above) and Yarn\n\nOn MacOS, using `NVM`:\n```bash\nbrew install nvm\nmkdir ~/.nvm\nnvm install 20.11.0\nnpm install -g yarn\n```\n\nOn Ubuntu, using `NVM`:\n```bash\ncurl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash\nsource ~/.bashrc\nnvm install 20.11.0\nnpm install -g yarn\n```\n\n#### Rust\n\nOn MacOS, Ubuntu:\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\n#### Go and Typescript protobuf compiler binaries\n\nOn MacOS:\n```bash\nbrew install protoc-gen-go\nbrew install protoc-gen-go-grpc\ngo install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest\nyarn global add ts-protoc-gen\nyarn global add grpc-tools\n```\n\nOn Ubuntu:\n```bash\ngo install google.golang.org/grpc/cmd/protoc-gen-go@latest\ngo install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest\ngo install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest\nyarn global add ts-protoc-gen\nyarn global add grpc-tools\n```\n\n#### OpenAPI generators for Go and Typescript\n\nOn MacOS:\n```bash\ngo install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.16.2\nyarn global add openapi-typescript@7.0.0-next.5\n```\n\nOn Ubuntu:\n```bash\ngo install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.16.2\nyarn global add openapi-typescript@7.0.0-next.5\n```\n\nBuild Instructions\n------------------\n\nTo build the entire project, run:\n\n```bash\n./scripts/build.sh\n```\n\n**Note:** If you encounter module import errors related to `github.com/kurtosis-tech/kurtosis/kurtosis_version`, you may need to generate the version constants first:\n\n```bash\n./scripts/generate-kurtosis-version.sh\n```\n\nThis script generates the required `kurtosis_version.go` file that contains version constants used throughout the codebase. The file is automatically generated during the build process, but may need to be run manually in some development scenarios.\n\nTo only build a specific project, run the script on `./PROJECT/PATH/script/build.sh`, for example:\n\n```bash\n./container-engine-lib/scripts/build.sh\n./core/scripts/build.sh\n./api/scripts/build.sh\n./engine/scripts/build.sh\n./cli/scripts/build.sh\n```\n\n\nIf there are any changes to the Protobuf files in the `api` subdirectory, the Protobuf bindings must be regenerated:\n\n```bash\n./api/scripts/regenerate-protobuf-bindings.sh\n```\n\nIf you are developing Kurtosis over a Podman cluster, run:\n\n```bash\n./scripts/build.sh false true # no debug image, use podman\n```\n\nThis will use the Podman image builder for building images. See documentation in scripts for more details on build options.\n\nRunning Dev Version\n----------------------\n\nAfter building the project, run `./cli/cli/scripts/launch-cli.sh` just like you would the kurtosis command. This will launch the latest locally built version of the CLI, which will also start the engine and core containers using their latest built images.\n\nYou can verify this by running `./cli/cli/launch-cli.sh engine status` and\n```\nA Kurtosis engine is running with the following info:\nVersion:   53d823 \u003c-- or `-dirty` depending on the commit\n```\n\nThe version will be identical to the version on the latest dev versions of the engine image created - (can verify with `docker images`). Enclaves started by the engine will be started with the same version as the engine. \n\nIf you'd like to specify a different core image version than that of the engine, you can do so with the `--api-container-version` flag on `enclave add` (e.g. `./cli/cli/scripts/build.sh enclave add --api-container-version \u003cimage tag\u003e`).\n\nIf you are working on multiple dev versions of the engine at a time, you can use `engine restart --version \u003cimage tag\u003e` to specify exactly what version of the engine to use.\n\nFor frequent contributors, we recommend attaching an alias to `kurtosis` and `./cli/cli/scripts/launch-cli.sh`. \n\n```bash\nalias kt=\"kurtosis\"\nalias dkt=\"$(pwd)/cli/cli/scripts/launch-cli.sh\"\n```\n\nIf you want tab completion on the recently built CLI, you can alias it to `kurtosis`:\n\n```bash\nalias kurtosis=\"$(pwd)/cli/cli/scripts/launch-cli.sh\"\nkurtosis enclave add\n```\n\nUnit Test Instructions\n----------------------\nBuild scripts also run unit tests as part of the build process.\n\nFor all Go modules, run `go test ./...` on the module folder. For example:\n\n```bash\ncd cli/cli/\ngo test ./...\n```\n\nE2E Test Instructions\n---------------------\n\nEach project's build script also runs the unit tests inside the project. Running `./script/build.sh` will guarantee that all unit tests in the monorepo pass.\n\nTo run the end-to-end tests:\n\n1. Make sure Docker is running\n\n```console\n$ docker --version\nDocker version X.Y.Z\n```\n\n2. Make sure Kurtosis Engine is running\n\n```console\n$ kurtosis engine status\nA Kurtosis engine is running with the following info:\nVersion:   0.X.Y\n```\n\n3. Run `test.sh` script\n\n```console\n$ ./internal_testsuites/scripts/test.sh\n```\n\nIf you are developing the Typescript test, make sure that you have first built `api/typescript`. Any\nchanges made to the Typescript package within `api/typescript` aren't hot loaded as of 2022-09-29.\n\nRun Debug Instructions (for Golang code so far)\n----------------------------------------------\n\nFor running CLI with Golang remote debug:\n\n1. Build the CLI dev binary and run the command you want to debug (kurtosis version in this example), this will start the debug server and will wait for a client connection\n```bash\ncli/cli/scripts/build.sh\nsource ./scripts/set_kt_alias.sh\nktdebug version\n```\n2. Open the command's file you want to debug\n3. Add the breakpoint in the line where you want to stop the cursor\n\u003cimg src=\"./readme-static-files/goland-breakpoint.png\" /\u003e\n4. Then choose the \"CLI-remote-debug\" run configuration in the \"run panel\"\n5. Press the \"debug\" button\n\u003cimg src=\"./readme-static-files/goland-debug-button.png\" /\u003e\n6. Use the debug panel to inspect the variables value and continue with the debug flow\n\u003cimg src=\"./readme-static-files/goland-debug-panel.png\" /\u003e\n\n\nFor running CLI with Delve debug client:\n\n1. Build the CLI dev binary and run the command you want to debug (kurtosis version in this example), but first pass \"dlv-terminal\" as the first argument (this will start the Delve client in the terminal)\n```bash\ncli/cli/scripts/build.sh\nsource ./scripts/set_kt_alias.sh\nktdebug dlv-terminal version\n```\n2. You can add a new breakpoint using the terminal client and the `break` command\n```bash\n(dlv) break version.run:1\n```\n3. You can move the cursor to the breakpoint created in the previous step with the `continue` command\n```bash\n(dlv) continue\n```\n\u003cimg src=\"./readme-static-files/dlv-terminal.png\" /\u003e\n4. You can see [more Delve commands here][delve-docs]\n\n\nFor running Kurtosis engine with Golang remote debug:\n\n1. Run the main build script with the first argument `debug_mode` as true. This will generate a new Kurtosis engine container image which will contain the `debug` suffix in the name.\n```bash\nscripts/build.sh true \n```\n2. Add the breakpoint in the line where you want to stop the cursor\n   \u003cimg src=\"./readme-static-files/goland-engine-breakpoint.png\" /\u003e\n3. Run the engine in debug mode with the `ktdev engine start --debug-mode` or the `ktdev engine restart --debug-mode` commands\n```bash\nsource ./scripts/set_kt_alias.sh\nktdev engine start --debug-mode \n```\n4. Then choose the \"Engine-remote-debug\" run configuration in the \"run panel\"\n5. Press the \"debug\" button\n   \u003cimg src=\"./readme-static-files/goland-engine-debug-button.png\" /\u003e\n6. Make a call to the engine's server (you can use the Kurtosis CLI or Postman) in order to reach out the breakpoint in the code\n7. Use the debug panel to inspect the variables value and continue with the debug flow\n   \u003cimg src=\"./readme-static-files/goland-debug-panel.png\" /\u003e\n8. You can debug the CLI and the Kurtosis engine's server at the same time by running it with `ktdebug` instead of `ktdev` mentioned in a previous step, remember to run both remote debug configurations in the Goland IDE.\n```bash\nsource ./scripts/set_kt_alias.sh\nktdebug engine start\n```\n\nAdditional steps if you are debugging Kurtosis engine in K8s:\n\n1. Upload the engine's image for debug to the K8s cluster\n```bash\n# for example:\nk3d image load kurtosistech/engine:5ec6eb-dirty-debug\n```\n2. Run the port-forward script before pressing the debug button in Golang (in another terminal instance) to bind the host's port to the container's debug server port\n```bash\nscripts/port-forward-engine-debug.sh\n```\n3. Do not forget to run the Kurtosis gateway after calling the engine's server (in another terminal instance also)\n```bash\nktdev gateway\n```\n\nFor running Kurtosis APIC with Golang remote debug:\n1. Run the main build script with the first argument `debug_mode` as true. This will generate a new Kurtosis APIC container image which will contain the `debug` suffix in the name.\n```bash\nscripts/build.sh true \n```\n2. Add the breakpoint in the line where you want to stop the cursor.\n   \u003cimg src=\"./readme-static-files/goland-apic-breakpoint.png\" /\u003e\n3. Run the Kurtosis engine in debug more or not depending on if you want to also debug the engine.\n```bash\nsource ./scripts/set_kt_alias.sh\nktdev engine start --debug-mode\n\nOR\n\nktdev engine start # you will have to build the engine in the regular way `engine/scripts/build.sh` if you choose this version\n```\n4. Add a new enclave in debug mode with the `enclave add` command and passing the `debug-mode` flag. This will create a new APIC container with the debug server port bounded and waiting for a connection.\nIMPORTANT: You can only run one enclave in debug mode so far, if you want to run another one it will fail due the debug port is already in use, \n```bash\nktdev enclave add --debug-mode \n```\n5. Then choose the \"APIC-remote-debug\" run configuration in the \"run panel\"\n6. Press the \"debug\" button\n   \u003cimg src=\"./readme-static-files/goland-apic-debug-button.png\" /\u003e\n7. Find the APIC's GRPC server port in the host machine (you can check it in Docker Desktop or using the Docker CLI, it's the one bounded with the container's 7443 port)\n8. Make a call to the APIC's server (you can use the Kurtosis CLI or Postman) in order to reach out the breakpoint in the code\n9. Use the debug panel to inspect the variables value and continue with the debug flow\n   \u003cimg src=\"./readme-static-files/goland-debug-panel.png\" /\u003e\n10. You can debug the CLI, the Kurtosis engine's server and the Kurtosis APIC's server at the same time by running it with `ktdebug` instead of `ktdev` mentioned in a previous step, remember to run the three remote debug configurations in the Goland IDE.\n```bash\nsource ./scripts/set_kt_alias.sh\nktdev engine start --debug-mode\nktdebug enclave add\n```\n\nAdditional steps if you are debugging Kurtosis engine in K8s:\n\n1. Upload the APIC's image for debug to the K8s cluster\n```bash\n# for example:\nk3d image load kurtosistech/core:5ec6eb-dirty-debug\n```\n2. Run the port-forward script before pressing the debug button in Golang (in another terminal instance) to bind the host's port to the container's debug server port\n```bash\nscripts/port-forward-apic-debug.sh enclave-name\n```\n3. Do not forget to run the Kurtosis gateway after calling the APIC's server (in another terminal instance also)\n```bash\nktdev gateway\n```\n\n\u003c/details\u003e\n\nSponsoring Kurtosis\n========================\nKurtosis is an open source tool maintained by [MAINTAINERS](./MAINTAINERS.md). If you find Kurtosis useful or use it for work, please consider [supporting the continued development of Kurtosis](https://github.com/sponsors/tedim52). Thank you 🙏 \n\n\u003cp\u003e\n  \u003ca href=\"https://www.bloctopus.io/\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/tedim52/.github/refs/heads/main/content/sponsors/bloctopus-dark.png\"\u003e\n      \u003cimg alt=\"bloctopus logo\" src=\"https://raw.githubusercontent.com/tedim52/.github/refs/heads/main/content/sponsors/bloctopus-light.png\" width=\"auto\" height=\"70\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://antithesis.com/\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/tedim52/.github/refs/heads/main/content/sponsors/antithesis-dark.svg\"\u003e\n      \u003cimg alt=\"antithesis logo\" src=\"https://raw.githubusercontent.com/tedim52/.github/refs/heads/main/content/sponsors/antithesis-light.svg\" width=\"auto\" height=\"70\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://ethereum.foundation/\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/tedim52/.github/refs/heads/main/content/sponsors/ethereum.png\"\u003e\u003c/source\u003e\n      \u003cimg alt=\"ethereum logo\" src=\"https://raw.githubusercontent.com/tedim52/.github/refs/heads/main/content/sponsors/ethereum.png\" width=\"auto\" height=\"70\"\u003e\u003c/img\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-------- ONLY LINKS BELOW THIS POINT --------\u003e\n[enclave]: https://docs.kurtosis.com/advanced-concepts/enclaves\n[awesome-kurtosis]: https://github.com/kurtosis-tech/awesome-kurtosis#readme\n[quickstart-reference]: https://docs.kurtosis.com/quickstart\n[discord]: https://discord.gg/6Jjp9c89z9\n[kurtosis-tech]: https://github.com/kurtosis-tech\n[docs]: https://docs.kurtosis.com\n[twitter]: https://twitter.com/KurtosisTech\n[starlark-explanation]: https://docs.kurtosis.com/explanations/starlark\n[stackoverflow-2022-developer-survey--other-tools]: https://survey.stackoverflow.co/2022/#most-popular-technologies-tools-tech-prof\n[delve-docs]: https://github.com/go-delve/delve/blob/master/Documentation/cli/README.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkurtosis-tech%2Fkurtosis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkurtosis-tech%2Fkurtosis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkurtosis-tech%2Fkurtosis/lists"}