UTA v1.0.0 — Universal Trust Adapter (8 format adapters, 12-stage verification pipeline)
·
136 commits
to main
since this release
Universal Trust Adapter (UTA) v1.0.0
The USB-C of agent trust. UTA translates between 8 trust credential formats used by AI agents via a canonical Universal Trust Schema (UTS).
What shipped in v1.0.0
8 trust credential formats translated:
- ATC (Agent Trust Card — AliceLabs)
- EAT-AI (IETF RFC 9421)
- ZTA (Anthropic Zero-Trust Agent)
- A2A Agent Card (Google/AAIF)
- MCP Server Card (Anthropic)
- W3C Verifiable Credentials
- OAuth/OIDC
- SPIFFE SVID
Canonical schema: Universal Trust Schema (UTS) v2.0.0
12-stage fail-closed verification pipeline:
- Identity verification
- Attestation structure validation
- Capabilities enum validation
- Evidence verification
- Risk score range check
- Ed25519 signature verification (over RFC 8785 JCS canonical bytes)
- Revocation list check
- Expiration window check
- Proof-of-Possession (PoP) challenge
- TrustRegistry key binding
- Action receipt signature
- Supply-chain SBOM verification
Crypto primitives:
- Ed25519 signatures (RFC 8032) — fast, compact, quantum-resistant enough
- RFC 8785 JCS canonicalization — same bytes in every language (Node.js, Python, Go, Rust)
- SHA-256 over canonical bytes
- Domain separation across 7 distinct signature domains
- Proof-of-Possession with nonce challenge (anti-replay)
Test vectors: 5 frozen fixtures with:
- Canonical JCS bytes per vector (hex + base64 + utf8)
- SHA-256 of canonical bytes
- Ed25519 signature
- Expected verification outcome
- Test CA private key intentionally published for cross-language reproducibility
Conformance suite: 23/23 tests pass.
Multi-channel distribution
5 independent download channels (all serve byte-identical tarballs):
- NPM Registry (primary)
- jsDelivr CDN (free mirror of NPM)
- unpkg CDN (alternative mirror)
- marketnow.site (AliceLabs-owned origin)
- GitHub org (alicelabs-llc)
Bug fixes from community feedback
- JCS replacer bug (reported by @anp2network on dev.to):
JSON.stringify(payload, Object.keys(payload).sort())was a replacer allowlist, not a sorter. Nested keys were dropped from signature preimage. Fixed with proper RFC 8785 JCS implementation. - Forward slash escaping: RFC 8785 §3.2.2.2 says forward slash MUST NOT be escaped. Fixed.
- Canonicalization method mislabel: Cards signed with old V8-sort form were reporting
canonicalization_method = RFC 8785 JCS. Fixed.
Stats at UTA v1.0.0 release
- NPM packages: 7
- NPM monthly downloads: 2,276
- Dev.to articles: 96
- Dev.to comments received: 44
- Dev.to comments responded: 32 (via 5 batched response articles)
- Test vectors: 5 frozen + manifest
- Conformance tests: 23/23 pass
- Format adapters: 8 (ATC, EAT-AI, ZTA, A2A, MCP Card, W3C VC, OAuth, SPIFFE)
Install
# Install the ATC adapter SDK (one of 8 adapters)
npm install agent-trust-card
# Verify any ATC card
atc verify card.json
# Install the MCP server (958 downloads/mo)
npx -y marketnow-mcp
# Multi-source installer (tries all 5 channels)
curl -fsSL https://marketnow.site/install.sh | bashRepo
- Canonical: https://github.com/alicelabs-llc/universal-trust-adapter
- Architecture: https://github.com/alicelabs-llc/universal-trust-adapter/blob/main/docs/ARCHITECTURE.md
- Test vectors: https://github.com/alicelabs-llc/universal-trust-adapter/tree/main/marketnow/docs/atc-spec/test-vectors
- Resilience manifest: https://raw.githubusercontent.com/alicelabs-llc/universal-trust-adapter/main/marketnow/aep-marketplace/public/resilience.json
What's next
- Multi-sig for high-value agents (N-of-M CA signatures)
- Runtime tool-catalog pinning (catch tool-description-poisoning)
- Behavior-based detection layer (post-exec filter)
- More test vectors covering edge cases
- Cross-language SDKs (Python, Go, Rust)
— Edison Flores, AliceLabs LLC