WHO IS OVER-ASKING IN THE EUDI REGISTRY?
Audit the registry here. Repair and debug your own EUDI flow with Augenmaß Workbench, a public-preview Rust CLI and Claude Code skill built around the same proportionality engine.
relying parties visible through the Catalog of Attestations, enriched with their published registration certificates, plus local fixtures for deterministic demo coverage.
The audit, stamped
Unit of analysis is the certificate. The board rolls up worst-signal-wins per relying party.
Registry-audit mode makes no live wallet request, so the hard "beyond registration" axis is never evaluated (nothing is disclosed and no hard signal is raised). A coverage gap is a gap in what could be inspected, not a clean bill of health.
Where they fall
All relying parties as specimens on one plate. Position is the verdict: calm signals settle left, the over-asks drift right. Dot size = certificates on file. Hover, focus or tap a dot to read its record.
Soft over-asks and the labelled category-mismatch heuristic land in the over-ask zone, kept separate. Every relying party is plotted. hover a dot
The bar race
All relying parties as horizontal bars, longest = worst. Bar color names the verdict. Click any bar for the certificate-level read.
The toolkit is the product
Over-ask is the headline. The toolkit is the product. The board you just scrolled and the Workbench on your laptop are two surfaces of one proportionality engine.
The public board
The same engine audits the live EUDI registry after the fact: who registered a broader scope than their stated purpose needs. That is this page.
Augenmaß Workbench
The engine as a local instrument: a Rust binary augenmass plus an agent skill. Skill is the front door; the CLI underneath. Apache-2.0.
inspectauto-sniff any EUDI artifact and decode it (structure only)decodeJWT · SD-JWT VC · mdoc/CBOR · regcert · request · offer · status-listcheckover-ask + format gate on a registration bodyauditlint a DCQL / OpenID4VP request against a purpose baselinebaselineslist curated purpose baselines + the cited legal basisverifypresentation, trust chain, status & status-list · fail-closedx509-hashcompute / check the x509_hash client_id bindingserveverifier-in-a-box: debug a real wallet, redacted trace by defaultdoctordiagnose signed-request / JAR gotchasevidenceexport · verify · replay · assert-live a redacted, projector-safe capturegeneratea proportionate registration body or DCQL queryvalidatestructural DCQL validation · CI gate, exits non-zeroregisterguard-railed write · refuses on over-asklistread registrations backclonelocal registrar-compatible clone storecachebounded read-through cached-sandbox mirrorDebug a real wallet, live
A verifier-in-a-box. augenmass serve --relay augenmass --age-only stands up a local OpenID4VP verifier on the German PID profile; a real EUDI wallet on a phone presents to it over the hosted relay, and you watch every step.
augenmass evidence assert-live./request · /responseaugenmass servestay on localhost
The relay carries bytes for exactly two routes and decrypts nothing. On a temporary run URL
it forwards only /request and /response. The response stays
ECDH-ES encrypted to a single-use key; any plaintext response is rejected with HTTP 422.
The trace, inspector, and evidence stay on your machine. Hosted relay access is token-gated
during preview.
- SESSION_CREATEDnonce minted (32B) · response_uri set · ephemeral key (P-256)
- REQUEST_BUILTclient_id x509_hash · signed request object (JAR)
- REQUEST_OBJECT_FETCHEDwallet fetched the signed request by reference
- RESPONSE_RECEIVEDdirect_post.jwt · encrypted (JWE) · byte length logged
- RESPONSE_DECRYPTEDJWE decrypted · ECDH-ES · vp_token present
- VERIFIEDholder binding: ok · age predicate requested · disclosed claim keys recordedVERIFIED
- OVER_ASK_ANALYZEDrequested 1 · baseline: age check · 0 beyond purpose
evidence assert-live proves the six-event spine through VERIFIED; the live trace then continues into OVER_ASK_ANALYZED (over-ask analysis is live-trace only, not part of the assert-live gate).
One example presentation, three commands:
Detected: SD-JWT VC presentation · vct urn:eudi:pid:de:1 · disclosed: age_equal_or_over predicate structure decoded only — no signature verified yet
VERIFIED presentation verified: urn:eudi:pid:de:1 (claim keys disclosed, holder binding ok)
REJECTED [NonceMismatch]: KB-JWT nonce does not match the request.
Redacted by default: only shapes (byte lengths, SHA-256 digests, sorted field names, disclosed claim keys), never raw values. Raw capture is opt-in and never served; it is written owner-only on Unix (0600), and should be kept in a private or encrypted workspace on other platforms.
Reach the wallet from anywhere
A hosted wallet relay at wallet.augenmass.tech: a small tunnel so a phone wallet can reach your local verifier over public HTTPS, without exposing your whole debugger.
The --relay augenmass flag opens an outbound WebSocket to wss://wallet.augenmass.tech/_relay/tunnel. The relay hands back a temporary public run URL, baked into the wallet request object. It is a byte-forwarding tunnel, not a verifier: it does not decrypt, does not store bodies, and logs route, status, byte counts, latency, and a short run id. Hosted relay access is token-gated during preview (set AUGENMASS_RELAY_TOKEN).
- ↦
GET /request/<session>the signed request object the wallet fetches - ↦
POST /response/<session>the encrypted direct_post.jwt the wallet returns
- ×the per-session trace and inspector
- ×the evidence store and any raw capture
- ×every debugger route except the two forwarded above
One hosted relay service, not a network. It forwards bytes for two routes between one phone and one local verifier. Proven with a real phone-wallet flow through the hosted relay.
Stop typing commands. Start asking.
One binary, two ways in. The skill is the front door: ask in plain language and it runs the engine. Or drive the CLI directly.
Detect the over-ask, fix it, gate it before it ever registers. Augenmaß Workbench is a Rust CLI and Claude Code skill for inspect, check, verify, DCQL validation, mdoc decoding, live OpenID4VP debugging, and redacted evidence replay.
/plugin marketplace add augenmass/augenmass-workbench /plugin install augenmass-workbench@augenmass
git clone https://github.com/augenmass/augenmass-workbench.git cd augenmass-workbench cargo build --release --locked ./target/release/augenmass --help
Then augenmass check diffs scope against purpose, augenmass verify checks SD-JWT VC presentations, augenmass serve runs a local verifier-in-a-box, and augenmass evidence replay renders a redacted trace.
Public preview. Workbench v0.3.0, the live-wallet proof release, is published: a public repo and GitHub release archives. Build from source (cargo build --release --locked) or download a release archive; the one-line plugin install is still preview-grade.
Rust-first, source-buildable, a Claude Code skill plus CLI for auditing, debugging, and repairing EUDI relying-party registrations and wallet interactions.
Get Augenmaß Workbench ↗