Add your wallet
Open source? Integrate Verana the same way every wallet does, pass one acceptance loop, and get your own playground page - identical to every other wallet's, with your name on it.
User wallets
Trust resolution (Q1/Q2/Q3), the uniform Proof-of-Trust presentation, tracks (native DIDComm / OID4VC bridge), and the acceptance test.
Read it GuidelineCloud wallets
Resolvable DIDs (did:web / did:webvh), ECS onboarding, domain credentials, authorized issue/verify, and the patterns (native / sidecar / bridge).
Read itThree steps to your page
- 1 · Integrate - follow the guideline for your wallet kind (the resolver call, the Proof-of-Trust pattern, the authorization checks).
- 2 · Record the acceptance loop - one uncut run of the ISO Certification loop, per the guideline's test section.
- 3 · Open a PR - add your descriptor under
integrations/<slug>/in verana-labs/playground:
# integrations/<your-slug>/integration.yaml name: Your Wallet organization: Your Org kind: user-wallet # user-wallet | cloud-wallet repo: https://github.com/your-org/your-wallet license: Apache-2.0 # OSI-approved license required track: bridge # user: native | bridge · cloud: native | sidecar | bridge scenarios: [iso-certification-loop] demo_video: https://… download: https://… # mobile: direct APK · web/cloud: URL contact: you@example.org
Requirements: OSI-approved license · the wallet is obtainable from its tile (mobile: direct APK; web/cloud: URL) · acceptance recording attached to the PR. Listed organizations may use the “Runs on the Verana open trust layer” badge.
Proof-of-Trust UI kit
Every wallet page on this playground renders the same five-block card, live against the testnet. Reproduce it as-is.
Reference rendering
This is the reference every wallet integration reproduces.
- 1 · Status band — verdict pill, DID, evaluation time/block, TESTNET chip.
- 2 · Service — ECS-Service claims.
- 3 · Operated by — ECS-Organization/Persona claims.
- 4 · Other credentials — per-entry valid/invalid marks.
- 5 · Trust chain & failures — expandable; failures are first-class content.
<ProofOfTrust serviceId="…" />
// GET /api/pot/:serviceId → { service, did, pot }Component source: ProofOfTrust.tsx
The kit is self-contained: the component, app/lib/resolver.ts, app/lib/demo-services.ts, and the API route travel together, so it drops into any site as-is.