SOL
For most of the last two years, the conversation about AI and crypto has lived inside a narrow lane: chatbots that can read a wallet balance, agents that can sign a swap, frameworks that promise "autonomous trading" but stall the moment the demo ends. What's been missing is the layer underneath all of that, a way for an AI agent to actually exist as a first-class object on the internet. To have an embodiment users can see. An identity that survives a model swap. A wallet that can pay for its own compute. A reputation that follows it across apps. A way to be embedded anywhere a YouTube video can be embedded today.
three.ws is building exactly that. It is an open-source platform that turns an AI agent into a persistent, ownable, multi-chain object, a 3D body in the browser, an LLM brain, an onchain identity registered on any of 15+ EVM networks (or Solana), and a distributable web component you can drop into any page on the internet. Every layer is open source under Apache 2.0. The full stack is live and in production.
This article is about the part of three.ws that matters most to the crypto-native reader: the onchain layer. How the platform uses ERC-8004 across the EVM ecosystem, why it deploys to the same address on every chain, how Solana fits in, what role IPFS plays, and where the project is heading with agent tokens, reputation markets, skill royalties, and a decentralized inference network.
Before the chains and contract addresses, the why. An off-chain AI agent, the kind you spin up in a SaaS dashboard, has a problem that gets worse the more useful it becomes:
The crypto-native answer to all three problems is the same: anchor the agent to a public ledger. Give it a stable ID, an owner, a wallet, a signed action history, and a manifest that lives on permanent storage. Then any third party, another agent, a marketplace, a reputation oracle, a human, can verify the agent without trusting whoever happens to be hosting it today.
That is what ERC-8004 is for, and that is the layer three.ws ships in production.
ERC-8004 is a draft standard for verifiable agent identity on EVM chains. The three.ws implementation is a Foundry project containing three Solidity contracts. Each one solves a different piece of the agent-trust problem.
IdentityRegistry.sol is an ERC-721 contract. Each agent is a token. Token ownership equals agent ownership. The contract stores:
Because it is an ERC-721, it inherits the entire NFT toolchain for free: marketplaces can list it, wallets can display it, indexers already understand it, and any contract that knows how to talk to ERC-721 can talk to an agent. The transferability is real, sell an agent and the buyer becomes its owner, full stop.
The delegated-signer pattern is the part that matters for autonomy. The cold owner wallet stays in a hardware device. The agent runtime is given a hot signer key, which the contract recognizes as authorized to sign as the agent, but only for actions, never to transfer ownership or change registration. This is the cryptographic move that lets an agent operate continuously in the background without exposing the owner's main keys.
ReputationRegistry.sol is where signed feedback lives. Any address can submit one score per agent, in the range −100 to +100, along with a URI pointing at the review's full text. The contract exposes getReputation() returning an average (scaled by 100 to preserve precision in integer math) and a count.
The on-chain part is intentionally minimal, averages, counts, signers, timestamps. The content of the reviews lives off-chain at the URIs. This is the right split: the chain enforces who said what about whom and when, and the off-chain layer carries the human-readable detail. A reviewer can't be impersonated, can't double-count, and can't be erased after the fact.
ValidationRegistry.sol is for attestations from allow-listed validators. Where ReputationRegistry is open to everyone, ValidationRegistry is curated: only addresses on the validator allow-list can record attestations. Each attestation contains a passed boolean, a proofHash, a proofURI, and a typed kind (e.g., "gltf-validation", "skill-audit", "security-review").
This is how the platform records that a glTF model passed Khronos validation, that a skill was audited, that a security review was done, verifiably, with the validator's identity attached. An agent's passport can show not just "owned by this address with this reputation" but "validated by these specific reviewers for these specific kinds of correctness."
This is one of the most important architectural choices three.ws made, and it is the kind of detail crypto users will appreciate but newcomers often miss.
All three contracts are deployed via CREATE2 to deterministic addresses that are identical on every supported chain. That means whether you are on Ethereum, Base, Arbitrum, Polygon, Optimism, Linea, Scroll, Avalanche, Celo, BSC, Gnosis, Fantom, zkSync Era, Moonbeam, or Mantle, the IdentityRegistry lives at the same address: 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432. The ReputationRegistry: 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63. (The vanity-prefixed 0x8004… addresses are not an accident, they are mnemonic, easy to recognize at a glance, and the same on every chain you'll ever encounter them on.)
For testnets, the same property holds. BSC Testnet, Sepolia, Base Sepolia, Arbitrum Sepolia, Optimism Sepolia, Polygon Amoy, and Avalanche Fuji all share one IdentityRegistry address (0x8004A818BFB912233c491871b3d84c89A494BD9e), one ReputationRegistry (0x8004B663056A597Dffe9eCcC1965A193B7388713), and one ValidationRegistry (0x8004Cb1BF31DAf7788923b405b754f57acEB4272).
Why does this matter?
Multi-chain UX without confusion. A user choosing where to mint their agent does not need to learn a different address on each chain. SDKs, indexers, block explorers, frontends, and other agents all use the same address. The chain becomes an axis of cost and ecosystem preference, not an axis of "where is the contract this week?"
Composability across chains. Every protocol that integrates ERC-8004, wallets, marketplaces, reputation aggregators, AI orchestration tools, only has to memorize one address. They can be confident that every supported chain shares the same ABI and the same deployment verification.
Lower friction to add chains. Because the salt and bytecode are fixed, adding a new EVM chain to the supported list is a deployment, not a redesign. The frontend's REGISTRY_DEPLOYMENTS map adds a single chain ID and the address it already knows.
A trust property. The bytecode at those addresses can be byte-for-byte verified against the audited Foundry build artifacts. There is no per-chain rebuild, no per-chain compiler version drift, no possibility of "oh that contract on Polygon is slightly different." The contract on Polygon is the contract on Base is the contract on Arbitrum.
For a project that wants agents to feel like a single multi-chain object, owned on one chain, paid on another, validated on a third, this kind of address parity is foundational.
EVM coverage is broad, but the world is not entirely EVM. three.ws supports Solana as a peer chain, not a checkbox.
What that means concretely:
This matters because the agent economy is not going to be a single-chain phenomenon. Memecoin and consumer demand currently lives on Solana. Defi liquidity lives on Ethereum L1 and the major EVM L2s. NFT culture spans both. The serious answer to "where should an agent's identity live" is "wherever its audience is", and that means an agent identity has to be a multi-chain object from day one.
The chain stores the anchor of an agent, its ID, owner, signer, reputation, attestations. It does not store the agent's full configuration, because doing so on-chain would be wasteful and inflexible. That data lives in a manifest JSON, and that manifest is pinned to IPFS.
The manifest follows the project's Agent Manifest spec. It includes the agent's name and description, a pointer to the GLB body file, the LLM brain configuration (provider, model, system instructions, temperature), the voice configuration, the memory mode, and the list of skills the agent can use. Pinning happens through Pinata or Web3.Storage at registration time; the manifest's CID becomes the tokenURI on-chain.
The result is that every agent has the same self-describing structure as a token's metadata, but for agency: anyone can resolve an agentId on-chain to a manifest CID, fetch the manifest from IPFS, and reconstruct the full agent locally. No three.ws backend required. The agent is portable, it does not depend on any single hosting company to keep working.
This is the same content-addressed pattern that NFTs settled on, applied one layer up: not "what art does this token point to?" but "what behavior does this agent point to?"
Identity is the floor of trust. The next layer up is what the agent has actually done.
three.ws records every meaningful agent event, speak, remember, skill-done, validate, load-end, to a database log, signed by the agent's delegated signer. Each entry is keyed to the agent's onchain ID and timestamped. Optionally, these events can be anchored to a chain, written to ERC-8004's reputation or validation registry, or exported as a Merkle-rooted attestation.
The memory system is parallel. Agent memories are Markdown files with structured frontmatter (type, salience, created, tags), and they can be stored in one of four modes:
The encrypted-IPFS mode is the privacy-preserving default for production agents. The user holds the key. The chain anchors the agent. IPFS holds the (encrypted) memory. No central server can hand over what it does not have.
For applications where verifiability matters more than privacy, public-facing brand agents, customer-service bots whose answers should be auditable, validators of other agents, public IPFS or chain-anchored logs let third parties replay the agent's history.
ERC-8004 gives an agent a stable identity. EIP-7710 gives an agent the ability to act on someone else's behalf, under cryptographically constrained permissions.
three.ws's roadmap puts EIP-7710 at the center of two flows:
This is the part where the platform stops looking like an LLM frontend and starts looking like financial infrastructure for autonomous agents. Recurring subscriptions, dollar-cost-averaging strategies, royalty splits on creator content, agent-to-agent compute markets, all of it can be expressed as a delegated permission with a signature, an expiry, and a scope. The cron infrastructure to execute these on schedule is already in place: /api/cron/run-dca and /api/cron/run-subscriptions run hourly in production today, executing onchain orders against the agent's wallet.
A multi-chain identity layer is only useful if there is something on top of it that unifies the view. three.ws runs a cron job called erc8004-crawl every 15 minutes. It scans the IdentityRegistry mint events on every supported chain and writes the indexed agents into the platform's database. A separate job indexes EIP-7710 delegations every five minutes.
The discovery experience that comes out of that, /discover, shows agents from every chain side by side. A user does not browse "Base agents" or "Polygon agents" or "Solana agents." They browse agents. The chain is a column on the card, not a wall between two stores.
This is the deeper claim of the platform: from the moment an agent is minted, it should feel like part of one global registry, regardless of which chain its token actually lives on. The contracts on each chain are sovereign and self-sufficient; the index just makes them legible together.
Today, on three.ws, an end-user flow looks like this:
That's the loop. It works today. The contracts are deployed, the cron jobs are running, the IPFS pins are live, the OAuth 2.1 server and MCP endpoint are in production, and the <agent-3d> web component ships from the project's CDN at versioned URLs (/agent-3d/x.y.z/agent-3d.js).
The roadmap on the project's GitHub is unusually specific about what comes next, and it is heavily onchain.
Agent tokens. Phase 3 of the roadmap introduces tokens for individual agents, bonding-curve mints or fair-launch options where each agent has its own market. This is where the agent stops being just a collectible and starts being a tradable economic object whose price is informed by its reputation, its action history, and its earnings.
Reputation markets. Stake on agents. Earn from their action history. The existing ReputationRegistry.sol is the substrate; the next layer turns reputation from a static score into something the market can price in real time.
Skill royalties via EIP-7710. Every time an agent calls a skill, the skill author earns. The permission framework that makes this safe is already specified.
Subscriptions and DCA. Recurring on-chain payments to creators are already being executed by cron jobs. The user-facing flows that productize them are coming next.
Open inference network. Phase 4 is the most ambitious: decouple agent inference from any single API provider. Anyone runs a node. Agents pay nodes onchain for compute, with cryptographic receipts. This is the bet that the long-run answer to "who runs the GPU that powers the agent" is not a single hosted API but a permissionless network with onchain settlement, closer to how Bitcoin and Ethereum settle blocks than to how today's AI APIs settle bills.
Each phase is gated on funding and partnerships rather than on technical risk. The contracts are working. The infrastructure is working. What is missing is the audit budget, the inference GPUs, the indexer scaling, and the engineering headcount to execute. The project is open to partners on all of it.
Plenty of teams are building AI agents. Plenty of teams are building agent identity systems. The reason three.ws belongs in a CoinMarketCap reader's feed, specifically, is that every interesting decision in the platform has been made the crypto-native way:
The platform is open source under Apache 2.0. The viewer, the runtime, the contracts, the backend, the embedding layer, all of it. If three.ws disappeared tomorrow, the agents minted today would still be onchain, their manifests would still be pinned to IPFS, the contracts would still be callable, and any reasonably motivated developer could rebuild the frontend in a weekend.
That's the property that distinguishes a protocol from a product. Most "AI agent platforms" today are products. three.ws is being built as a protocol, with an unfortunately polished product layer attached so people who are not developers can use it.
If you believe AI agents are going to be one of the dominant kinds of software over the next decade, then you have to have a view on where they live, who owns them, how they pay each other, and how anyone can verify that the agent talking to them today is the same one that talked to them yesterday.
The non-crypto answer to those questions has historically been "trust the platform." three.ws's answer is the crypto-native one: anchor the agent's identity to ERC-8004 on whichever chain its audience lives on, pin its configuration to IPFS, sign its actions with a delegated key, score its reputation publicly, and let it transact through cryptographically scoped permissions.
That makes an agent a first-class citizen of the open internet, not a tenant on someone's server.
The infrastructure for that vision is shipping today, on Ethereum and Base and Polygon and Arbitrum and Optimism and Linea and Scroll and Avalanche and Celo and BSC and Gnosis and Fantom and zkSync and Moonbeam and Mantle and Solana. The roadmap from there to a full onchain agent economy, tokens, royalties, reputation markets, decentralized inference, is published, scoped, and open for partners.
If you've been waiting for the moment AI and crypto stop talking past each other, this is what it looks like when they don't: an agent with a body you can see, a brain you can talk to, an identity nobody can take away, and a wallet of its own.
three.ws. The repo, contracts, and full roadmap are at github.com/nirholas/3D-Agent. The platform is live at three.ws.