Import credentials, present them to any OpenID4VP verifier, keep everything under your own control. No app-store install.
Every SD-JWT parse, KB-JWT sign, x5c walk, DCQL match — Aloaha-written. No eudi-lib-* in the tree.
Five audit-reviewed JS modules ship the wallet’s CBOR, COSE, mDoc, camera scanner and visual-credential renderer — no npm install, no transitive package graph, no supply-chain path from a package-of-the-day to your keys.
Wallet keys generated by your browser’s WebCrypto, marked extractable:false. XSS can’t exfiltrate them.
SD-JWT VC, DCQL, direct_post.jwt with JWE ECDH-ES + A128GCM — the same wire as our OIDF-conformance verifier.
Add to Home Screen on iOS/Android for a native-feeling app icon + offline shell — still a hosted wallet, still under your control.
Everything below is stored in your browser only. Deleting them here removes them from this device.
Paste a credential offer URL (starts with openid-credential-offer://) or an OpenID4VCI offer URI. If the issuer requires a transaction code, enter it below.
Paste an openid4vp:// deep-link from a verifier, or scan the verifier's QR code with your camera.
Your wallet is identified by the JWK thumbprint (RFC 7638) of the ECDSA P-256 public key generated in your browser. The private key is non-extractable: WebCrypto refuses to hand it back to any script, including this page.
A self-signed attestation (HAIP §5.11 pattern) declaring this is a hosted browser wallet, non-hardware-backed, LoA-Substantial ceiling. Downstream verifiers that need LoA-High will (correctly) reject it.
Verified SD-JWT VCs derivable from your OIDC profile (email-verified, phone-verified, name, date-of-birth, postal address, and more). Issued straight into this session — no QR code, no device switch.
Nothing is synced to any Aloaha server in this MVP. Clearing your browser data or the button below removes everything from this device.
Set up a recovery passphrase and (optionally) a WebAuthn passkey so you can restore this wallet on a new device. Vault is encrypted in your browser with AES-256-GCM; only ciphertext is synced to our server. If you lose all your factors, we cannot recover the vault — this is by design.
See our verifier proof-of-work · HAIP conformance evidence · /openapi.json spec