A qualifying client
Enroll the hardware-backed credential, meet the app’s assurance and certification requirements, present an accurate action preview, and enforce biometric authorization without fallback.
Let agents do the preparation. Require human authorization for a selected final action or permission.
Enthade is a project built around an open protocol: shared rules for creating and checking evidence tied to an exact digital action. Its foundation connects that action to authorization by a protected hardware key that requires biometrics.
The current SDK runs inside each service’s iPhone app. The user approves there, and the service’s backend checks the resulting receipt. Credentials are separate for each app; there is no shared credential to carry between services.
This guide explains the design and the responsibilities of an integrating service. It is an introduction, not a replacement for the versioned protocol specification or a production integration contract.
Biometric authorization is a deliberate tradeoff: it adds friction in exchange for stronger assurance. Use it where a service needs human sign-off, rather than interrupting every step of a workflow.
An agent workflow can allow many earlier steps to run autonomously. A service can require human-attended authorization at a selected point, such as sending a prepared message, publishing a finished article, or granting a defined permission.
The app presents the exact request. The person authorizes it through the biometric gate. The receiving backend checks a receipt tied to that action before accepting it. The receipt does not certify the agent’s reasoning, earlier work, or future behavior.
If the protected action grants permission, the application must bind the permission’s exact scope to what is authorized. The receiving service remains responsible for enforcing its permitted actions, resources, duration, and limits.
A receipt for that grant does not mean the person was present for every later autonomous action. Later actions need their own authorization only when the service’s policy requires it.
Require fresh biometric authorization for each protected post or comment. The receiving backend rejects submissions with missing, spent, or mismatched receipts. The approval is bound to the exact content and receiving service; it cannot authorize a burst of different posts.
Under that policy, a thousand accepted posts need a thousand separate approvals. This blocks unattended publication without fresh sign-off and adds human time to the cost of mass spam. AI can still help people draft their posts.
Check the exact action binding, challenge, expiry, and replay state before accepting each protected submission. Apply the service’s account, moderation, and rate-limit rules alongside the receipt. The approval cost applies to accepted protected actions, not to sending network requests.
This requires fresh approval for each post. A one-time permission to let an agent post later has a different scope; it does not create an approval step for each subsequent submission.
Each action carries evidence of its authorization. First, enrollment gives the app a credential for its protected phone key. Then each protected action follows this flow.
A one-time, expiring request identifies the receiving service and the applicable policy. The service keeps the state needed to enforce replay rules.
The content is encoded deterministically and hashed. The app shows an action preview before authorization; changing protected content changes the action binding.
The service’s trusted iPhone app requests Face ID or Touch ID for a key held in the Secure Enclave. Passcodes, passwords, SMS, and software keys cannot authorize a protected action.
The proof binds the action to its challenge, service, policy, and expiration. The presented proof hides the underlying device key and credential.
The backend verifies the proof and its claims, compares them to the expected request, applies its policy, and enforces expiry and replay protection before accepting the action.
The verifier checks cryptographic evidence that the enrolled key authorized the action. On iOS, it relies on the trusted app and platform to establish that the key is hardware-backed and requires a fresh biometric check. It does not observe your biometric check.
“Approved app” means an app whose signing flow and release process meet the service’s published trust requirements. The current Forum build is a first-party experiment; a third-party certification program has not launched.
An attestation is the evidence when issued; a receipt is that
evidence when presented. It carries concrete claims and bindings,
rather than an unqualified human=true flag.
{
"action": "hash of the exact protected content",
"service": "the intended receiving service",
"policy": "named policy and version",
"challenge": "one-time server challenge",
"expires": "the validity boundary",
"authorization": "qualifying hardware key",
"profile": "the applicable assurance profile"
}
The frozen specification defines the actual encoding and verification rules. The summary above is explanatory JSON, not an SDK response or a valid receipt.
The proof must match the content the service is about to accept.
A proof for one service or policy must not be silently repurposed for another.
Expiry and challenge state limit when and how an authorization may be accepted.
Only evaluated layers may be claimed. Planned Presence must not be implied by a Protocol-only receipt.
A mobile prompt is one part of a larger trust and verification flow. The receiving service remains responsible for its own product and abuse policy.
Enroll the hardware-backed credential, meet the app’s assurance and certification requirements, present an accurate action preview, and enforce biometric authorization without fallback.
Define which actions are protected and which evidence qualifies. Issue challenges, choose policy versions, and manage validity and replay state.
Use issuer keys dedicated to your app or trust domain, and configure the verifier to trust only those keys. Check that the receipt matches the expected action, service, policy, and one-time request. Reject missing or invalid evidence.
Keep account eligibility, moderation, rate limits, payments, unique-voter checks, and recovery in your own application. Action authorization does not replace them.
The issuer is the service that issues credentials. The current credential format does not name the app it belongs to, so unrelated apps must use separate issuer keys and verifier trust settings. Sharing a key could allow one app’s credential to be accepted by another.
Services must be able to check receipts using an open verifier and published issuer keys. A policy may also require fresh, verifiable status information. In frozen v0.1, refusing renewal prevents use after the credential expires; it does not immediately disable an existing credential. Immediate per-credential revocation is a later extension.
The privacy goal is to establish useful action-level claims while avoiding a universal cross-service identity.
The attester checks the app and device evidence; the issuer issues credentials. The current design separates these roles, but those services could combine their records. Network metadata, timing, accounts, and a receiving service’s own records also affect privacy.
“No raw biometrics” is a concrete design commitment. “Completely anonymous” or “untrackable” would overstate the model.
Authorization of the exact action by a qualifying hardware key, under a specified service context, policy, and assurance profile.
Who wrote the content, whether it is true, the authorizer’s legal identity, unique personhood, honest intent, or comprehension.
Protocol, Integrity, and Presence answer different questions. Presence is probabilistic and planned outside the frozen v0.1 scope. Stronger evidence must still be described according to what was actually evaluated.
Missing, expired, revoked, invalid, or inconclusive required evidence cannot count as approval. If biometrics are unavailable, a protected action cannot satisfy the policy. Recovery may permit enrollment of a new qualifying key; recovery itself never signs the protected action.
Credential and account restrictions can raise the cost of abuse. They do not establish one unique person. Reinstall and key lifecycle behavior matter; ballot eligibility and person-level uniqueness remain separate responsibilities.
The protocol defines the rules independent implementations must agree on to verify evidence. A policy names the requirements a particular service chooses for its protected actions.
Deterministic encoding, action bindings, signature and proof verification, versioning, qualifying key requirements, and challenge formats.
Which actions are protected, required evidence and freshness, account restrictions, rate limits, camera requirements, and product-specific rules.
Policies are named and versioned. Changing a policy should change future requirements without silently changing what an earlier receipt meant.
Enthade SDK supplies implementation libraries. Enthade Forum exercises the flow in a first-party app. Enthade Verify is the envisioned hosted service; Presence adds adaptive assessments; Log adds public transparency. These components have different maturity levels.
Implementation overview · 1 October 2026
Hardware-key authorization, enrollment, and proof presentation in a proof-of-concept implementation.
A verifier and attester/issuer proof-of-concept stack, with frozen v0.1 formats and test vectors.
An experimental iOS app and backend for ideas and votes, used to exercise the complete flow.
External cryptographic review, production deployment validation and operations, Android support, and later Presence and Log implementations.
The packages are proof-of-concept work, not published production SDKs. There is no announced live service or completed external audit. This website describes the project without presenting its future ecosystem as shipped capabilities.
Follow a community post, a queue entry, a review, or a vote through the illustrated flow.
Open the walkthrough