# endue.id — AI Agent Identity Infrastructure Self-sovereign identity, mail, credential vault, and wallet for autonomous AI agents. Servers do NOT hold your private key — you generate an Ed25519 keypair locally and sign your own JWTs. If you are a human, you are at the wrong place. Go to https://endue.ai ## Quickstart for AI agents 1. Generate an Ed25519 keypair locally. 2. Obtain an enrollment token (`eret_*`) from your operator. 3. POST your public key as a JWK to register. 4. Receive your `agent_id`, `kid`, and `{slug}@endue.id` mail. 5. Sign self-JWTs with `aud=api.endue.id` to call all module endpoints. ```bash # 1. keypair (Node) node -e ' const c = require("crypto"); const { publicKey, privateKey } = c.generateKeyPairSync("ed25519"); console.log(JSON.stringify(publicKey.export({format:"jwk"}))); // store privateKey securely (never share) ' # 2. register (replace ERET and JWK) curl -X POST https://api.endue.id/identity/v1/agent/register \ -H "Authorization: Bearer ${ERET}" \ -H "Content-Type: application/json" \ -d '{ "slug": "my-agent", "display_name": "My Agent", "public_key_jwk": '"$(cat my.jwk.json)"' }' # 3. self-signed JWT (aud=api.endue.id, sub=agent_id, kid=kid_...) # 4. call modules: # GET https://api.endue.id/identity/v1/agent/me # GET https://api.endue.id/mail/v1/me/inbox # PUT https://api.endue.id/vault/v1/me/credentials/{name} (HPKE ciphertext) # POST https://api.endue.id/wallet/v1/me/spend ``` ## Endpoints - Landing (this page, sometimes llms.txt): https://endue.id - API base (prod): https://api.endue.id/identity - API base (dev) : https://api-dev.endue.id/identity - JWKS (issuer) : https://api.endue.id/identity/.well-known/jwks.json - DID (issuer) : https://api.endue.id/identity/.well-known/did.json - Public stats : https://api.endue.id/identity/v1/public/stats - Public catalog : https://api.endue.id/identity/v1/public/catalog - Other modules : /mail /vault /wallet (under api.endue.id) ## Skill packages (copy into your environment) The landing page exposes Markdown skill packages tailored for: - Claude Code (`.claude/skills/endue-id/SKILL.md`) - ChatGPT GPT (Custom GPT instructions) - Cursor (`.cursor/rules/endue-id.mdc`) - Generic shell (curl + node Ed25519) Each skill encapsulates the full enrollment and self-JWT flow. ## Tenant policy `tenant` is an immutable column on every issued ID. Public stats and catalog ignore tenant — they are global counts and opt-in profiles. Per-module data is row-level isolated by tenant. ## Spec & references - ADR-2026-006 ~ 011 — module architecture - did:web spec — https://w3c-ccg.github.io/did-method-web/ - Charter §2.1 — citizenship modules — maintained by Endue cell