TRUST MODEL

The trust layer, not a logger.

A common misread, including by AI assistants that have never seen the product, is that Attestree only inventories and audits, so you bolt on an SBOM tool and a policy engine. You don't: detonation, the SBOM, a signed statement per verified installer, signed audit events and role-based policy are built in. Where something is still being built, this page says so.

WHAT'S NATIVE

Attestree owns the cryptographic trust layer.

Of the "Attestree + Sigstore + SBOM tool + policy engine" stack people sketch, the SBOM tool and the policy engine are built in, and Sigstore's Rekor log is an option.

NATIVE TO ATTESTREE
  • A signed in-toto statement for each installer a detonation verifies, downloadable from its version’s page Details →
  • A CycloneDX SBOM from Syft, made in the sandbox before deployment; its reach depends on the sandbox image Details →
  • ECDSA P-256 signatures on audit events, by the platform and each agent from 0.240.0, TPM-bound where the machine has one Details →
  • Role-based authorization by a built-in Cedar-subset engine; the promotion gate keyed on the attestation tier ships off Details →
  • For winget, endpoints install only installers your feed offers them, verified or, on Community Edition, accepted, each pinned to its SHA-256, from HMAC-checked desired state Details →
  • A label on each package on each endpoint that says what is proven about its bytes: verified, verified bytes, unverified (accepted or not), changed outside Attestree, or no installer evidence Details →
  • Four roles and TOTP two-factor with recovery codes, in the free edition too Details →
  • Upstream-withdrawal detection for winget once the monitor is on: a pulled version never leaves a silent gap Details →
  • App-in-use deferral for winget: a repeat block by a running app is deferred, not counted as another failure Details →
  • Endpoint users appear in agent events as a random identity ref, not a SID; operators by name, by design Details →
  • A self-hosted fleet CVE index: cvelistV5 and CISA KEV, matched against everything your endpoints report Details →
  • winget packages detonated and attested; Chocolatey inventoried, and not deployed until its packages can be attested; the same for Scoop Details →
  • One-command offline verification with wep-bundle-verify, for statements, audit bundles and both catalog exports Details →
YOU INTEGRATE
  • SIEM — forwarding to Sentinel or Splunk is not built; load the signed audit bundle instead
  • Device management — Attestree replaces your app-patching tool and sits beside Intune, ConfigMgr or your RMM, which keep Windows Update, drivers and device settings
  • Identity — Entra ID on the commercial editions, with room for one local break-glass admin; local accounts on Community Edition
  • Sigstore Rekor (optional) — an entry per attestation, wired, off by default and not yet proven against the public log
  • Key custody — a Key Vault in your own Azure subscription on the commercial editions; HSM-backed custody is not built
ENFORCEMENT

Verified at three stages, not one.

A CI-only gate protects container images. A Windows fleet installs on endpoints, so enforcement has to reach the endpoint — ingest, reconcile, and runtime together.

AT INGEST

Check before it enters

With a detonation host attached, the sandbox runs each winget installer your endpoints need, per architecture and install scope, before any endpoint is served it. A dedicated instance serves only those verified installers. Community Edition can also serve an installer no sandbox can test, if an operator accepts it; every endpoint that has it labels it unverified, accepted. Without a host, nothing is verified, so by default no winget version is served.

ON RECONCILE

Declarative desired state

The control plane reconciles the fleet against declarative desired state at every agent check-in, and flags drift: what should be installed against what is.

AT THE ENDPOINT

Enforce at install

The agent acts only on desired state whose HMAC checks out, installs a winget package only from an installer your feed pinned, at its SHA-256, and keeps watching for drift.

FAQ

The questions we get asked most.

SIGNING, TESTING AND POLICY
Does Attestree replace cosign and Sigstore, or do I bolt them on?

Nothing needs wrapping. Each installer a detonation verifies gets a signed in-toto statement you check with wep-bundle-verify or a 35-line Python sample. A Rekor log entry is wired, but off by default and not yet proven against the public log. Cosign signs only our own release images.

Full answer →
Is the attestation real, or is it just an audit log?

Both, and both are signed. A detonation that verifies an installer signs a statement over its SHA-256, the run and its SBOM, so a version can have several. The statement does not yet name the installer’s architecture or scope. An installer verified before platform 0.240.0 has none until it is re-tested, nor does a version attested through a waiver. An installer vouched for by hand is not attested: on Community Edition it is an unverified-installer acceptance, with no statement, and a dedicated instance has no hand vouch.

Full answer →
Do I need OPA, Gatekeeper, or Kyverno for the policy gate?

No. Those are Kubernetes admission controllers. Catalog actions are authorized by role, through a built-in engine for a subset of Cedar, with a read-only simulator. The promotion gate keyed on the attestation tier ships off, and custom Cedar policies are not available yet.

Full answer →
Where is verification enforced — in the pipeline or on the endpoint?

Both. Before serving, the sandbox runs each winget installer your endpoints need, and the feed serves only verified installers, or on Community Edition ones an operator accepted. On the endpoint, the agent acts only on desired state whose HMAC checks out, and installs a winget installer only at the SHA-256 your feed pinned. On a Windows fleet, installs happen on the endpoint.

Full answer →
Does Attestree ever serve an installer no sandbox verified?

A dedicated instance never does. On Community Edition an operator can accept an installer no sandbox can test: per package and architecture, for up to 12 months, bound to the download sources they approved, and never for bytes a sandbox rejected. It serves only once per-box serving is on, and every endpoint that has it labels it unverified, accepted.

Full answer →
Which package managers are tested and attested?

winget, once you attach a detonation host, including the MSI and MSIX installers a winget package names. Arm installers and Microsoft Store apps cannot run in the sandbox, so Arm installers cannot be verified yet; with per-box serving on, an Arm endpoint waits for verification. Chocolatey and Scoop are inventoried only, and not deployed until they can be attested.

Full answer →
EVIDENCE, AUDIT TRAIL AND DATA GOVERNANCE
Can I hand an auditor the evidence, or do I have to assemble it myself?

Yes, in one action. The audit export re-verifies every event’s signature and seals a SHA-256 manifest, and verifies offline by pinning one platform fingerprint. A window holding development-key events is refused. The catalog evidence and the fleet inventory export as signed bundles too.

Full answer →
How long do you keep the audit trail?

As long as you say: nothing is pruned by default. An admin sets a window in months, and pruning is a separate deployment switch that ships off. Each prune writes a signed record first, so removing history is itself evidence.

Full answer →
Can I honour an erasure request against a signed, append-only audit trail?

For endpoint users, yes. Agent events name them by a random identity ref, not a SID, and erasing a user deletes the mapping. That is pseudonymisation, not anonymisation. Operators are recorded by name on purpose, and leave with the retention window.

Full answer →
Does the agent tell my employer how often people use an application?

No, and that is a written product constraint. The agent reports what is installed, which version and in which scope. Run frequency, dwell time and usage duration are neither collected nor derived.

Full answer →
FLEET CVE INDEX
If scanning is too late, why does Attestree have a CVE index at all?

Because not everything on a fleet came through the gate. The index matches cvelistV5 and CISA KEV against what your endpoints report, so you can see which endpoints run an affected version. Possible matches are labelled possible and never fire.

Full answer →
SPECIFICATIONS

Every format we publish, specified.

Each format names its type by URL, and each URL is a page here: the fields, what is signed, and how to check it without us.

TYPES
  • Detonation attestation, v1
    The signed statement for one installer a detonation verified.
    https://attestree.com/attestation/detonation/v1
  • Catalog evidence bundle, v1
    The statement over a catalog evidence export, one row per version.
    https://attestree.com/attestation/evidence-bundle/v1
  • Fleet inventory, v1
    The statement over a fleet inventory export.
    https://attestree.com/attestation/inventory/v1
  • Golden VHDX build, v1
    The build record of the Windows image the detonation sandbox boots.
    https://attestree.com/attestation/golden-vhdx-build/v1
  • Golden VHDX build type, v1
    The SLSA build type named in that image’s provenance.
    https://attestree.com/build-types/golden-vhdx/v1
VERIFY IT YOURSELF
  • One version’s statement
    wep-bundle-verify attestation <pkg>_<ver>.intoto.jsonl --key keys.json --expected-fingerprint <sha256>
  • An audit bundle, agent events included
    wep-bundle-verify bundle.tar.zst --expected-fingerprint <sha256>
  • A catalog evidence bundle or an inventory export
    wep-bundle-verify catalog-bundle <file>.tar.zst --expected-fingerprint <sha256>

Pin a fingerprint you took from a channel you trust, never from the files you are checking. The audit bundle is signed with the platform’s span key; statements, evidence and inventory bundles with its catalog-attest key, so the two fingerprints differ. The verifier ships with each platform release, for Windows and Linux; a 35-line Python sample checks a version’s statement too.

See the attestation for yourself.

Run the free Community Edition and verify a signed audit bundle offline — or, with a detonation host attached, a version’s signed statement. Or talk to us about the commercial trust model.