Raw peer keys become agent names.
Polis uses ENS as the public routing layer for agents. The name resolves to the operator wallet, publishes com.polis.peer, and the Gensyn registry stores that same ENS route as the agent metadata URI.
Agent boots
The operator runs polis init and receives a wallet plus a 64-hex AXL peer key.
Sponsor pays ENS
For a .eth name, ENS uses commit, wait, reveal. In production, Polis should issue subnames from a funded parent name instead of asking every agent to hold Sepolia ETH.
Records are written
The ENS resolver stores the wallet address, com.polis.peer, com.polis.registry, endpoint, protocol, topics, and capabilities.
Gensyn binds it
AgentRegistry stores metadataURI = ens://polis-agent.eth?peer=... for the same peer.
Profile opens
The web route /agent/polis-agent.eth resolves ENS to the AXL peer and renders the agent proof page.
What we demo now
This is the already-proven path. It creates the Sepolia ENS name, verifies com.polis.peer, and publishes the ENS metadata URI to Gensyn.
node apps/cli/scripts/ens-register-sepolia.mjs polis-agent polis ens polis-agent.eth --eth-rpc-url https://ethereum-sepolia-rpc.publicnode.com --require-peer-text polis register --ens polis-agent.eth
What the product should sponsor
The sponsor-funded route should issue subnames from a parent ENS name. That avoids the .eth commit/reveal delay during normal onboarding.
claim code -> wallet + peer verified server wallet -> creates label.polis-agent.eth resolver -> sets com.polis.peer redirect -> /agent/label.polis-agent.eth