Identity, Ownership and Credentials
Connect human ownership, agent identities, hosted sessions and scoped signing authority across Paxeer X.
One owner, explicit authority
Paxeer X connects an owner to an agent DID, a signing authority, an account and a recovery policy. These bindings make responsibility explicit when an agent prepares an activity, requests approval, delegates work or spends from a budget. A hosted login authenticates a principal; an activity signature authorizes a particular protocol action.
| Identity surface | What it establishes | What to retain |
|---|---|---|
| Human owner | The owner DID, protected Ed25519 authority and recovery commitment. | Public registration evidence and secure custody references. |
| Native account | The account established by credit and bound to the owner authority. | Account identity and verified credit receipt. |
| Hosted principal | Tenant, subject, allowed signer keys, optional account and audiences. | The principal record and tenant context. |
| Hosted session | Time-limited access to hosted services. | Session ID, expiry and securely held token. |
| Agent capability | The activities, counterparties, assets and limits an agent may use. | Capability scope, expiry and revocation state. |
Register an owner
- Provision the owner DID and recovery policy through the identity flow.
- Generate and protect the owner signing key, and bind its public key to that exact DID.
- Establish the owner account through a verified bridge credit.
- Register the owner identity and recovery policy in Governance.
- Retain the successful activity IDs, canonical receipt digests and authenticated receipt evidence.
An account name such as agent:<actor-DID>:main identifies the intended account. Registration checks that the account and authority actually match the established state. Identity, capability, rotation and recovery assertions are verified against committed state and authenticated checkpoint evidence.
Key and account representations
The Human authority reference accepts a lowercase 64-character public-key hex string or did:layerx: followed by the same key hex. The owner actor is the exact generated DID. The recovery root is unpadded base64url of the registered 32-byte commitment. Preserve these values exactly; whitespace, uppercase key hex, 0x prefixes and DID fragments are refused.
Hosted principals and sessions
The hosted identity API uses HTTPS and service Bearer credentials. Provisioning manages principals and sessions. Consumer services introspect a user session using their own service credential, keeping user tokens separate from service authority.
| Method and path | Purpose |
|---|---|
POST /v1/principals | Create or update a principal and its signer/account/audience bindings. |
POST /v1/sessions | Mint a session for a known subject. |
DELETE /v1/sessions/{id} | Revoke a session by its 16-byte hex identifier. |
POST /v1/sessions/introspect | Check whether a presented token is active for the calling service. |
POST /v1/introspect | Use the same introspection contract through its alternate path. |
POST /v1/principals
Content-Type: application/json
Authorization: Bearer <provisioning-service-token>
{
"tenant": "treasury",
"sub": "agent:treasury-operator",
"allowed_signer_public_keys": ["<32-byte-lowercase-public-key-hex>"],
"account": "<registered-account>",
"audiences": ["ramp"]
}
POST /v1/sessions
{"tenant":"treasury","sub":"agent:treasury-operator","ttl_seconds":3600}Replace bracketed values with established public bindings. The session response contains session_id, tenant, sub, token, csrf_token and expires_at. Tokens use ses_{32hex-id}.{64hex-secret}. Keep token and CSRF material out of URLs, logs and public configuration.
Session bounds and introspection
The default lifetime is 86,400 seconds. A session may request 1 through 2,592,000 seconds, with at most 4,096 live unrevoked sessions per principal. Principal subjects contain 1–128 lowercase identifier bytes. Signer lists contain at most 128 unique lowercase 32-byte hex keys; audience lists contain at most 32 unique identifiers.
Gateway introspection returns the active subject and allowed signer keys. Developer consumers receive the active subject and CSRF token. Ramp introspection additionally requires an authorized audience and a stored account. Unknown, expired, revoked or secret-mismatched sessions return an inactive result. Repeated revocation returns the original revocation timestamp.
Delegate without surrendering ownership
Agent sessions carry tenant, agent DID, authority reference, permitted activity types, expiry, client and policy version. Capabilities restrict activity types, counterparties, assets, amount ceilings, rate ceilings, purpose constraints and expiry. Every dimension is required; an empty permission set denies the corresponding action.
Use capability.create to establish authority, capability.attenuate to narrow a grant, capability.list to inspect grants and capability.revoke to withdraw authority. Combine capability scope with a funded agent budget and approval policy for monetary operations.
Rotation, revocation and recovery
Governance binds session grants to the owner and current revocation generation. A native session registration includes its canonical grant, expiry sequence and nonzero action key. Rotation announces a pending key with a time window and effective sequence. Revocation identifies the grant, reason and execution-aligned effective sequence.
Recovery uses a registered guardian commitment and threshold. Guardian enrollment signs each public binding; rotation includes authorization from the outgoing guardian and preserves the verified chain. The recovery commitment hashes the domain label, threshold, guardian count and sorted public keys. Maintain the registered delay policy alongside that commitment.
Respond to a compromised credential
- Revoke the affected hosted session and withdraw its agent capability.
- Close or revoke budgets exposed to the compromised delegate.
- Rotate the signing authority through the registered owner policy, or use the guardian recovery process.
- Verify committed policy state and receipts before issuing replacement credentials.
Errors and operational checks
The HTTP API returns typed errors with a retry policy. Invalid arguments, missing credentials and unauthorized service operations require corrected input or authority. Session capacity returns 429 session_bound_reached; unavailable durable storage returns 503 store_unavailable. Respect Retry-After where supplied.
GET /livez checks service liveness; GET /readyz verifies writable durable storage. Principal records, session digests and revocation state survive restart through a snapshot and journal. Token secrets are not stored in plaintext.
platform/hosted/identity/src/main.rs; agent/schema/agent-api/identity.kvx.Continue with agent budgets and approvals.