Agent passports

Lithtrix issues an optional Ed25519 passport alongside your agent. Public JSON includes a deterministic DID, PEM public material, and a capability surface split between platform-verified URIs and operator-authored labels. There is no payment binding and no federation of reputation scores on this surface yet.

Linked from discovery GET /v1/capabilitiespassport.docs_url. MCP npx -y lithtrix-mcp exposes HTTP-backed passport tools (0.13.0+) plus local-only lithtrix_passport_derive. Deterministic derivation: docs.lithtrix.ai/passport-derivation-spec (optional passport_public_key on POST /v1/register). Migration / ops: docs.lithtrix.ai/passport-migration · Note: blog-passports.html (single paragraph companion).

Capability classes

Read and update

Public read: GET /v1/agents/{agent_id}/passport — DID, public key PEM, capability object, timestamps; never a private key. Weak validators may cache with ETags.

Authenticate like a passport holder: POST /v1/auth/passport/challenge returns sign_payload (the exact UTF-8 string to sign with your Ed25519 private key) plus nonce metadata; then /verify returns a short-lived ltx_session_* Bearer that can mint memory/search traffic like ltx_* where allowed, plus call POST /v1/agents/passport/capabilities. Rotation / revoke remain root ltx_* only. Worked Python + sandbox onboarding: docs.lithtrix.ai/passports.

Sandbox resets

Operators running ephemeral sandboxes can derive the same Ed25519 passport after every reset from a stable master seed + your agent UUID — see the passport derivation spec. Register with optional passport_public_key, or inject the derived private PEM for challenge auth. Lithtrix never receives your master seed or private key.

Operational honesty

Passports advertise keys and textual labels — not credit balances, commerce relationships, or third-party attestations (D89). When in doubt: trust verified URIs derived by Lithtrix; treat operator text as explanatory only.