Annotated Tree

Directory structure with key paths annotated:

nomos-testing/
├─ testing-framework/           # Core library crates
│  ├─ configs/                  # Node config builders, topology generation, tracing/logging config
│  ├─ core/                     # Scenario model (ScenarioBuilder), runtime (Runner, Deployer), topology, node spawning
│  ├─ workflows/                # Workloads (transactions, DA, chaos), expectations (liveness), builder DSL extensions
│  ├─ runners/                  # Deployment backends
│  │  ├─ local/                 # LocalDeployer (spawns local processes)
│  │  ├─ compose/               # ComposeDeployer (Docker Compose + Prometheus)
│  │  └─ k8s/                   # K8sDeployer (Kubernetes Helm)
│  └─ assets/                   # Docker/K8s stack assets
│     └─ stack/
│        ├─ kzgrs_test_params/  # KZG circuit parameters (fetch via setup-nomos-circuits.sh)
│        ├─ monitoring/         # Prometheus config
│        ├─ scripts/            # Container entrypoints, image builder
│        └─ cfgsync.yaml        # Config sync server template
│
├─ examples/                    # PRIMARY ENTRY POINT: runnable binaries
│  └─ src/bin/
│     ├─ local_runner.rs        # Local processes demo (POL_PROOF_DEV_MODE=true)
│     ├─ compose_runner.rs      # Docker Compose demo (requires image)
│     └─ k8s_runner.rs          # Kubernetes demo (requires cluster + image)
│
├─ scripts/                     # Helper utilities
│  └─ setup-nomos-circuits.sh   # Fetch KZG circuit parameters
│
└─ book/                        # This documentation (mdBook)

Key Directories Explained

testing-framework/

Core library crates providing the testing API.

CratePurposeKey Exports
configsNode configuration buildersTopology generation, tracing config
coreScenario model & runtimeScenarioBuilder, Deployer, Runner
workflowsWorkloads & expectationsScenarioBuilderExt, ChaosBuilderExt
runners/localLocal process deployerLocalDeployer
runners/composeDocker Compose deployerComposeDeployer
runners/k8sKubernetes deployerK8sDeployer

testing-framework/assets/stack/

Docker/K8s deployment assets:

  • kzgrs_test_params/: Circuit parameters (override via NOMOS_KZGRS_PARAMS_PATH)
  • monitoring/: Prometheus config
  • scripts/: Container entrypoints and image builder
  • cfgsync.yaml: Configuration sync server template

examples/ (Start Here!)

Runnable binaries demonstrating framework usage:

  • local_runner.rs — Local processes
  • compose_runner.rs — Docker Compose (requires NOMOS_TESTNET_IMAGE built)
  • k8s_runner.rs — Kubernetes (requires cluster + image)

Run with: POL_PROOF_DEV_MODE=true cargo run -p runner-examples --bin <name>

All runners require POL_PROOF_DEV_MODE=true to avoid expensive proof generation.

scripts/

Helper utilities:

  • setup-nomos-circuits.sh: Fetch KZG parameters from releases

Observability

Compose runner includes:

  • Prometheus at http://localhost:9090 (metrics scraping)
  • Node metrics exposed per validator/executor
  • Access in expectations: ctx.telemetry().prometheus_endpoint()

Logging controlled by:

  • NOMOS_LOG_DIR — Write per-node log files
  • NOMOS_LOG_LEVEL — Global log level (error/warn/info/debug/trace)
  • NOMOS_LOG_FILTER — Target-specific filtering (e.g., consensus=trace,da=debug)
  • NOMOS_TESTS_TRACING — Enable file logging for local runner

See Logging and Observability for details.

To Do ThisGo Here
Run an exampleexamples/src/bin/cargo run -p runner-examples --bin <name>
Write a custom scenariotesting-framework/core/ → Implement using ScenarioBuilder
Add a new workloadtesting-framework/workflows/src/workloads/ → Implement Workload trait
Add a new expectationtesting-framework/workflows/src/expectations/ → Implement Expectation trait
Modify node configstesting-framework/configs/src/topology/configs/
Extend builder DSLtesting-framework/workflows/src/builder/ → Add trait methods
Add a new deployertesting-framework/runners/ → Implement Deployer trait

For detailed guidance, see Internal Crate Reference.