Configuration Reference
CLI Options
Section titled “CLI Options”The Base Reth Node inherits Reth’s comprehensive CLI. View all options:
./target/release/base-reth-node --helpKey option categories:
- Network — Chain selection, bootnodes, P2P port
- RPC — HTTP/WS endpoints, CORS, API namespaces
- Database — Data directory, state pruning
- Metrics — Prometheus endpoint
- Engine API — JWT secret, engine API endpoint
- Logging — Log level, log format
Environment Variables
Section titled “Environment Variables”Configuration can also be set via environment variables. The devnet uses etc/docker/devnet-env for its environment.
Build Profiles
Section titled “Build Profiles”The workspace defines several Cargo build profiles:
| Profile | Use Case | Key Settings |
|---|---|---|
dev | Development | debug = "line-tables-only" |
release | Production | opt-level = 3, lto = "thin", codegen-units = 16, strip = "symbols", panic = "unwind" |
release-symbols | Production build you need to profile | Inherits release, then debug = "line-tables-only", strip = "none" |
bench | Callgrind-driven benchmarks | Inherits release, then debug = true, strip = false |
profiling | Performance analysis | Inherits release, then lto = false, debug = "line-tables-only", strip = "none" |
ci | CI builds | Inherits dev, then debug = false, incremental = false |
There is no longer a maxperf profile. It was removed from the workspace, and release is now the single production profile — both the published ghcr.io/base/node image and a local --build come from it.
Two of these exist because release strips symbols. release-symbols restores them without changing any codegen setting, so a profiled binary matches what you ship. bench goes further and keeps full debug info, which iai-callgrind needs to find the function it measures; without symbols every counter reads zero.
Dependencies drop their debug info in dev builds through a [profile.dev.package."*"] override. Workspace crates keep theirs. This mostly targets the C and C++ build scripts behind rocksdb, mdbx, and jemalloc, which otherwise dominate the size of target.
basectl
Section titled “basectl”The basectl utility provides configuration management for different network targets:
# Mainnet configurationcargo run -p basectl --release -- -c mainnet
# Sepolia testnetcargo run -p basectl --release -- -c sepolia
# Local devnetcargo run -p basectl --release -- -c devnet