Environment Variables Reference

Complete reference of environment variables used by the testing framework, organized by category.

Critical Variables

These MUST be set for successful test runs:

VariableRequiredDefaultEffect
POL_PROOF_DEV_MODEYESREQUIRED for all runners. Set to true to use fast dev-mode proving instead of expensive Groth16. Without this, tests will hang/timeout.

Example:

export POL_PROOF_DEV_MODE=true

Or add to your shell profile (~/.bashrc, ~/.zshrc):

# Required for nomos-testing framework
export POL_PROOF_DEV_MODE=true

Runner Selection & Topology

Control which runner to use and the test topology:

VariableDefaultEffect
NOMOS_DEMO_VALIDATORS1Number of validators (all runners)
NOMOS_DEMO_EXECUTORS1Number of executors (all runners)
NOMOS_DEMO_RUN_SECS60Run duration in seconds (all runners)
LOCAL_DEMO_VALIDATORSLegacy: Number of validators (host runner only)
LOCAL_DEMO_EXECUTORSLegacy: Number of executors (host runner only)
LOCAL_DEMO_RUN_SECSLegacy: Run duration (host runner only)
COMPOSE_NODE_PAIRSCompose-specific topology format: "validators×executors" (e.g., 3x2)

Example:

# Run with 5 validators, 2 executors, for 120 seconds
NOMOS_DEMO_VALIDATORS=5 \
NOMOS_DEMO_EXECUTORS=2 \
NOMOS_DEMO_RUN_SECS=120 \
scripts/run/run-examples.sh -t 120 -v 5 -e 2 host

Node Binaries (Host Runner)

Required for host runner when not using helper scripts:

VariableRequiredDefaultEffect
NOMOS_NODE_BINYes (host)Path to nomos-node binary
NOMOS_EXECUTOR_BINYes (host)Path to nomos-executor binary
NOMOS_NODE_PATHNoPath to nomos-node git checkout (dev workflow)

Example:

export NOMOS_NODE_BIN=/path/to/nomos-node/target/release/nomos-node
export NOMOS_EXECUTOR_BIN=/path/to/nomos-node/target/release/nomos-executor

Docker Images (Compose / K8s)

Required for compose and k8s runners:

VariableRequiredDefaultEffect
NOMOS_TESTNET_IMAGEYes (compose/k8s)logos-blockchain-testing:localDocker image tag for node containers
NOMOS_TESTNET_IMAGE_PULL_POLICYNoIfNotPresent (local) / Always (ECR)K8s imagePullPolicy used by the runner
NOMOS_BINARIES_TARNoPath to prebuilt bundle (.tar.gz) for image build
NOMOS_SKIP_IMAGE_BUILDNo0Skip image rebuild (compose/k8s); assumes image already exists
NOMOS_FORCE_IMAGE_BUILDNo0Force rebuilding the image even when the script would normally skip it (e.g. non-local k8s)

Example:

# Using prebuilt bundle
export NOMOS_BINARIES_TAR=.tmp/nomos-binaries-linux-v0.3.1.tar.gz
export NOMOS_TESTNET_IMAGE=logos-blockchain-testing:local
scripts/build/build_test_image.sh

# Using pre-existing image (skip build)
export NOMOS_SKIP_IMAGE_BUILD=1
scripts/run/run-examples.sh -t 60 -v 3 -e 1 compose

Circuit Assets (KZG Parameters)

Circuit asset configuration for DA workloads:

VariableDefaultEffect
NOMOS_KZGRS_PARAMS_PATHtesting-framework/assets/stack/kzgrs_test_params/kzgrs_test_paramsPath to KZG proving key file
NOMOS_KZG_DIR_RELtesting-framework/assets/stack/kzgrs_test_paramsDirectory containing KZG assets (relative to workspace root)
NOMOS_KZG_FILEkzgrs_test_paramsFilename of the proving key within NOMOS_KZG_DIR_REL
NOMOS_KZG_CONTAINER_PATH/kzgrs_test_params/kzgrs_test_paramsFile path where the node expects KZG params inside containers
NOMOS_KZG_MODERunner-specificK8s only: hostPath (mount from host) or inImage (embed into image)
NOMOS_KZG_IN_IMAGE_PARAMS_PATH/opt/nomos/kzg-params/kzgrs_test_paramsK8s inImage mode: where the proving key is stored inside the image
VERSIONFrom versions.envCircuit release tag (used by helper scripts)
NOMOS_CIRCUITSDirectory containing fetched circuit bundles (set by scripts/setup/setup-circuits-stack.sh)
NOMOS_CIRCUITS_VERSIONLegacy alias for VERSION (supported by some build scripts)
NOMOS_CIRCUITS_PLATFORMAuto-detectedOverride circuits platform (e.g. linux-x86_64, macos-aarch64)
NOMOS_CIRCUITS_HOST_DIR_REL.tmp/nomos-circuits-hostOutput dir for host circuits bundle (relative to repo root)
NOMOS_CIRCUITS_LINUX_DIR_REL.tmp/nomos-circuits-linuxOutput dir for linux circuits bundle (relative to repo root)
NOMOS_CIRCUITS_NONINTERACTIVE0Set to 1 to overwrite outputs without prompting in setup scripts
NOMOS_CIRCUITS_REBUILD_RAPIDSNARK0Set to 1 to force rebuilding rapidsnark (host bundle only)

Example:

# Use custom circuit assets
NOMOS_KZGRS_PARAMS_PATH=/custom/path/to/kzgrs_test_params \
cargo run -p runner-examples --bin local_runner

Node Logging

Control node log output (not framework runner logs):

VariableDefaultEffect
NOMOS_LOG_LEVELinfoGlobal log level: error, warn, info, debug, trace
NOMOS_LOG_FILTERFine-grained module filtering (e.g., cryptarchia=trace,nomos_da_sampling=debug)
NOMOS_LOG_DIRHost runner: directory for per-node log files (persistent). Compose/k8s: use cfgsync.yaml for file logging.
NOMOS_TESTS_KEEP_LOGS0Keep per-run temporary directories (useful for debugging/CI artifacts)
NOMOS_TESTS_TRACINGfalseEnable debug tracing preset (combine with NOMOS_LOG_DIR unless external tracing backends configured)

Important: Node logging ignores RUST_LOG; use NOMOS_LOG_LEVEL and NOMOS_LOG_FILTER for node logs.

Example:

# Debug logging to files
NOMOS_LOG_DIR=/tmp/test-logs \
NOMOS_LOG_LEVEL=debug \
NOMOS_LOG_FILTER="cryptarchia=trace,nomos_da_sampling=debug" \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner

# Inspect logs
ls /tmp/test-logs/
# nomos-node-0.2024-12-18T14-30-00.log
# nomos-node-1.2024-12-18T14-30-00.log

Common filter targets:

Target PrefixSubsystem
cryptarchiaConsensus (Cryptarchia)
nomos_da_samplingDA sampling service
nomos_da_dispersalDA dispersal service
nomos_da_verifierDA verification
nomos_blendMix network/privacy layer
chain_serviceChain service (node APIs/state)
chain_networkP2P networking
chain_leaderLeader election

Observability & Metrics

Optional observability integration:

VariableDefaultEffect
NOMOS_METRICS_QUERY_URLPrometheus-compatible base URL for runner to query (e.g., http://localhost:9090)
NOMOS_METRICS_OTLP_INGEST_URLFull OTLP HTTP ingest URL for node metrics export (e.g., http://localhost:9090/api/v1/otlp/v1/metrics)
NOMOS_GRAFANA_URLGrafana base URL for printing/logging (e.g., http://localhost:3000)
NOMOS_OTLP_ENDPOINTOTLP trace endpoint (optional)
NOMOS_OTLP_METRICS_ENDPOINTOTLP metrics endpoint (optional)

Example:

# Enable Prometheus querying
export NOMOS_METRICS_QUERY_URL=http://localhost:9090
export NOMOS_METRICS_OTLP_INGEST_URL=http://localhost:9090/api/v1/otlp/v1/metrics
export NOMOS_GRAFANA_URL=http://localhost:3000

scripts/run/run-examples.sh -t 60 -v 3 -e 1 compose

Compose Runner Specific

Variables specific to Docker Compose deployment:

VariableDefaultEffect
COMPOSE_RUNNER_HOST127.0.0.1Host address for port mappings
COMPOSE_RUNNER_PRESERVE0Keep containers running after test (for debugging)
COMPOSE_RUNNER_HTTP_TIMEOUT_SECSOverride HTTP readiness timeout (seconds)
COMPOSE_RUNNER_HOST_GATEWAYhost.docker.internal:host-gatewayControls extra_hosts entry injected into compose (set to disable to omit)
TESTNET_RUNNER_PRESERVEAlias for COMPOSE_RUNNER_PRESERVE

Example:

# Keep containers after test for debugging
COMPOSE_RUNNER_PRESERVE=1 \
scripts/run/run-examples.sh -t 60 -v 3 -e 1 compose

# Containers remain running
docker ps --filter "name=nomos-compose-"
docker logs <container-id>

K8s Runner Specific

Variables specific to Kubernetes deployment:

VariableDefaultEffect
K8S_RUNNER_NAMESPACERandom UUIDKubernetes namespace (pin for debugging)
K8S_RUNNER_RELEASERandom UUIDHelm release name (pin for debugging)
K8S_RUNNER_NODE_HOSTNodePort host resolution for non-local clusters
K8S_RUNNER_DEBUG0Log Helm stdout/stderr for install commands
K8S_RUNNER_PRESERVE0Keep namespace/release after run (for debugging)
K8S_RUNNER_DEPLOYMENT_TIMEOUT_SECSOverride deployment readiness timeout
K8S_RUNNER_HTTP_TIMEOUT_SECSOverride HTTP readiness timeout (port-forwards)
K8S_RUNNER_HTTP_PROBE_TIMEOUT_SECSOverride HTTP readiness timeout (NodePort probes)
K8S_RUNNER_PROMETHEUS_HTTP_TIMEOUT_SECSOverride Prometheus readiness timeout
K8S_RUNNER_PROMETHEUS_HTTP_PROBE_TIMEOUT_SECSOverride Prometheus NodePort probe timeout

Example:

# Pin namespace for debugging
K8S_RUNNER_NAMESPACE=nomos-test-debug \
K8S_RUNNER_PRESERVE=1 \
K8S_RUNNER_DEBUG=1 \
scripts/run/run-examples.sh -t 60 -v 3 -e 1 k8s

# Inspect resources
kubectl get pods -n nomos-test-debug
kubectl logs -n nomos-test-debug -l nomos/logical-role=validator

Platform & Build Configuration

Platform-specific build configuration:

VariableDefaultEffect
NOMOS_BUNDLE_DOCKER_PLATFORMHost archDocker platform for bundle builds: linux/arm64 or linux/amd64 (macOS/Windows hosts)
NOMOS_BIN_PLATFORMLegacy alias for NOMOS_BUNDLE_DOCKER_PLATFORM
COMPOSE_CIRCUITS_PLATFORMHost archCircuits platform for image builds: linux-aarch64 or linux-x86_64
NOMOS_EXTRA_FEATURESExtra cargo features to enable when building bundles (used by scripts/build/build-bundle.sh)

macOS / Apple Silicon:

# Native performance (recommended for local testing)
export NOMOS_BUNDLE_DOCKER_PLATFORM=linux/arm64

# Or target amd64 (slower via emulation)
export NOMOS_BUNDLE_DOCKER_PLATFORM=linux/amd64

Timeouts & Performance

Timeout and performance tuning:

VariableDefaultEffect
SLOW_TEST_ENVfalseDoubles built-in readiness timeouts (useful in CI / constrained laptops)
TESTNET_PRINT_ENDPOINTS0Print TESTNET_ENDPOINTS / TESTNET_PPROF lines during deploy (set automatically by scripts/run/run-examples.sh)
NOMOS_DISPERSAL_TIMEOUT_SECS20DA dispersal timeout (seconds)
NOMOS_RETRY_COOLDOWN_SECS3Cooldown between retries (seconds)
NOMOS_GRACE_PERIOD_SECS1200Grace period before enforcing strict time-based expectations (seconds)
NOMOS_PRUNE_DURATION_SECS30Prune step duration (seconds)
NOMOS_PRUNE_INTERVAL_SECS5Interval between prune cycles (seconds)
NOMOS_SHARE_DURATION_SECS5Share duration (seconds)
NOMOS_COMMITMENTS_WAIT_SECS1Commitments wait duration (seconds)
NOMOS_SDP_TRIGGER_DELAY_SECS5SDP trigger delay (seconds)

Example:

# Increase timeouts for slow environments
SLOW_TEST_ENV=true \
scripts/run/run-examples.sh -t 120 -v 5 -e 2 compose

Node Configuration (Advanced)

Node-level configuration passed through to nomos-node/nomos-executor:

VariableDefaultEffect
CONSENSUS_SLOT_TIMEConsensus slot time (seconds)
CONSENSUS_ACTIVE_SLOT_COEFFActive slot coefficient (0.0-1.0)
NOMOS_USE_AUTONATUnsetIf set, use AutoNAT instead of a static loopback address for libp2p NAT settings
NOMOS_CFGSYNC_PORT4400Port used for cfgsync service inside the stack
NOMOS_TIME_BACKENDmonotonicSelect time backend (used by compose/k8s stack scripts and deployers)

Example:

# Faster block production
CONSENSUS_SLOT_TIME=5 \
CONSENSUS_ACTIVE_SLOT_COEFF=0.9 \
POL_PROOF_DEV_MODE=true \
cargo run -p runner-examples --bin local_runner

Framework Runner Logging (Not Node Logs)

Control framework runner process logs (uses RUST_LOG, not NOMOS_*):

VariableDefaultEffect
RUST_LOGFramework runner log level (e.g., debug, info)
RUST_BACKTRACEEnable Rust backtraces on panic (1 or full)
CARGO_TERM_COLORCargo output color (always, never, auto)

Example:

# Debug framework runner (not nodes)
RUST_LOG=debug \
RUST_BACKTRACE=1 \
cargo run -p runner-examples --bin local_runner

Helper Script Variables

Variables used by helper scripts (scripts/run/run-examples.sh, etc.):

VariableDefaultEffect
NOMOS_NODE_REVFrom versions.envnomos-node git revision to build/fetch
NOMOS_BUNDLE_VERSIONFrom versions.envBundle schema version
NOMOS_IMAGE_SELECTIONInternal: image selection mode set by run-examples.sh (local/ecr/auto)
NOMOS_NODE_APPLY_PATCHES1Set to 0 to disable applying local patches when building bundles
NOMOS_NODE_PATCH_DIRpatches/nomos-nodePatch directory applied to nomos-node checkout during bundle builds
NOMOS_NODE_PATCH_LEVELPatch application level (all or an integer) for bundle builds

Quick Reference Examples

Minimal Host Run

POL_PROOF_DEV_MODE=true \
scripts/run/run-examples.sh -t 60 -v 3 -e 1 host

Debug Logging (Host)

POL_PROOF_DEV_MODE=true \
NOMOS_LOG_DIR=/tmp/logs \
NOMOS_LOG_LEVEL=debug \
NOMOS_LOG_FILTER="cryptarchia=trace" \
scripts/run/run-examples.sh -t 60 -v 3 -e 1 host

Compose with Observability

POL_PROOF_DEV_MODE=true \
NOMOS_METRICS_QUERY_URL=http://localhost:9090 \
NOMOS_GRAFANA_URL=http://localhost:3000 \
scripts/run/run-examples.sh -t 60 -v 3 -e 1 compose

K8s with Debug

POL_PROOF_DEV_MODE=true \
K8S_RUNNER_NAMESPACE=nomos-debug \
K8S_RUNNER_DEBUG=1 \
K8S_RUNNER_PRESERVE=1 \
scripts/run/run-examples.sh -t 60 -v 3 -e 1 k8s

CI Environment

env:
  POL_PROOF_DEV_MODE: true
  RUST_BACKTRACE: 1
  NOMOS_TESTS_KEEP_LOGS: 1

See Also