RustyKID (Rusty Data Quality & Insight Dashboard) — production 2.0 Rust toolkit for data profiling, quality rules, drift detection, PII masking, Great Expectations interop, batch runs, TUI, and HTTP API. Reports contain aggregate metrics only (no sample values in exports).
Repository: github.com/pathofharmony/RustyKID · Release notes: docs/RELEASE-2.0.md · Roadmap: docs/PROJECT-ROADMAP.md
| Crate | Role |
|---|---|
rustykid-core |
Types, errors, ScanLimits |
rustykid-profiler |
CSV / JSONL / Parquet profiling; optional Polars / DataFusion |
rustykid-rules |
DQ rules, schema/numeric drift, GE import/export |
rustykid-masking |
PII detect & mask (redact, HMAC hash, fake) |
rustykid-observability |
Pipeline events & metrics |
rustykid-cli |
rustykid binary |
rustykid-tui |
rustykid-tui interactive dashboard |
rustykid-server |
rustykid-server HTTP + web UI |
rustykid (python) |
PyO3 bindings; see rustykid-py/ |
cargo build --release
cargo test --workspace
./target/release/rustykid scan --dataset demo --input examples/sample.csv --format json
./target/release/rustykid-server --bind 127.0.0.1:8080More examples: examples/README.md.
cargo run -p rustykid-cli -- scan --dataset demo --input examples/sample.csv --format markdown
cargo run -p rustykid-cli -- check --dataset demo --rules rules.json --format markdown
cargo run -p rustykid-cli -- export-ge --rules rules.json --suite-name demo.orders --output ge_suite.json
cargo run -p rustykid-cli -- import-ge --suite ge_suite.json --output rules-from-ge.json
cargo run -p rustykid-cli -- run-batch --manifest examples/batch-manifest.json --output batch-report.json
cargo run -p rustykid-cli -- row-freshness --baseline-profile baseline.json --input current.csv --min-row-ratio 1.0Optional caps: --max-rows, --max-bytes (unbounded by default).
cargo run -p rustykid-server -- --bind 127.0.0.1:8080
curl -s http://127.0.0.1:8080/health
curl -s http://127.0.0.1:8080/metrics
curl -s http://127.0.0.1:8080/openapi.json
open http://127.0.0.1:8080/Optional: RUSTYKID_API_KEY, RUSTYKID_RATE_LIMIT_PER_MIN, cargo run -p rustykid-server --features otlp + OTEL_EXPORTER_OTLP_ENDPOINT.
cargo run -p rustykid-tui -- --input examples/sample.csv --dataset demo
cargo run -p rustykid-tui -- --smoke --input crates/tui/tests/fixtures/sample.csv --dataset ci.smokeKeys: j/k navigate, Tab views, f failed-only, s export, q quit.
cd rustykid-py && maturin develop --features pyo3
python -c "import rustykid; print(rustykid.scan('id\n1\n', dataset='demo')['row_count'])"docker build -t rustykid:2.0 .
docker run --rm rustykid:2.0 scan --dataset docker.demo --input /opt/rustykid/examples/sample.csv --format jsonSee docs/docker.md, docs/k8s-batch.md.
#![forbid(unsafe_code)]workspace-wide- Profiler exports: aggregates only
- Set
--max-rows/--max-bytesin untrusted environments (defaults are unbounded) - CI:
cargo deny,cargo audit,cargo-udeps(see.github/workflows/ci.yml)
cargo fmt --all --check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings