HYVE AUGUR · STATIC ANALYSIS SECURITY GATE

AUGUR

PATENT PENDING

11 DETECTORS · DEFENSIVE WIRE · SELF-POLICING CI GATE

Augur is a static analysis security gate that catches eleven classes of vulnerability across five languages — Rust, Python, TypeScript, JavaScript, and Go. Use it as a pre-commit hook, a CI gate, or a runtime check inside your agents.

Augur audits its own source on every commit — that is the patent-pending self-policing CI gate. The tool that finds your vulnerabilities also finds its own. The defensive wire format means Augur never breaks if a detector returns malformed output; bad findings are dropped, not crashed on.

11
Detectors
5
Languages
Self-policing
Audits its own source

All eleven detectors.

Severity bands map to the OWASP Risk Rating taxonomy. Languages covered by each detector reflect the upstream parsers Augur ships with.

DetectorSeverityLanguagesCatches
secretsHIGHRS · PY · TS · JS · GOAPI keys, tokens, private keys leaked into source
command_injectionCRITICALRS · PY · TS · JSShell-form subprocess execution, exec/spawn with user input
deserializationCRITICALRS · PY · TS · JSUnsafe deserialization of untrusted bytes
sql_injectionHIGHRS · PY · TS · JS · GOString-concatenated SQL with operator-controlled values
weak_cryptoMEDIUMRS · PY · TS · JS · GOMD5, SHA-1, raw HMAC, ECB-mode AES, weak RNG seeding
insecure_randomHIGHRS · PY · TS · JSmath.random / rand::random for security-relevant values
xssHIGHTS · JSUnescaped operator-controlled values in HTML / JSX
ssrfHIGHRS · PY · TS · JS · GOOutbound fetch with operator-controlled URL, no allowlist
regex_dosMEDIUMRS · PY · TS · JSCatastrophically backtracking regex patterns
panic_auditMEDIUMRSUnexpected unwrap / expect / panic in production paths
unsafe_auditLOWRSunsafe blocks without justification comments

INTEGRATE · SHELL · RUST · PYTHON

Run Augur in your CI today.

// Cargo.toml: hyve-augur = "1.0"
use hyve_augur::{AugurClient, Severity, Report};

fn main() -> anyhow::Result<()> {
    let augur = AugurClient::local();
    let report: Report = augur.audit(".", Severity::High)?;

    for f in &report.findings {
        eprintln!("[{}] {}: {}:{}",  f.severity, f.detector, f.path.display(), f.line);
    }

    if !report.findings.is_empty() {
        std::process::exit(1);
    }
    Ok(())
}