AgentTrust
AgentTrust
Getting started
Getting started

Architecture overview

The three-program AgentTrust flow from x402 request to ERC-8004 feedback.

AgentTrust has three on-chain programs and one TypeScript surface.

Flow

agent request
  -> x402 facilitator
  -> TrustGate /verify
  -> PolicyVault gate_payment
  -> Allow | Deny | RequireValidation
  -> settlement + TrustGate emit_feedback
  -> Quantu agent_registry_8004 give_feedback

Components

ComponentLocationResponsibility
PolicyVaultprograms/policy-vaultcompose five policy kinds and return a decision
TrustGateprograms/trustgatesign feedback CPI as the facilitator PDA
ValidationRegistryprograms/validation-registrystore capability attestations read by PolicyVault
SDKtrustgate/sdkexpose client helpers and Express routes

Decision path

PolicyVault is deliberately fail-fast:

  1. KillSwitch
  2. Spending
  3. Velocity
  4. CounterpartyTier
  5. RequireValidation

State changes are applied only on Allow. Deny and RequireValidation return a decision without mutating spending or velocity counters.

Trust reads

PolicyVault reads foreign PDAs defensively:

DataParserLocked offset
Quantu AtomStats.risk_scorepolicy-vault/src/ext/atom_engine.rsbyte 549
Quantu AtomStats.trust_tierpolicy-vault/src/ext/atom_engine.rsbyte 551
Quantu AtomStats.confidencepolicy-vault/src/ext/atom_engine.rsbytes 557..558
AgentTrust attestation subjectpolicy-vault/src/ext/validation_registry.rsbyte 8
AgentTrust attestation expirypolicy-vault/src/ext/validation_registry.rsbyte 208

Verification boundary

5 / 5 invariants formally verified

PolicyVault safety properties are checked by Kani in CI.

  • paused_implies_no_allow
  • velocity_counter_le_limit
  • counterparty_tier_monotone
  • validation_expiry_correct
  • multisig_threshold_enforced

The Kani harnesses target the pure Rust policy/composer layer rather than the Anchor wrappers. That keeps proofs short, deterministic, and tied to the code that makes decisions.

Deployment boundary

The docs and SDK default to devnet program IDs. Quantu mainnet IDs are used for local validator cloning and reference-grade byte layouts.

repo github.com/mohit-1710/agenttrustnpm @agenttrust-sdk/trustgateMIT

On this page

⌘I