Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Environment Variables Reference

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


Runner Selection & Topology

Control which runner to use and the test topology:

VariableDefaultEffect
LOGOS_BLOCKCHAIN_DEMO_NODES1Number of nodes (all runners)
LOGOS_BLOCKCHAIN_DEMO_RUN_SECS60Run duration in seconds (all runners)
LOCAL_DEMO_NODESLegacy: Number of nodes (host runner only)
LOCAL_DEMO_RUN_SECSLegacy: Run duration (host runner only)
COMPOSE_NODE_PAIRSCompose-specific topology format: “nodes” (e.g., 3)

Example:

# Run with 5 nodes, for 120 seconds
LOGOS_BLOCKCHAIN_DEMO_NODES=5 \
LOGOS_BLOCKCHAIN_DEMO_RUN_SECS=120 \
scripts/run/run-examples.sh -t 120 -n 5 host

Node Binaries (Host Runner)

Required for host runner when not using helper scripts:

VariableRequiredDefaultEffect
LOGOS_BLOCKCHAIN_NODE_BINYes (host)Path to logos-blockchain-node binary
LOGOS_BLOCKCHAIN_NODE_PATHNoPath to logos-blockchain-node git checkout (dev workflow)

Example:

export LOGOS_BLOCKCHAIN_NODE_BIN=/path/to/logos-blockchain-node/target/release/logos-blockchain-node

Docker Images (Compose / K8s)

Required for compose and k8s runners:

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

Example:

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

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

Circuit Assets

Circuit asset configuration used by local runs and image builds:

VariableDefaultEffect
LOGOS_BLOCKCHAIN_CIRCUITS~/.logos-blockchain-circuitsDirectory containing circuit assets
VERSIONFrom versions.envCircuit release tag (used by helper scripts)
LOGOS_BLOCKCHAIN_CIRCUITS_VERSIONLegacy alias for VERSION (supported by some build scripts)
LOGOS_BLOCKCHAIN_CIRCUITS_PLATFORMAuto-detectedOverride circuits platform (e.g. linux-x86_64, macos-aarch64)
LOGOS_BLOCKCHAIN_CIRCUITS_HOST_DIR_REL.tmp/logos-blockchain-circuits-hostOutput dir for host circuit bundle (relative to repo root)
LOGOS_BLOCKCHAIN_CIRCUITS_LINUX_DIR_REL.tmp/logos-blockchain-circuits-linuxOutput dir for linux circuit bundle (relative to repo root)
LOGOS_BLOCKCHAIN_CIRCUITS_NONINTERACTIVE0Set to 1 to overwrite outputs without prompting in setup scripts
LOGOS_BLOCKCHAIN_CIRCUITS_REBUILD_RAPIDSNARK0Set to 1 to force rebuilding rapidsnark (host bundle only)

Example:

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

Node Logging

Control node log output (not framework runner logs):

VariableDefaultEffect
LOGOS_BLOCKCHAIN_LOG_LEVELinfoGlobal log level: error, warn, info, debug, trace
LOGOS_BLOCKCHAIN_LOG_FILTERFine-grained module filtering (e.g., cryptarchia=trace)
LOGOS_BLOCKCHAIN_LOG_DIRHost runner: directory for per-node log files (persistent). Compose/k8s: use cfgsync.yaml for file logging.
LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS0Keep per-run temporary directories (useful for debugging/CI artifacts)
LOGOS_BLOCKCHAIN_TESTS_TRACINGfalseEnable debug tracing preset (combine with LOGOS_BLOCKCHAIN_LOG_DIR unless external tracing backends configured)

Important: Node logging ignores RUST_LOG; use LOGOS_BLOCKCHAIN_LOG_LEVEL and LOGOS_BLOCKCHAIN_LOG_FILTER for node logs.

Example:

# Debug logging to files
LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/test-logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace" \
cargo run -p runner-examples --bin local_runner

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

Common filter targets:

Target PrefixSubsystem
lb_cryptarchiaConsensus (Cryptarchia)
lb_blendMix network/privacy layer
lb_chain_serviceChain service (node APIs/state)
lb_chain_networkP2P networking
lb_chain_leader_serviceLeader election

Observability & Metrics

Optional observability integration:

VariableDefaultEffect
LOGOS_BLOCKCHAIN_METRICS_QUERY_URLPrometheus-compatible base URL for runner to query (e.g., http://localhost:9090)
LOGOS_BLOCKCHAIN_METRICS_OTLP_INGEST_URLFull OTLP HTTP ingest URL for node metrics export (e.g., http://localhost:9090/api/v1/otlp/v1/metrics)
LOGOS_BLOCKCHAIN_GRAFANA_URLGrafana base URL for printing/logging (e.g., http://localhost:3000)
LOGOS_BLOCKCHAIN_OTLP_ENDPOINTOTLP trace endpoint (optional)
LOGOS_BLOCKCHAIN_OTLP_METRICS_ENDPOINTOTLP metrics endpoint (optional)

Example:

# Enable Prometheus querying
export LOGOS_BLOCKCHAIN_METRICS_QUERY_URL=http://localhost:9090
export LOGOS_BLOCKCHAIN_METRICS_OTLP_INGEST_URL=http://localhost:9090/api/v1/otlp/v1/metrics
export LOGOS_BLOCKCHAIN_GRAFANA_URL=http://localhost:3000

scripts/run/run-examples.sh -t 60 -n 3 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 -n 3 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 -n 3 k8s

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

Platform & Build Configuration

Platform-specific build configuration:

VariableDefaultEffect
LOGOS_BLOCKCHAIN_BUNDLE_DOCKER_PLATFORMHost archDocker platform for bundle builds: linux/arm64 or linux/amd64 (macOS/Windows hosts)
LOGOS_BLOCKCHAIN_BIN_PLATFORMLegacy alias for LOGOS_BLOCKCHAIN_BUNDLE_DOCKER_PLATFORM
COMPOSE_CIRCUITS_PLATFORMHost archCircuits platform for image builds: linux-aarch64 or linux-x86_64
LOGOS_BLOCKCHAIN_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 LOGOS_BLOCKCHAIN_BUNDLE_DOCKER_PLATFORM=linux/arm64

# Or target amd64 (slower via emulation)
export LOGOS_BLOCKCHAIN_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)

Example:

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

Node Configuration (Advanced)

Node-level configuration passed through to logos-blockchain-node:

VariableDefaultEffect
CONSENSUS_SLOT_TIMEConsensus slot time (seconds)
CONSENSUS_ACTIVE_SLOT_COEFFActive slot coefficient (0.0-1.0)
LOGOS_BLOCKCHAIN_USE_AUTONATUnsetIf set, use AutoNAT instead of a static loopback address for libp2p NAT settings
LOGOS_BLOCKCHAIN_CFGSYNC_PORT4400Port used for cfgsync service inside the stack
LOGOS_BLOCKCHAIN_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 \
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
LOGOS_BLOCKCHAIN_NODE_REVFrom versions.envlogos-blockchain-node git revision to build/fetch
LOGOS_BLOCKCHAIN_BUNDLE_VERSIONFrom versions.envBundle schema version
LOGOS_BLOCKCHAIN_IMAGE_SELECTIONInternal: image selection mode set by run-examples.sh (local/ecr/auto)
LOGOS_BLOCKCHAIN_NODE_APPLY_PATCHES1Set to 0 to disable applying local patches when building bundles
LOGOS_BLOCKCHAIN_NODE_PATCH_DIRpatches/logos-blockchain-nodePatch directory applied to logos-blockchain-node checkout during bundle builds
LOGOS_BLOCKCHAIN_NODE_PATCH_LEVELPatch application level (all or an integer) for bundle builds

Quick Reference Examples

Minimal Host Run

scripts/run/run-examples.sh -t 60 -n 3 host

Debug Logging (Host)

LOGOS_BLOCKCHAIN_LOG_DIR=/tmp/logs \
LOGOS_BLOCKCHAIN_LOG_LEVEL=debug \
LOGOS_BLOCKCHAIN_LOG_FILTER="cryptarchia=trace" \
scripts/run/run-examples.sh -t 60 -n 3 host

Compose with Observability

LOGOS_BLOCKCHAIN_METRICS_QUERY_URL=http://localhost:9090 \
LOGOS_BLOCKCHAIN_GRAFANA_URL=http://localhost:3000 \
scripts/run/run-examples.sh -t 60 -n 3 compose

K8s with Debug

K8S_RUNNER_NAMESPACE=nomos-debug \
K8S_RUNNER_DEBUG=1 \
K8S_RUNNER_PRESERVE=1 \
scripts/run/run-examples.sh -t 60 -n 3 k8s

CI Environment

env:
  RUST_BACKTRACE: 1
  LOGOS_BLOCKCHAIN_TESTS_KEEP_LOGS: 1

See Also