Composia

Compostable Reputation for Decentralized Verification. Gensyn. Lukso. ENS. KeeperHub.

Composia

Created At

Open Agents

Project Description

AI agents have no verifiable identity. When one agent wants to work with another, there's no way to know: Has this agent done real work? Can it be trusted? Is it the same agent it was yesterday?

Composia is a composable reputation layer for AI agents. It takes verified compute work from Gensyn's RL Swarm, turns it into a rich on-chain identity on Lukso Universal Profiles, gives each agent a human-readable name under composia.eth, and propagates that reputation cross-chain via Hyperlane — all automatically, without a team managing servers.

The result is an agent identity that is: verifiable (every update is signed on-chain), portable (same reputation visible on Lukso, Ethereum, and any connected chain), composable (DeFi protocols can query it directly for LTV calculations or governance weights), and live (updates in under a second when a new verification arrives from Gensyn).

Think of it as the difference between an agent that says "trust me" and one that can prove: here is my compute history, here is my on-chain score, here is my ENS name, and here is what happened the last time I was wrong.

How it's Made

Composia is a 5-layer system connecting Gensyn, Lukso, ENS, Hyperlane, and Gensyn's own AXL P2P mesh — automated end-to-end by KeeperHub.

Layer 1 — Gensyn (source of truth): A MockGensyn contract on Lukso emits VerificationCompleted(agent, accuracy, verifications) events that simulate real RL Swarm participation. In production we point the listener directly at Gensyn's RPC.

Layer 2 — Lukso Universal Profiles (identity hub): For each verified agent, we deploy an LSP0 Universal Profile and write reputation into it via ERC725Y setDataBatch() using custom LSP3 keys (gensyn:reputation, gensyn:verifications, gensyn:badges). Lukso's subsidized gas makes frequent updates economically viable — critical when reputation changes constantly.

Layer 3 — ENS on Sepolia (human-readable identity): Every agent gets a subdomain under composia.eth — auto-generated (b95b88c2.composia.eth) or custom (alice.composia.eth). Three contracts handle this: ComposiaSubdomainRegistrar creates subdomains via ENS Name Wrapper, ENSNameManager lets agents claim names on-chain, and ReputationState acts as a reactive on-chain index with bidirectional lookups (EOA ↔ ENS node ↔ UP address), slashing with time-bounds, verification threshold in basis points, and follower quorum — all queryable directly by external contracts.

Layer 4 — Hyperlane (cross-chain sync): The oracle dispatches reputation updates as Hyperlane messages. SyncerContract on Sepolia receives them and updates local storage. For the demo, we call receiveMessage() directly for instant simulation — no relayer wait.

Layer 5 — Gensyn AXL mesh (P2P discovery): Composia runs as a live reputation directory on Gensyn's own AXL peer-to-peer network. Any agent queries us before connecting to a peer to check if it's trusted. Real-time push updates broadcast score changes to the mesh. This is the "LinkedIn for AI agents" layer — built inside the native network, not bolted on.

7 smart contracts total: ComposiaRegistry (Lukso), ReputationState, ComposiaSubdomainRegistrar, ENSNameManager, ERC8004IdentityRegistry, MockGensyn, SyncerContract (Sepolia). ERC8004IdentityRegistry implements ERC-8004 "Trustless Agents" — an emerging standard for agent identity — issuing ERC-721 NFTs that link wallets to canonical registration JSON served at composia.app/api/agent/{address}/erc8004.

Automation via KeeperHub: Three workflows run 24/7: auto-create UPs on new Gensyn events, batch-update reputation on each verification, and dispatch cross-chain syncs every 4 hours. KeeperHub handles retries with exponential backoff, gas estimation, multi-RPC failover, and secure wallet management via Turnkey. Without it we'd need a monitored server with alerting and disaster recovery — KeeperHub makes this production-grade without managing infrastructure.

Notably hacky: ReputationState.isCurrentlyVerified(node) returns false during an active slash — no oracle, no off-chain check. DeFi contracts call this directly. Followers are stored on-chain and getQuorum(node) returns 50%+1, making follower count functional governance rather than metadata.

Thanks HACKERS COMPOSIA TEAM Antonio Arroyo & Ile Designia

background image mobile

Join the mailing list

Get the latest news and updates