Getting Started
Install
[dependencies]
stygian-charon = "*"
Enable optional features when needed:
stygian-charon = { version = "*", features = ["metrics", "caching"] }
Quick start: investigate HAR and build policy
use stygian_charon::{ TargetClass, build_runtime_policy, infer_requirements_with_target_class, investigate_har, map_runtime_policy, }; fn main() -> Result<(), Box<dyn std::error::Error>> { let har = r#"{ "log": { "version": "1.2", "creator": {"name": "example", "version": "1.0"}, "pages": [{ "id": "page_1", "title": "https://example.com", "startedDateTime": "2026-01-01T00:00:00.000Z", "pageTimings": {"onLoad": 0} }], "entries": [{ "pageref": "page_1", "startedDateTime": "2026-01-01T00:00:00.000Z", "time": 0, "request": { "method": "GET", "url": "https://example.com", "httpVersion": "HTTP/2", "headers": [], "queryString": [], "cookies": [], "headersSize": -1, "bodySize": 0 }, "response": { "status": 403, "statusText": "Forbidden", "httpVersion": "HTTP/2", "headers": [], "cookies": [], "content": { "size": 0, "mimeType": "text/html", "text": "captcha-delivery.com" }, "redirectURL": "", "headersSize": -1, "bodySize": 0 }, "cache": {}, "timings": { "blocked": 0, "dns": 0, "connect": 0, "send": 0, "wait": 0, "receive": 0, "ssl": 0 } }] } }"#; let report = investigate_har(har)?; let requirements = infer_requirements_with_target_class(&report, TargetClass::ContentSite); let policy = build_runtime_policy(&report, &requirements); let acquisition = map_runtime_policy(&policy); println!("provider: {:?}", report.aggregate.provider); println!("risk score: {}", policy.risk_score); println!("recommended acquisition mode: {:?}", acquisition.mode); Ok(()) }
Quick start: classify one transaction
use stygian_charon::{TransactionView, classify_transaction}; use std::collections::BTreeMap; fn main() { let transaction = TransactionView { url: "https://example.com".to_string(), host: "example.com".to_string(), status: 403, resource_type: Some("document".to_string()), response_headers: BTreeMap::new(), response_body_excerpt: Some("captcha-delivery.com".to_string()), }; let detection = classify_transaction(&transaction); println!("provider: {:?}", detection.provider); }
Example commands
cargo run -p stygian-charon --example recon
cargo run -p stygian-charon --example cache_benchmark --features caching
cargo run -p stygian-charon --example live_slo_validator --features live-validation -- --help