Skip to content

Quickstart

use openentropy_core::detect_available_sources;
let sources = detect_available_sources();
println!("{} entropy sources available", sources.len());
for source in &sources {
println!(" - {}", source.name);
}
use openentropy_core::{ConditioningMode, EntropyPool};
let pool = EntropyPool::auto();
let source = pool.source_names()[0].clone();
let bytes = pool.get_source_bytes(&source, 256, ConditioningMode::Sha256).unwrap();
use openentropy_core::{EntropyPool, full_analysis};
let pool = EntropyPool::auto();
let source = pool.source_names()[0].clone();
let data = pool.get_source_raw_bytes(&source, 5000).unwrap();
let analysis = full_analysis(&source, &data);
println!("Shannon entropy: {:.4} bits/byte", analysis.shannon_entropy);

If you are starting from the CLI, these are the most common patterns and flags.

Terminal window
# Discover sources (with runtime context)
openentropy scan
openentropy scan --telemetry
# Interactive TUI dashboard
openentropy monitor
openentropy monitor --telemetry
# Benchmark all fast sources vs a specific source
openentropy bench
openentropy bench all --profile deep --output bench.json
openentropy bench clock_jitter --rank-by throughput
# Stream bytes (all sources pooled) vs specific source names
openentropy stream --format hex --bytes 64
openentropy stream clock_jitter denormal_timing --format raw --bytes 1024
# Analysis profiles + explicit toggles
openentropy analyze --profile security
openentropy analyze --profile deep --output analysis.json
openentropy analyze --entropy --chaos --cross-correlation --output analysis.json
# Record all sources vs selected source, with optional calibration
openentropy record all --duration 1m --analyze --telemetry
openentropy record qcicada --calibrate --duration 5m
# Session workflows
openentropy sessions
openentropy sessions sessions/<id> --profile deep --trials --output session.json
openentropy compare sessions/<id-a> sessions/<id-b> --profile deep --output comparison.json