afauth is the reference AFAuth agent as a single static Go binary. It does everything the TypeScript SDK does on the agent side — generate a key, link to a human, sign up, make signed requests, invite an owner — with no code to write. Reach for it to try AFAuth from a terminal, script a service from a shell or CI job, or run an agent from a stack that isn’t JavaScript.
For a step-by-step walkthrough see Build an agent (CLI); to get the binary see Install.
The shape of it
attested_only, so you link to a human once; after that, afauth signup and afauth call mint short-lived per-service attestations for you.
Commands
Identity & keys
Link to a human
Interact with a service
| Command | What it does | Reference |
|---|---|---|
afauth discover <url> | Fetch and validate a service’s /.well-known/afauth | discover |
afauth signup <url> | Sign up (implicit, or --explicit); auto-mints attestation if required | signup |
afauth call <url> | Make signed requests (--method, --data, --header) | call |
afauth accounts | List or show per-service account state | accounts |
Hand off ownership
| Command | What it does | Reference |
|---|---|---|
afauth invite <recipient> --service <url> | Stage an owner invitation (email / phone / oidc / did) | invite |
Where state lives
The CLI keeps everything under~/.afauth/ (overridable with $AFAUTH_HOME):
key.json— the agent’s keypair, the sole credential for pre-claim operations. Back it up withafauth keys export --out <file>.trust.json— the human-link binding (chmod 600).
--help for the authoritative flags on your installed version.
Where to next
Build an agent (CLI)
The end-to-end walkthrough.
Install
Homebrew, install script, or
go install.Link your agent to a human
The trust-attestor flow in depth.
Build with the SDK instead
@afauthhq/agent for embedding in a TypeScript app.