Flux
A container-native load tester for repeatable YAML scenarios, live metrics, quality gates, and portable reports.
- Status
- Completed
- Started
- Jan 2026
- Role
- Creator and maintainer — Rust execution engine, scenario model, metrics, reports, and Docker workflow.
- Stack
- Rust · Tokio · Docker · YAML · Prometheus
Run the same realistic performance test locally and in CI with one container and a versioned config.
What it is
Flux runs load tests from a Docker container and a YAML file. Its Rust execution engine supports high-concurrency async traffic, controlled sync runs, multipart uploads, and chained multi-step scenarios that extract values from one response for use in the next request.
Why I built it
Load-test setups can be hard to reproduce across laptops and CI, especially when scenarios need authentication, uploads, retries, or report tooling.
How it addresses the problem
Flux puts the runner and report stack inside Docker and keeps the workload in versionable YAML. Tokio drives concurrent requests, JSONPath connects scenario steps, and aggregate assertions turn latency and error targets into CI-friendly pass/fail gates.
What the project actually does
Async and sync execution
Tokio-based async workers maximize throughput while sync mode supports controlled rate-limit testing.
Multi-step scenarios
JSONPath extraction and variable templates connect login, profile, upload, and other dependent request flows.
Real workload controls
Concurrency, duration, ramp-up, think time, timeouts, retries, retryable statuses, and environment variables are configurable.
Quality gates
Error-rate, average, p95, and p99 assertions return a failing exit code when a target misses its performance budget.
Live and portable output
Exposes Prometheus metrics during a run and writes JSON, interactive HTML, and optional per-request CSV reports.
Container-native workflow
Configuration, test data, and results are mounted into one Docker invocation with no local runtime installation.
How the pieces connect
- 01 YAML scenario
- 02 Config validator
- 03 Tokio workers
- 04 HTTP target
- 05 Metrics engine
- 06 Reports / Prometheus
From zero to a useful result
- 01
Describe the workload
Create a YAML config with the target, concurrency, duration, assertions, and report paths.
- 02
Run the container
Mount the config and results directories into Flux.
docker run --rm -v ./config.yaml:/app/config.yaml -v ./results:/app/results ragilhadi/flux - 03
Read the result
Open the HTML report, inspect latency and error metrics, and let quality-gate failures stop CI when targets are missed.
Start from the terminal
docker run --rm -v ./config.yaml:/app/config.yaml ragilhadi/flux:latest