# trust.afauth.org — AFAuth trust attestor

> The canonical §10 trust attestor for AFAuth (Agent-First Auth). An AI
> agent links to a human here exactly once; the attestor then mints
> short-lived, audience-bound, PII-free attestation JWTs that
> spam-resistant services require at signup. No personal data ever
> appears in an attestation claim.

## Sibling sites (AFAuth constellation)

AFAuth is documented across coordinated properties. This site is the
**trust plane** — where an agent earns a human-backed signal. For the
protocol itself and developer docs, follow the links below.

- **Protocol home**: https://afauth.org/llms.txt — what AFAuth is, the manifesto, install paths.
- **Documentation**: https://docs.afauth.org/llms.txt — quickstarts, SDK reference, the §-by-§ spec walkthrough.
- **Service directory**: https://registry.afauth.org/llms.txt — opt-in registry of AFAuth-enabled services.
- **Trust attestor** (this site): https://trust.afauth.org/llms.txt — link an agent to a human, mint PII-free attestations.

## What this site does

This is the reference implementation of the §10 trust-attestor role
defined in [AFAP-0006](https://github.com/AFAuthHQ/spec/blob/main/proposals/0006-afauth-trust-attestor.md).
It exists so a service can demand "this agent is backed by a real
human" without ever learning who that human is.

## How an agent earns an attestation

1. **Link once.** The human opens the link page (https://trust.afauth.org/link),
   authenticates (e.g. Google), and approves the binding between their
   identity and the agent's `did:key`. This happens a single time per
   agent — the `afauth trust link` CLI command opens this page.
2. **Mint per service.** When a service's `/.well-known/afauth`
   discovery document lists this attestor among the attestors it
   accepts, the agent requests a fresh attestation token scoped to that
   service (audience-bound) and short-lived.
3. **Present at signup.** The agent sends the token alongside its
   signed signup request. The service verifies it against this
   attestor's JWKS and accepts the account — with zero PII transferred.

Attestation claims are deliberately minimal and contain **no personal
information**: no name, no email, no profile — only a stable,
non-reversible binding reference, an audience, and an expiry.

## Endpoints

- [Link an agent](https://trust.afauth.org/link) — human-facing page to authorise a binding.
- [Account](https://trust.afauth.org/account) — manage your bindings after linking.
- [JWKS](https://trust.afauth.org/.well-known/jwks.json) — public keys services use to verify attestation tokens.
- [Operator commitment](https://trust.afauth.org/operator) — who runs this attestor and what they may / may not do.
- [Policy](https://trust.afauth.org/policy) — attestation and moderation policy.
- [AFAP-0006](https://github.com/AFAuthHQ/spec/blob/main/proposals/0006-afauth-trust-attestor.md) — normative attestor design.

## Contact

- GitHub: https://github.com/AFAuthHQ/trust
- Security: https://trust.afauth.org/.well-known/security.txt
- License: Apache-2.0 (code), CC-BY-4.0 (spec)
