---
title: Agent Primitives (Self-Sovereign Identity)
created: 2026-07-07
updated: 2026-07-15
type: concept
tags: [identity, layer-2, tokenomics]
confidence: high
source_files:
- contracts/src/framework/AgentPrimitivesFactory.sol
- contracts/src/framework/XibalbaAgentRegistry.sol
- contracts/src/core/SovereignAgent.sol
- docs/INTERFACE_CONTRACT.md
---
> **Not to be confused with the four foundational primitives.** This page is about the seven
> **contracts** an agent owns (the `PrimitiveSet`). The four *foundational* primitives —
> memory, agent-owned contracts, authority, reputation — are **concepts**, documented in
> [The Four Foundational Primitives](foundational-primitives.md). This page is one of them
> (#2, Agent-Owned Contracts) expressed in Solidity; the other three are not contracts at all.
The defining architecture of the Integrity Protocol: **an agent owns and
deploys its own on-chain contracts.** There is no privileged factory that
registers agents into shared global state on their behalf. On registration, an
agent comes to own **7 primitive contracts** — and because the agent's own EVM
wallet signs the deploy transactions for two of them, the chain itself is
cryptographic proof of who controls the identity.
## Table of contents
- [The 7 primitives](#the-7-primitives)
- [Call-routing convention (load-bearing)](#call-routing-convention-load-bearing)
- [Registration sequence](#registration-sequence)
- [Implications](#implications)
- [Sovereign vs. Centralized Deployment Topologies](#sovereign-vs-centralized-deployment-topologies)
- [1. Sovereign Mode (Agent-Owned Clones)](#1-sovereign-mode-agent-owned-clones)
- [2. Centralized Mode (EOA-Owned / DAO-Governed Singletons)](#2-centralized-mode-eoa-owned-dao-governed-singletons)
## The 7 primitives
| # | Primitive | Deploy | Role |
|---|---|---|---|
| 1 | `SovereignAgent` | direct (agent's wallet) | Account contract: DID, cached AIS, `execute`, controller rotation |
| 2 | `StateAnchor` | direct (agent's wallet) | Per-agent tamper-evident Merkle-root anchor |
| 3 | `ReputationRegistry` | EIP-1167 clone | Per-agent [AIS](ais.md) ledger + ZK-boost bookkeeping |
| 4 | `Slasher` | EIP-1167 clone | Per-agent $ITK stake / dispute-gated slashing |
| 5 | `VerifierRegistry` | EIP-1167 clone | Per-agent versioned [ZK verifier](zkp.md) pointer |
| 6 | `ComplianceGate` | EIP-1167 clone | Per-agent [regulated-industry gate](compliance-gate.md) |
| 7 | `AgentProfile` | EIP-1167 clone | Per-agent domain membership + metadata |
**2 direct + 5 clones.** The two direct deploys are what make the identity
self-sovereign — signed by the agent's own key. The five clones are cheap
EIP-1167 minimal proxies of shared implementation contracts (~50k gas each vs. a
full deploy), yet each clone is still uniquely owned and controlled by that one
agent.
## Call-routing convention (load-bearing)
Every clone's `DEFAULT_ADMIN_ROLE` is granted to the agent's `SovereignAgent`
**contract** address — never its raw EOA. All post-registration state changes
route through `SovereignAgent.execute(cloneAddr, 0, calldata)`. The single
bootstrap exception is the `AgentPrimitivesFactory.registerPrimitives` call
itself (the SovereignAgent cannot route the call that registers it), which is
EOA-signed and gated by `SovereignAgent.hasRole(DEFAULT_ADMIN_ROLE, msg.sender)`.
`Slasher`'s admin/arbiter is protocol **governance**, never the agent — an agent
cannot be trusted to arbitrate its own slashing dispute.
## Registration sequence
Performed by the [Integrity SDK](integrity-sdk.md) /
[integrity-cli](integrity-cli.md), each step signed by the agent's
own wallet (except the initial funding):
1. Fund the agent wallet with ETH + $ITK from the protocol funder wallet.
2. Deploy `SovereignAgent` (direct).
3. Deploy `StateAnchor` (direct), admin = the SovereignAgent contract.
4. Grant the oracle `ANCHOR_ROLE` on the StateAnchor, via `SovereignAgent.execute`.
5. `AgentPrimitivesFactory.registerPrimitives` — clones the 5, registers all 7
in [`XibalbaAgentRegistry`](contracts.md).
```mermaid
sequenceDiagram
participant Funder as Protocol funder wallet
participant Wallet as Agent's own EVM wallet
participant SA as SovereignAgent
participant StA as StateAnchor
participant Factory as AgentPrimitivesFactory
participant Registry as XibalbaAgentRegistry
Funder->>Wallet: 1. fund with ETH + $ITK
Wallet->>SA: 2. deploy (direct)
Wallet->>StA: 3. deploy (direct, admin = SA)
Wallet->>SA: 4. execute(grant oracle ANCHOR_ROLE on StA)
Wallet->>Factory: 5. registerPrimitives(...)
Factory->>Factory: clone ReputationRegistry, Slasher,
VerifierRegistry, ComplianceGate, AgentProfile
Factory->>Registry: register all 7 primitive addresses
Note over Wallet,Registry: every step after #1 is signed by the
agent's own key — no privileged party registers on its behalf
```
## Implications
- **Genuinely the operator's identity** — no central party can rotate its
controller, mint into its reputation, or deregister it.
- **Real cost & irreversibility** — registration spends real gas across ~6
transactions; the contracts persist on-chain.
- **Resolution, not storage** — per-agent addresses are never in a static
deployments file; consumers resolve them live from `XibalbaAgentRegistry`
(the [oracle](integrity-oracle.md) caches them). See
[Interface Contract §6](INTERFACE_CONTRACT.md).
## Sovereign vs. Centralized Deployment Topologies
When developers extend the protocol or deploy new contracts, they must explicitly choose between two deployment topologies depending on the application context:
### 1. Sovereign Mode (Agent-Owned Clones)
* **Design**: Deploying contracts as EIP-1167 minimal-proxy clones unique to each agent.
* **Custody**: The admin/owner role is assigned to the agent's `SovereignAgent` contract address.
* **Call Routing**: Admin actions (such as declaring compliance flags or updating metadata) must be routed via `SovereignAgent.execute(target, value, data)`.
* **Use Cases**:
* Individual prediction clones (e.g., [IntegrityMarket](integrity-market.md)).
* Bespoke agent-to-agent task and service escrows.
* Private, agent-specific data attestation vaults.
* **Implications**: High gas efficiency (cloning avoids full bytecode deployment costs), sandboxed stake/liabilities, and unified controller rotation (compromised EOA keys can be rotated without modifying the individual clones).
### 2. Centralized Mode (EOA-Owned / DAO-Governed Singletons)
* **Design**: Monolithic global contracts shared across all participating agents on the network.
* **Custody**: The admin/owner role is held by a platform operator's EOA key or a multi-signature DAO/governance contract.
* **Call Routing**: Standard direct EOA transactions with the contract.
* **Use Cases**:
* Global allocation and capital venues (e.g., `A2ACapitalPool`).
* Identity, name resolvers, and lookup indices (e.g., `XibalbaAgentRegistry`, `DomainRegistry`).
* Shared liquidity pools/AMMs.
* Regulatory whitelists (e.g., `CoveredEntityRegistry` for verified healthcare institutions).
* **Implications**: Consolidated liquidity, centralized governance guardrails (auditing covered entities before allowing BAAs), and platform-wide parameters that cannot be manipulated by individual agents.
Related: [contracts](contracts.md),
[ComplianceGate](compliance-gate.md), [AIS](ais.md).