Run Ethereum multi-client devnets using Kurtosis and the ethpandaops/ethereum-package. Use for spinning up local devnets, syncing public testnets, validating cross-client interop, testing fork transitions, shadowforks, running assertoor checks, debugging CL/EL client interactions, or verifying new feature implementations across multiple consensus and execution clients.
Run Ethereum consensus/execution client devnets via kurtosis + ethereum-package.
Only include fields that differ from defaults. If the task doesn't mention a setting, don't include it. Shorter configs are better — let the defaults handle the rest.
# ALWAYS start grafloki first — enables Loki log collection for debugging
kurtosis loki start
# Write a network_params.yaml, then:
kurtosis run github.com/ethpandaops/ethereum-package \
--enclave <name> \
--args-file network_params.yaml \
--image-download always
kurtosis enclave ls # list enclaves
kurtosis enclave inspect <name> # inspect services + ports
kurtosis service logs <enclave> <svc> # view logs
kurtosis enclave rm -f <name> # cleanup
If you are told to use a fork or a branch of the ethereum-package, then replace github.com/ethpandaops/ethereum-package with github.com/<fork>/ethereum-package@branch
If you want to quickly sanity check something, then use preset: "minimal". This will lead to much faster networks, but do not default to this approach. Only use it when you are sure you want to quickly check something. When the user expects it to behave like mainnet, then use preset: "mainnet".
network_params.yaml)participantsEach entry is a CL+EL node. Only specify fields you need to override: