Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
acb9318
proof engine test converage
frisitano Feb 5, 2026
1031ba8
forkchoice integration
frisitano Feb 7, 2026
0de5b0c
integrate engine and proof engine in execution layer interface
frisitano Feb 9, 2026
6c8e626
introduce validator client proof service
frisitano Feb 9, 2026
5cbe70a
introduce validator client proof service with execution layer proof e…
frisitano Feb 9, 2026
92f60eb
integration tests and updates
frisitano Feb 18, 2026
826cf7b
add preliminary ProofSync subsystem in SyncManager
frisitano Feb 25, 2026
c71cbff
proof sync testing
frisitano Feb 27, 2026
bad8521
use execution status message for proof sync
frisitano Mar 7, 2026
1db3e8a
chore: fix clippy lint errors
nova-tau-assistant Mar 8, 2026
8eeff74
Trigger CI
nova-tau-assistant Mar 8, 2026
eaa1bce
Address PR feedback: remove fork check, rename ExecutionProofStatus f…
nova-tau-assistant Mar 8, 2026
01f434a
Test webhook notification
nova-tau-assistant Mar 8, 2026
79eb734
Remove webhook test file
nova-tau-assistant Mar 8, 2026
f27b0b2
Trigger CI for webhook test
nova-tau-assistant Mar 8, 2026
a2545ba
Test new telegram-bot framework webhook
nova-tau-assistant Mar 8, 2026
f7d5aaa
Test: CI trigger
nova-tau-assistant Mar 8, 2026
1a01e61
Trigger CI for webhook test
nova-tau-assistant Mar 8, 2026
c2920c3
Fix: cargo fmt formatting
nova-tau-assistant Mar 8, 2026
86bdaee
Fix: Remove unused import RpcRequestSendError
nova-tau-assistant Mar 8, 2026
377abff
Fix CI failures: cargo fmt, unused imports, dead code warnings
nova-tau-assistant Mar 8, 2026
efbf658
fix: resolve CI failures - formatting, deps, tests
nova-tau-assistant Mar 8, 2026
085d788
fix: resolve CI failures - clippy result_large_err fixes
nova-tau-assistant Mar 8, 2026
9d29e7e
fix: resolve all CI failures - comprehensive fix
nova-tau-assistant Mar 8, 2026
6044ae0
fix ci
frisitano Mar 9, 2026
7560721
fix: resolve remaining CI failures
frisitano Mar 10, 2026
bb30520
fix: address PR review comments and CI failures
frisitano Mar 10, 2026
7c4d57b
refactor: address PR review comments - proof sync architecture cleanup
frisitano Mar 10, 2026
65eda5e
small refactor
frisitano Mar 11, 2026
d842ef1
fix lint
frisitano Mar 11, 2026
9801bc9
fix lint
frisitano Mar 11, 2026
0bf1f1b
refactor
frisitano Mar 11, 2026
270388e
cargo fmt
frisitano Mar 11, 2026
a511ba9
ci fixes
frisitano Mar 13, 2026
bf9d7c2
increase genesis delays to fix CI timing failures
frisitano Mar 13, 2026
d3fae44
ci fixes
frisitano Mar 13, 2026
504ffa4
simulator: delay extra node join to END_EPOCH - 3
frisitano Mar 15, 2026
5394832
fix(simulator): remove Supernode custody from non-boot nodes and redu…
nova-tau-assistant Mar 16, 2026
3f60ae3
Merge pull request #5 from frisitano/feat/execution-status-ci-fix
frisitano Mar 16, 2026
355c8eb
Merge pull request #1 from frisitano/feat/execution-status
frisitano Mar 17, 2026
af38e14
proof engine persistence
nova-tau-assistant Mar 17, 2026
3303ede
refactor: proof engine persistence
frisitano Mar 17, 2026
5ece898
fix fmt and lint
frisitano Mar 17, 2026
73b5e29
refactor proof engine persistence load
frisitano Mar 17, 2026
0efb610
refactor proof engine persistence load
frisitano Mar 17, 2026
89cfe91
cargo fmt
frisitano Mar 17, 2026
c368e1b
Merge pull request #6 from frisitano/feat/production-proof-storage
frisitano Mar 17, 2026
78bbb5f
feat: validator proof resigning
nova-tau-assistant Mar 17, 2026
597687d
refactor api
nova-tau-assistant Mar 17, 2026
ba18da6
refactor
frisitano Mar 17, 2026
ecfbdee
clean up
frisitano Mar 17, 2026
0e1f562
deprecate SseBlockFull
frisitano Mar 17, 2026
9b26292
gossip behaviour
frisitano Mar 17, 2026
61116c3
gossip behaviour
frisitano Mar 17, 2026
29e2770
Merge pull request #7 from frisitano/feat/validator-resigning
frisitano Mar 17, 2026
292f0e1
Merge remote-tracking branch 'origin/feat/eip8025' into feat/proof-en…
nova-tau-assistant Mar 17, 2026
22e0b2f
refactor: introduce ProofNodeClient abstraction
nova-tau-assistant Mar 18, 2026
fceb121
refactor
frisitano Mar 18, 2026
f820b5d
refactor proof engine implementation
frisitano Mar 18, 2026
360cf57
clean up
frisitano Mar 18, 2026
4f2dbb2
lint
frisitano Mar 18, 2026
c7470d6
Merge pull request #8 from frisitano/feat/proof-engine-api-update
frisitano Mar 18, 2026
e8c393e
feat: add zstd compression to ProofEngine persistence
nova-tau-assistant Mar 19, 2026
3014880
feat: add proof engine zkboost integration test framework
nova-tau-assistant Mar 19, 2026
578d3c6
refactor: center ProofType encoding as the main compatibility boundary
nova-tau-assistant Mar 19, 2026
6911853
docs: attribute proof_types bug fix to zkboost integration harness
nova-tau-assistant Mar 19, 2026
452cadb
cargo fmt
frisitano Mar 19, 2026
4b22800
Merge pull request #9 from frisitano/feat/check-proof-storage-compres…
frisitano Mar 19, 2026
c79686a
refactor: replace mock zkboost server with upstream types
nova-tau-assistant Mar 19, 2026
39f0e59
test: validate ProofNodeClient against real zkboost server
nova-tau-assistant Mar 19, 2026
cbfcf23
clean up
frisitano Mar 19, 2026
59bc873
rebuild lock file
frisitano Mar 19, 2026
413b587
clean up
frisitano Mar 19, 2026
e15b5b4
Merge pull request #10 from frisitano/feat/proof-engine-zkboost-ingre…
frisitano Mar 19, 2026
a9202de
feat: add proof engine SSE monitor for proof completion loop
nova-tau-assistant Mar 19, 2026
751edc0
update msrc
frisitano Mar 19, 2026
9397dc0
Merge pull request #11 from frisitano/feat/proofservice-proof-complet…
frisitano Mar 19, 2026
975f777
Feat/fix zkboost GitHub workflow (#13)
frisitano Mar 19, 2026
c9777df
Feat/eip8025 kurtosis refactor minimal (#12)
frisitano Mar 20, 2026
78c235a
feat: eip8025 (#17)
frisitano Mar 20, 2026
3b27324
Feat/execution proof peer validator scoring (#14)
frisitano Mar 23, 2026
62ec9f4
feat: execution proof scoring improvements (#16)
frisitano Mar 23, 2026
26202ba
(fix) proof engine tests (#17)
frisitano Mar 24, 2026
190713b
feat: execution proof sync protocol hardening (#18)
frisitano Mar 25, 2026
aa0373a
integrate zkboost (#15)
frisitano Mar 25, 2026
3074529
Merge eth/feat/eip8025 into feat/eip8025
frisitano Mar 25, 2026
fd7ed0c
optimisations
frisitano Mar 25, 2026
842f767
feat: Integrate eip8025 advancements (#18)
frisitano Mar 26, 2026
41a64b2
Merge remote-tracking branch 'eth/feat/eip8025' into feat/eip8025
frisitano Mar 26, 2026
c898fde
feat: test improvements and code hygiene (#19)
frisitano Mar 27, 2026
8175c79
Feat/eip8025 networking improvements (#21)
frisitano Mar 30, 2026
b5297c9
feat: use static grafana dashboards via local branch reference
frisitano Mar 30, 2026
d6c220b
feat: add lighthouse tags and zkboost instance selector to dashboards
frisitano Mar 31, 2026
a1b59e6
feat: add prometheus metrics and grafana dashboards for proof engine …
frisitano Mar 31, 2026
48f1e99
feat: add GPU zkboost network params for real ere-server-zisk provers
frisitano Mar 31, 2026
448dea9
fix: use block scope to drop RwLockWriteGuard before await in new_pay…
frisitano Mar 31, 2026
5d0b8f2
chore: apply cargo fmt and clippy lint fixes
frisitano Mar 31, 2026
1b503b3
chore: remove dashboards from local repo (moved to ethereum-package)
frisitano Mar 31, 2026
9ad5526
ci: check zkboost proof count via metrics endpoint instead of log scr…
frisitano Mar 31, 2026
298c8dd
feat: network sync refactor - min req message size (#22)
frisitano Mar 31, 2026
49528cb
Merge feat/kurtosis-grafana into feat/eip8025
frisitano Mar 31, 2026
cf4b8d8
fix: resolve merge conflict with feat/eip8025 proof_sync refactor
frisitano Mar 31, 2026
5c304ce
eip8025: update ProofEvent to match zkboost v0.3.0 API (#25)
frisitano Apr 7, 2026
863fe10
chore: udpate deps and logging for kurtosis (#26)
frisitano Apr 7, 2026
0c128bc
Feat/network params gpu (#27)
frisitano Apr 12, 2026
2467d50
ci: adopt optional-proofs docker workflow for GHCR publishing (#28)
frisitano Apr 12, 2026
168bd3a
docs: eip8025 kurtosis docs (#29)
frisitano Apr 13, 2026
c231644
chore: revert deps versions (#32)
frisitano Apr 14, 2026
c4215e5
chore: update kurtosis params (#31)
frisitano Apr 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
.git
.claude
.config
book
md-docs
testing/ef_tests/consensus-spec-tests
testing/execution_engine_integration/execution_clients
target/
Expand Down
80 changes: 39 additions & 41 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
name: docker

on:
push:
branches:
- unstable
- stable
tags:
- v*
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
DOCKER_PASSWORD: ${{ secrets.DH_KEY }}
DOCKER_USERNAME: ${{ secrets.DH_ORG }}
# Enable self-hosted runners for the sigp repo only.
SELF_HOSTED_RUNNERS: ${{ github.repository == 'sigp/lighthouse' }}
REGISTRY: ghcr.io
CC: clang-5.0
CXX: clang++-5.0

jobs:
# Extract the VERSION which is either `latest` or `vX.Y.Z`, and the VERSION_SUFFIX
Expand All @@ -38,6 +34,11 @@ jobs:
run: |
echo "VERSION=latest" >> $GITHUB_ENV
echo "VERSION_SUFFIX=-unstable" >> $GITHUB_ENV
- name: Extract version (if optional-proofs)
if: github.event.ref == 'refs/heads/optional-proofs'
run: |
echo "VERSION=latest" >> $GITHUB_ENV
echo "VERSION_SUFFIX=-optional-proofs" >> $GITHUB_ENV
- name: Extract version (if tagged release)
if: startsWith(github.event.ref, 'refs/tags')
run: |
Expand All @@ -48,12 +49,14 @@ jobs:
VERSION_SUFFIX: ${{ env.VERSION_SUFFIX }}
build-docker-single-arch:
name: build-docker-${{ matrix.binary }}-${{ matrix.cpu_arch }}${{ matrix.features.version_suffix }}
permissions:
contents: read
packages: write
# Use self-hosted runners only on the sigp repo.
runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "release"]') || 'ubuntu-22.04' }}
strategy:
matrix:
binary: [lighthouse,
lcli]
binary: [lighthouse]
cpu_arch: [aarch64,
x86_64]
include:
Expand All @@ -68,9 +71,12 @@ jobs:
- name: Update Rust
if: env.SELF_HOSTED_RUNNERS == 'false'
run: rustup update stable
- name: Dockerhub login
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Sets env vars for Lighthouse
if: startsWith(matrix.binary, 'lighthouse')
Expand All @@ -82,11 +88,6 @@ jobs:
run: |
echo "MAKE_CMD=build-${{ matrix.cpu_arch }}" >> $GITHUB_ENV

- name: Set `make` command for lcli
if: startsWith(matrix.binary, 'lcli')
run: |
echo "MAKE_CMD=build-lcli-${{ matrix.cpu_arch }}" >> $GITHUB_ENV

- name: Cross build binaries
run: |
cargo install cross
Expand Down Expand Up @@ -123,28 +124,17 @@ jobs:
platforms: linux/${{ env.SHORT_ARCH }}
push: true
tags: |
${{ github.repository_owner}}/${{ matrix.binary }}:${{ env.VERSION }}-${{ env.SHORT_ARCH }}${{ env.VERSION_SUFFIX }}

- name: Build and push (lcli)
if: startsWith(matrix.binary, 'lcli')
uses: docker/build-push-action@v5
with:
file: ./lcli/Dockerfile.cross
context: .
platforms: linux/${{ env.SHORT_ARCH }}
push: true

tags: |
${{ github.repository_owner}}/${{ matrix.binary }}:${{ env.VERSION }}-${{ env.SHORT_ARCH }}${{ env.VERSION_SUFFIX }}

${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:${{ env.VERSION }}-${{ env.SHORT_ARCH }}${{ env.VERSION_SUFFIX }}

build-docker-multiarch:
name: build-docker-${{ matrix.binary }}-multiarch
permissions:
contents: read
packages: write
runs-on: ubuntu-22.04
strategy:
matrix:
binary: [lighthouse,
lcli]
binary: [lighthouse]
needs: [build-docker-single-arch, extract-version]
env:
VERSION: ${{ needs.extract-version.outputs.VERSION }}
Expand All @@ -153,13 +143,21 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Dockerhub login
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create and push multiarch manifests
run: |
docker buildx imagetools create -t ${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}${VERSION_SUFFIX} \
${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}-arm64${VERSION_SUFFIX} \
${{ github.repository_owner}}/${{ matrix.binary }}:${VERSION}-amd64${VERSION_SUFFIX};

docker buildx imagetools create -t ${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:${VERSION}${VERSION_SUFFIX} \
${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:${VERSION}-arm64${VERSION_SUFFIX} \
${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:${VERSION}-amd64${VERSION_SUFFIX};
- name: Tag optional-proofs image as latest
if: github.event.ref == 'refs/heads/optional-proofs'
run: |
docker buildx imagetools create -t ${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:latest \
${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:${VERSION}-arm64${VERSION_SUFFIX} \
${{ env.REGISTRY }}/${{ github.repository }}/${{ matrix.binary }}:${VERSION}-amd64${VERSION_SUFFIX};
139 changes: 139 additions & 0 deletions .github/workflows/kurtosis-eip8025.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# Test that the EIP-8025 Kurtosis testnet starts and the proof engine integrates
# correctly with real zkboost-server backends.
name: kurtosis eip8025

on:
push:
branches:
- unstable
pull_request:
merge_group:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
run-eip8025-testnet:
runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v5

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable

- name: Install yq
run: |
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod +x /usr/local/bin/yq

- name: Start EIP-8025 zkboost testnet
run: ./start_eip8025_testnet.sh -e eip8025-zkboost -n network_params_eip8025_zkboost.yaml
working-directory: scripts/local_testnet

- name: Wait for chain liveness
run: |
BEACON_URL=$(kurtosis port print eip8025-zkboost cl-1-lighthouse-reth http)
echo "Polling $BEACON_URL for head slot > 10..."
for i in $(seq 1 20); do
SLOT=$(curl -sf "$BEACON_URL/eth/v1/beacon/headers/head" \
| jq -r '.data.header.message.slot' 2>/dev/null || echo 0)
echo " attempt $i: head slot = $SLOT"
if [ "$SLOT" -gt 10 ]; then
echo "Chain is live at slot $SLOT"
break
fi
if [ "$i" -eq 20 ]; then
echo "Timed out waiting for head slot > 10"
exit 1
fi
sleep 30
done

- name: Inspect beacon node state
run: |
set -euo pipefail
ENCLAVE=eip8025-zkboost
SERVICES=(cl-1-lighthouse-reth cl-2-lighthouse-reth cl-3-lighthouse-reth cl-4-lighthouse-reth)
FAILED=0

for SVC in "${SERVICES[@]}"; do
URL=$(kurtosis port print "$ENCLAVE" "$SVC" http)
echo "=== $SVC ($URL) ==="

# Syncing status — must not be syncing
SYNCING=$(curl -sf "$URL/eth/v1/node/syncing" | jq -r '.data.is_syncing')
echo " is_syncing: $SYNCING"
if [ "$SYNCING" != "false" ]; then
echo " FAIL: $SVC is still syncing"
FAILED=1
fi

# Peer count — must have at least one connected peer
PEERS=$(curl -sf "$URL/eth/v1/node/peer_count" | jq -r '.data.connected')
echo " connected peers: $PEERS"
if [ "${PEERS:-0}" -lt 1 ]; then
echo " FAIL: $SVC has no connected peers"
FAILED=1
fi

# Head slot — must be non-zero
SLOT=$(curl -sf "$URL/eth/v1/beacon/headers/head" | jq -r '.data.header.message.slot')
echo " head slot: $SLOT"
if [ "${SLOT:-0}" -lt 1 ]; then
echo " FAIL: $SVC head slot is 0"
FAILED=1
fi

# Finality checkpoints — informational, log the finalized epoch
FINALIZED=$(curl -sf "$URL/eth/v1/beacon/states/head/finality_checkpoints" \
| jq -r '.data.finalized.epoch')
echo " finalized epoch: $FINALIZED"
done

exit "$FAILED"

- name: Check zkboost sidecars are running and generating proofs
run: |
ENCLAVE=eip8025-zkboost

# Both zkboost services must be in RUNNING state
kurtosis enclave inspect "$ENCLAVE" | grep -E "zkboost-[12].*RUNNING" \
|| { echo "FAIL: one or more zkboost services not in RUNNING state"; exit 1; }

# Each zkboost sidecar must have generated at least one proof.
# Check via the Prometheus metrics endpoint (zkboost_prove_total) rather than
# log scraping — kurtosis service logs may not be available in all CI environments.
for SVC in zkboost-1 zkboost-2; do
URL=$(kurtosis port print "$ENCLAVE" "$SVC" http)
COUNT=$(curl -sf "$URL/metrics" \
| awk '/^zkboost_prove_total\{/ {sum += $2} END {print int(sum)}')
echo "$SVC: $COUNT proofs generated"
if [ "${COUNT:-0}" -lt 1 ]; then
echo "FAIL: $SVC has not generated any proofs"
exit 1
fi
done

- name: Stop testnet and collect logs
if: always()
run: |
mkdir -p scripts/local_testnet/logs
ENCLAVE=eip8025-zkboost
for SVC in cl-1-lighthouse-reth cl-2-lighthouse-reth cl-3-lighthouse-reth cl-4-lighthouse-reth \
zkboost-1 zkboost-2; do
kurtosis service logs "$ENCLAVE" "$SVC" > "scripts/local_testnet/logs/${SVC}.log" 2>&1 || true
done
kurtosis enclave rm -f "$ENCLAVE" || true

- name: Upload logs artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: logs-kurtosis-eip8025
path: scripts/local_testnet/logs
retention-days: 3
10 changes: 5 additions & 5 deletions .github/workflows/local-testnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable
Expand Down Expand Up @@ -106,7 +106,7 @@ jobs:

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable
Expand Down Expand Up @@ -142,7 +142,7 @@ jobs:

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable
Expand Down Expand Up @@ -185,7 +185,7 @@ jobs:

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable
Expand Down Expand Up @@ -227,7 +227,7 @@ jobs:

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable
Expand Down
Loading
Loading