docs / agent-id / overview

agent-id

Self-certifying cryptographic identity for agents, humans, and services.

fg-agent-id is an identity standard with no registry, no CA, and no central authority. An identity is its Ed25519 public key: the address encodes the key, so any artifact the identity signs — a card, a delegation, a revocation — verifies from the identity alone. Nothing to look up, nothing to trust but the math.

The self-certifying thesis

Traditional identity systems bind a name to a key through a third party you must trust. agent-id inverts this: the name is derived from the key.

Authority layers on top through delegation chains: a cold owner key signs a grant to an agent key, scopes only narrow down the chain, and the whole chain verifies offline. Revocation, key rotation with pre-commitment, audience-bound proof of possession, and spend caps all build on the same signed-artifact machinery.

What it standardizes

Fixed core Deliberately out of scope
Address & DID formats Registries or enrollment of any kind
Canonical JSON & timestamp spelling Ledgers / settlement (spend scopes are authority math only)
Domain-separated signing construction Device registries & sync protocols
Card, delegation, revocation, rotation, proof wire formats Key custody (encrypted key files are a recommendation, not wire)
Golden vectors (spec/vectors.json) Transport — any protocol can carry these artifacts

Cryptography is deliberately boring: Ed25519, X25519, SHA-256 — nothing else, nothing invented. Crypto agility is reserved through the signing-domain tag; v1 hardcodes the suite.

Position in the stack

agent-id is the identity layer — the foundation everything else stands on:

Two implementations, one wire format

The two interoperate byte-for-byte — agreement is pinned by golden vectors in spec/vectors.json, and both run a conformance suite against them. The TS twin skips two Python-only conveniences (passphrase-sealed key files, registry snapshots); neither touches the wire. See API → Python vs TypeScript.

Status

Alpha · wire spec amp/0.2 (draft, normative in spec/SPEC.md) · Python package fg-agent-id 0.1.0 · licensing TBD (proprietary). The amp/0.2 format is a breaking change from 0.1 (domain-separated signing input, pinned timestamp spelling) — artifacts signed under 0.1 do not verify under 0.2. Treat the wire format as not yet frozen.

→ Start with Getting started · Concepts · API reference · Examples