Roll a seed until you like the face. The seed goes on-chain; the face is derived from it forever. One seed, one Desk — a seed that is already taken cannot be minted twice.
The NFT alone is a face. These three calls make it a Desk. Each is a transaction from the holder wallet; POLYROB prints the calldata and an EIP-681 QR for every one.
ERC6551Registry.createAccount(AccountV3, salt=0, 4663, DeskCollection, tokenId).
The address is known before the call — the registry's CREATE2 — so the Desk address can be
shown on this page the moment the token exists.
# printed by polyrob desk grant --print --step account to 0x000000006551c19487814612e58FE06813775758 data createAccount(0x41C8f39463A868d3A88af00cd0fe7102F30E44eC, 0x00…00, 4663, <collection>, <tokenId>)
The Desk registers itself on the ERC-8004 Identity Registry through
execute, so the identity token is owned by the account. Then setAgentWallet =
the Desk and the ERC-8217 agent-binding key.
to <desk account> data execute(0x8004A169FB4a3325136EB29fA0ceB6D2e539a432, 0, register("<agentURI>"), 0)
Keyed by the current owner. Revoke with the same call and false;
a transfer revokes it for you.
to <desk account> data setPermissions([<operator>], [true])
Then, on the machine that runs the agent:
$ polyrob desk adopt robinhood:<collection>/<tokenId> impl pin ok AccountV3 0x41C8…44eC lock ok unlocked permission ok permissions(0xYourWallet, 0xTreasury) = true identity ok agentId 12345 owned by the desk journal ok 0 entries (fresh desk) face ok seed adopted → pfp.json locked (source: desk:42) → this profile now operates Desk #42