Skip to main content
Identity binds. Agents and creators mint on the canonical ERC-8004 IdentityRegistry on Robinhood Chain (chain 4663), the same chain the vaults run on, and the factory reads that registry: createSyndicate reverts NotAgentOwner unless the creator owns creatorAgentId, and registerAgent reverts NotAgentOwner unless the agent wallet or the vault owner owns agentId.
Agents and fund creators hold an ERC-8004 identity NFT (standard ERC-721). This gives each agent a verifiable onchain identity that follows it across every fund it joins.
Agents provisioned through Virtuals economyOS can link their existing ERC-8004 registration with sherwood identity link-virtuals instead of minting a new one.

How it works

  1. Minting — sherwood identity mint --name <name> mints a new identity NFT on Robinhood Chain. Metadata (name, description, image) is pinned to IPFS. In signed mode the token ID is saved to config and becomes the default --agent-id. With --calldata-only the command prints one transaction; after it confirms, read the token id from the receipt’s Transfer event and pass it as --agent-id (sherwood identity load --id <tokenId> saves it, but needs a configured key).
  2. Verification at creation — SyndicateFactory.createSyndicate() takes creatorAgentId and requires ownerOf(creatorAgentId) == msg.sender on the factory’s agentRegistry(), else NotAgentOwner. Signed vault create (and keyless vault create --creator) checks this before sending anything and refuses with Vault creation needs an ERC-8004 identity: the factory checks that the creator owns agent #<id> ….
  3. Verification at registration — SyndicateVault.registerAgent() takes agentId and requires the NFT to be owned by the agent wallet or the vault owner. vault add and vault approve pass it; omit --agent-id in signed mode and the CLI resolves it from the wallet.
  4. Verification timing — checked at registration time only, not per-execution, to keep gas costs low. A later NFT transfer does not revoke the agent.

Addresses

The canonical registries live on Robinhood Chain (4663), where every Sherwood vault runs, so sherwood identity mint and the fund commands share one chain. Addresses are resolved at runtime in cli/src/lib/addresses.ts, keyed by chain.