The Sovri compliance agent — a Rust crate for air-gapped compliance rule
execution. It runs the sovri-sdk rule engine locally, with no network and no
secrets.
v0.6.0 — the V0.6 reporting track on the sovri-sdk engine (bin + lib).
The agent scans Linux host posture offline, persists evidence, and exports the
persisted compliance corpus as deterministic PDF reports, SpreadsheetML
workbooks, and offline-verifiable signed JSON. Host scanners — system, user, SSH,
and Docker — capture the host's effective posture offline and grade it through
the SDK engine, reporting an absent subsystem as SKIPPED rather than a false
pass. The binary keeps the offline selftest command.
cargo run -- selftest
# sovri-agent 0.6.0: selftest ok (offline, no external services)
cargo run -- --version
# sovri-agent 0.6.0 (sovri-sdk 0.3.0)The sovri_agent library wires the agent to the SDK engine:
scanners— aScannertrait that splits host acquisition from pure evaluation, and a rule-idRegistrythat dispatches each rule to its scanner behind asovri_sdk::RuleEvaluator.controls— the self-contained selftest control proving the engine seam viasovri_sdk::Engine::execute.evidence— a relay re-exporting the SDK evidence contract.report— deterministic PDF compliance reporting from a persisted corpus.matrix— SpreadsheetML compliance matrix export.signed_json— canonical signed JSON export and offline verification.sdk_version()— the linked SDK contract version.
This crate builds, tests, and lints with the standard Rust toolchain. Runtime
dependencies are limited to the first-party sovri-sdk, pinned by git revision,
and ed25519-dalek for signed JSON. PDF and SpreadsheetML export remain
hand-emitted with no third-party runtime dependency, and no secrets are required.
CI fetches the SDK from its pinned revision. To co-develop against a sibling
sovri-sdk-rust checkout, copy
.cargo/config.toml.example to .cargo/config.toml and the build uses that path
instead.
- Build:
cargo build - Test:
cargo test - Lint:
cargo fmt --check && cargo clippy --all-targets -- -D warnings
The same gates run in CI (.github/workflows/ci.yml) on every pull request.
Local Git hooks mirroring them are declared in lefthook.yml.
Sovri follows an open-core model: an Apache-2.0 Community edition plus a proprietary managed Cloud edition.
- This repository is Community, licensed under Apache-2.0 (see
LICENSE). Every source file carries anSPDX-License-Identifier: Apache-2.0header. - Proprietary Cloud code lives in separate private repositories and never ships here. Cloud may depend on the agent's public contracts; this repository never depends on Cloud.
The agent is built to run in regulated, frequently air-gapped environments.
sovri-agent selftestexits 0 with no network connectivity, makes no outbound connection, and needs no environment variables beyond the operating-system defaults.- Once dependencies are fetched,
cargo buildandcargo testrun offline with no secrets configured; the built agent makes no runtime network calls. - The agent reads framework text from versioned catalogs (
sovri-frameworks), never from an external API at runtime.
Apache-2.0. See LICENSE and NOTICE.