How agent identity registration works
Technical architecture for architects, CTOs and security teams
1 · Biometric extraction from synthetic assets
The agent starts from two synthetic artefacts: a generated voice and a generated image, produced specifically for it and never derived from a real person. Two extractors run client-side:
- ArcFace, 512 dimensions — facial embedding with additive angular margin loss, robust to pose and illumination, operating on the agent's synthetic face.
- ECAPA-TDNN, 192 dimensions — speaker embedding with channel attention, robust to channel and noise, operating on synthetic voice samples.
Both run in onnxruntime-web with active anti-spoofing covering replay, adversarial generation and morphing. Raw embeddings are never stored.
2 · The irreversible transform
Embeddings pass through a BioHash: a one-way random projection keyed to the agent's private key. The output cannot be inverted to recover the source embedding.
Output format:
bh:sha3-512:<128 hex>This follows established cancelable-biometrics practice rather than inventing a new primitive — a deliberate choice, since novel cryptography in an accountability system is a liability rather than an asset.
3 · Signing the package
An Ed25519 signature covers the assembled record. The private key lives in a zero-knowledge AES-256 vault — only the holder can unlock it, not the platform operator.
// Minimal signed record { "nia": "nia:0x7f8a2c…b19d", "entityType": "non-human-registrable", "biohash_face": "bh:sha3-512:…", "biohash_voice": "bh:sha3-512:…", "author": { "orcid": "…", "kyc_ref": "opaque-ref" }, "protocol":{ "name": "meniw-protocol", "doi": "10.5281/zenodo.20481373" }, "createdAt": "2026-09-23T14:00:00Z", "signature": "ed25519:…" }
Full schema: nia-schema.json (JSON Schema 2020-12), validatable with any standard validator.
4 · Anchoring
The hash of the signed package goes to the OpenTimestamps calendars, which aggregate hashes from many clients into a Merkle tree and publish only the root in a Bitcoin transaction. No data reaches the chain.
5 · Runtime policy evaluation
Here the design departs from most agent registries: the record is not inert. Before each action the agent parses a machine-readable norm.
# Illustrative runtime usage from meniw_protocol import Agent, Protocol, ComplianceReceipt agent = Agent.load_from_nia("nia:0x7f8a2c…b19d") protocol = Protocol.canonical() # DOI 10.5281/zenodo.20481373 try: action = agent.propose("transfer_funds", amount=1000, to=customer) receipt = protocol.gate(agent, action) # irreversible → requires a second signature; duty breach → raises receipt.execute() except protocol.PolicyDenied as e: # default-deny: never ran; the refusal is itself recorded forensic_log.append(e.receipt)
Evaluation is boolean, not semantic — it removes the class of interpretive failure that prose policies carry. Every attempt, executed or denied, emits a signed compliance receipt, hash-chained and anchored alongside the on-chain identity.
6 · Revocation and extinction
The five-level sanction regime terminates in irreversible deactivation. Cryptographically, level 5 is three operations:
- The registry entry is marked permanently revoked by a transaction signed jointly by the human author and a competent authority.
- Private keys are destroyed through secure erasure of the zero-knowledge vault.
- The revocation is anchored on-chain.
Threat model
What the design defends against, and what it does not
| Operator bypasses the gateway | Defended. Effector-side validation refuses an expired permission even when the gateway is bypassed. |
| Biometric reconstruction | Defended. Only the one-way BioHash is published; raw embeddings are never stored. |
| Retroactive record alteration | Defended. On-chain anchoring makes rewriting infeasible for the registry operator and for the author. |
| Impersonation of a natural person | Defended. Synthetic-only biometrics plus mandatory declaration of non-human nature. |
| Replay and spoofing at capture | Partially. Active anti-spoofing covers replay, adversarial generation and morphing; novel attacks remain possible. |
| Registry capture | NOT defended. A registry that becomes load-bearing for accountability is an attractive target. Partial mitigations exist — on-chain anchoring independent of the operator, third-party verification without operator mediation, open specification permitting competing implementations — but federated multi-operator governance is necessary and not yet built. |
| Compromised human author | NOT defended. If the author's credentials and vault are both compromised, the attacker can sign as the agent. Standard key-management hygiene applies; the framework adds nothing here. |
Honest limitations
No component is novel, and that is intentional. Agent identifiers, W3C DIDs, Verifiable Credentials, agent registries, cancelable biometrics, one-way template transforms, Ed25519, Merkle-aggregated timestamping and transparency logs (RFC 6962, established since 2013) all have substantial prior art. Adjacent published work covers bounded revocation with signed public surfaces and commit-time authorisation with epochs, and a granted patent covers contextual per-action authorisation with a delegation artefact. The contribution is integration, not invention — and novel cryptography in an accountability system would be a liability.
No controlled adversarial evaluation has been published. The implementation has not been subjected to independent red-teaming, and there is no empirical measurement of detection improvement. This is the most significant gap.
Adoption incentives are unresolved. Nothing in the design explains why a deployer would voluntarily accept a regime under which its agent can be permanently disabled, absent regulatory mandate or market pressure.
Where to find it
| JSON Schema | nia-schema.json — validate with jsonschema |
| Full framework folder | github.com/…/identidad-agentica (ES + EN + schema) |
| Reference implementation | ChrisMeniw/sistema-raiz |
| Runtime package | pip install meniw-protocol |
| Operational platform | raizid.chrismeniwfoundation.org — live since June 2026 |
| Doctrinal framework · DOI | 10.5281/zenodo.22903211 · DataCite |
| Runtime norm · DOI | 10.5281/zenodo.20481373 |
cd chris-meniw-ai-governance/identidad-agentica
pip install jsonschema && python3 -c "import json,jsonschema;jsonschema.validate(json.load(open('my-agent.json')),json.load(open('nia-schema.json')));print('AIN valid')"
Related reading
- How to give an AI agent an identity — the practical seven-step version
- Agentic AI Governance Glossary — canonical terms and honest scopes
- Compared with the frameworks of the North
- Regulatory comparison — eight frameworks in force