This is the detailed output reference for ere-hosts: metrics files, hardware metadata, proof files, serialized input dumps, and workload metadata.
For accepted input schemas, see Benchmark Execution Inputs. For common execution commands, see Benchmark Execution.
Default output locations:
- Metrics output folder:
zkevm-metrics/ - Verification proof folder:
zkevm-fixtures-proofs/ - Zisk profile output folder:
zisk-profiles/
Proofs are only saved when --save-proofs <PATH> is provided with --action prove.
Serialized guest inputs are only saved when --dump-inputs <PATH> is provided. These dumps are zkVM-independent, so each fixture input is written once even if multiple zkVMs are selected.
Completed execution and proving runs are still written as successful metrics even when public values do not match the fixture expectation. In that case the runner logs a warning and writes output_matched: false inside execution.success or proving.success. zkVM errors, proof verification errors, expected-output computation errors, and panics are still recorded as crashed or returned as fatal infrastructure errors as before.
For stateless-validator runs, metrics are written under:
zkevm-metrics/
hardware.json
<execution-client>-<execution-client-version>/
<zkvm>-<sdk-version>/
<fixture-name>.json
For empty-program, there is no execution-client subfolder:
zkevm-metrics/
hardware.json
<zkvm>-<sdk-version>/
empty_program.json
Each fixture metrics file is a single pretty-printed BenchmarkRun JSON object. The zkevm-metrics library helper BenchmarkRun::to_json serializes a list of runs, but the CLI output files under zkevm-metrics/ contain one object per file.
hardware.json contains detected host hardware:
{
"cpu_model": "AMD Ryzen 7 PRO 7840U w/ Radeon 780M Graphics",
"total_ram_gib": 30,
"gpus": [
{
"model": "NVIDIA ..."
}
]
}GPU information is detected through nvidia-smi when available.
A successful execution metrics file has this shape:
{
"name": "rpc_block_23743854",
"timestamp_completed": "2026-05-25T12:34:56.789Z",
"metadata": {
"block_used_gas": 27085079
},
"execution": {
"success": {
"output_matched": true,
"total_num_cycles": 1048737679,
"region_cycles": {
"setup": 1000
},
"execution_duration": {
"secs": 12,
"nanos": 327837000
}
}
}
}Optional top-level fields are omitted when they are not populated:
executionis present for--action execute.provingis present for--action prove.verificationis present for--action verify.
Success variants:
{
"execution": {
"success": {
"output_matched": true,
"total_num_cycles": 123,
"region_cycles": {},
"execution_duration": {
"secs": 0,
"nanos": 1000000
}
}
}
}{
"proving": {
"success": {
"output_matched": true,
"proof_size": 256,
"proving_time_ms": 2000,
"verification_time_ms": 200
}
}
}{
"verification": {
"success": {
"proof_size": 256,
"verification_time_ms": 200
}
}
}Crash variants use the same enum wrapper with crashed:
{
"execution": {
"crashed": {
"reason": "error or panic message"
}
}
}The metadata field is workload-specific:
- Legacy stateless-validator fixtures write
{"block_used_gas": <u64>}. - Direct EEST stateless-validator fixtures write EEST provenance and block metadata.
empty-programand standalone verification metrics writenull.
Direct EEST metadata has this shape:
{
"fixture_format": "eest",
"original_test_name": "tests/foo.py::test_case[param]",
"source_path": "blockchain_tests/for_amsterdam/compute/mcopy.json",
"block_index": 0,
"network": "Amsterdam",
"chain_id": 1,
"block_number": 1,
"block_used_gas": 16
}block_number and block_used_gas are null when the source fixture does not provide those values.
Generate and save proofs:
cargo run -p ere-hosts --release -- --zkvms sp1 \
--action prove \
--save-proofs my-proofs \
stateless-validator --execution-client rethVerify proofs from a local folder:
cargo run -p ere-hosts --release -- --zkvms sp1 \
--action verify \
--proofs-folder my-proofs \
stateless-validator --execution-client rethVerify proofs from a remote archive:
cargo run -p ere-hosts --release -- --zkvms sp1 \
--action verify \
--proofs-url https://example.com/proofs.tar.gz \
stateless-validator --execution-client rethWhen --proofs-url is used, the archive is downloaded, extracted to a temporary directory, and cleaned up after verification.
Dump the raw serialized guest inputs used for a run:
cargo run -p ere-hosts --release -- --zkvms sp1 \
--dump-inputs debug-inputs \
stateless-validator --execution-client rethUse these dumps to inspect exactly what bytes were passed to the guest program after fixture loading and any host-side conversion.