argus-ledger 0.1.0-alpha.2

Tamper-evident append-only SHA-256 provenance and audit ledger for autonomous agents.
Documentation
  • Coverage
  • 97.3%
    36 out of 37 items documented1 out of 16 items with examples
  • Size
  • Source code size: 41.5 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 301.9 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 1s Average build duration of successful builds.
  • all releases: 1s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Perseus-Computing-LLC/argus
    0 1 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • tcconnally

argus-ledger

Append-only SHA-256 audit log for autonomous agents.

Crates.io docs.rs License: MIT MSRV

Part of the Perseus suite by Perseus Computing LLC.


Why Argus exists

When autonomous agents run shell commands, call APIs, or mutate files, you need a reliable record of what happened and proof that logs were not changed after the fact.

Argus records every event into an append-only sequence where each entry includes the SHA-256 hash of the previous record. If any entry is altered or deleted, verification fails immediately and points directly to the modified index.


Key design goals

  • Continuous hash chaining: Every event links cryptographically to the one before it, rooted at genesis.
  • Fast tamper detection: Scans 100,000 events in 46.00 µs and fails closed the moment a single byte does not match.
  • Low latency appends: Appending an event takes 4.12 µs, fast enough to log every action inline during agent execution.
  • Self-contained: Pure Rust that runs fully offline without external audit services or cloud dependencies.

Installation

Add argus-ledger to your Cargo.toml:

[dependencies]
argus-ledger = "0.1.0-alpha.2"

Or via Cargo:

cargo add argus-ledger

Example

use argus_ledger::{
    AuditLedgerReader, AuditLedgerWriter, AuditVerifier, InMemoryLedger,
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut ledger = InMemoryLedger::new();

    // 1. Record agent startup
    let ev1 = ledger.append(
        "AGENT_BOOTSTRAP",
        "runtime:node_0",
        r#"{"model":"qwen2.5-coder-32b","temperature":0.2}"#,
    )?;
    println!("Sequence #{}: Hash {}", ev1.sequence, &ev1.event_hash[0..16]);

    // 2. Record tool execution
    let ev2 = ledger.append(
        "TOOL_INVOCATION",
        "runtime:node_0",
        r#"{"tool":"terminal","command":"cargo test --workspace"}"#,
    )?;
    println!("Sequence #{}: Hash {}", ev2.sequence, &ev2.event_hash[0..16]);

    // 3. Verify cryptographic integrity
    let report = ledger.verify_chain()?;
    assert!(report.valid, "Chain integrity compromised");
    println!(
        "Chain verified intact: {} blocks validated across sequence.",
        report.total_events
    );

    Ok(())
}

Benchmark results

Measured on bare-metal Linux x86_64 (rustc 1.85.0, opt-level = 3, lto = "fat"):

Metric Measurement Test condition
Append Latency 4.12 µs Sequential event hashing and append
Tamper Detection Latency 46.00 µs Scan across 100k events
Verification Throughput 2,170,000 events/s Full chain validation traversal
Tamper Detection Rate 100.00% Single-bit byte flip sensitivity
External Dependencies 0 Pure Rust offline primitives

Run benchmarks yourself:

cargo run --release -p perseus-benchmarks

License

Copyright © 2026 Perseus Computing LLC. Released under the MIT License.