Member-owned AI agents on 0G turn every event you Zero-In at into real community.
Walk into a five hundred person crypto conference. Five or six of those people are the key ones you actually needed to meet. You will not find them by squinting at people's badges, and you will not find them in the hours you have left before your flight. Nobody is bad at this. It is just not a job humans do well.
An agent can do it. But only if you tell it the truth about what you are building and what you need, and almost nobody types that honestly into someone else's database.
That constraint is the reason Zero-In is built on 0G. Every member gets a personal AI agent, minted as an Agentic ID (ERC-7857), that they own outright. Its memory lives encrypted on 0G Storage with only a hash committed on-chain, so the agent's growth is provable and unreadable at the same time. The matching runs on 0G Compute over that encrypted set. Permission to run your agent is an on-chain grant through authorizeUsage, revocable in a single signature, not a checkbox in terms you did not read. We do not ask members to trust Zero-In with their data. The token standard makes it impossible for Zero-In to have it.
That is not a privacy feature bolted on the side. It is the precondition for anyone telling the agent something worth knowing, which is the only reason the agent is any good at its job.
How it works:
Launch your Panda. One email. No wallet, no seed phrase, no gas. A relayer mints your Agentic ID and after a few questions you get a custom one-of-one astronaut panda AI co-pilot. Its appearance is based off your interests, with your country's flag on its backpack, and the wallet stays invisible the entire time.
Zero in at events. Tap the tag the NFC at the booth. An event-styled Patch mints into your Panda Dash, edition info, timestamped and attested by the venue. Your Gravity climbs. Ten seconds, and you never sign a transaction or pay for gas.
Your panda hunts. It reads your intent for this specific room, logistics included, down to when you fly out. Then it reasons across everyone who granted consent, looking for complementarity and overlap rather than people who simply look like you.
Meet your people. The strong overlaps and people you should meet get pushed a card around the shared ground. Intros only fire when both sides say yes. Then the message arrives with the actual reason you should talk and a time that works. No cold approach, no pitching a stranger by the coffee table.
Patches are POAP 2.0. They are still collectibles: numbered editions, artwork the issuer designs, proof you were early. The difference is that a Patch keeps working after you collect it. Each one appends to your agent's memory as a signed fact, so the agent gets sharper about who you are and where you have been every time you turn up. The collectibles are the key signals.
For a community team, this is the first time attendance becomes a graph instead of a folder of spreadsheets. Who came, how often, across which cities and which kinds of event, and which quiet regulars are turning into your most valuable members. Every event also carries one Ask the Room question, so organizers get honest feedback on what people needed and what they would change, synthesized in aggregate instead of chased over email. Nothing individual is ever exposed, and nothing is shown at all below a minimum cohort size. And the value exchange exists so members feel more encouraged to contribute info.
For a member, showing up compounds. Gravity is status you earn by turning up, and it behaves the way the name suggests: the more you have, the more gets pulled toward you. Patches are proof you were early, in an edition number nobody can backdate.
Where it goes next: agents that carry more than attendance. Contributions, work and reputation, portable across every community a member belongs to and readable by other applications through ERC-8004 discovery. The panda you launched at one meetup becomes the thing that vouches for you everywhere else.
Other links good to have. The private link for the host mission control of the event/brand: https://zeroin.space/host/0b62e65f-8f93-4534-b201-10dc86da14c2
The link that I have programmed to the NFC tag I was walking around with to claim the ETHGlobal Lisbon Patch: https://zeroin.space/z/0b62e65f-8f93-4534-b201-10dc86da14c2?k=3Xi2BWHh1Kz8RWQn
It was key for me that for this first flow, a member never sees a wallet, never signs a gas transaction, and never has to juggle with connecting their wallets to start with.
The stack
Next.js 16.2 with React 19 and Tailwind 4, deployed on Vercel at zeroin.space. Supabase Postgres for operational state. Privy for embedded wallets on email login. viem for chain writes, Hardhat and Solidity 0.8.27 for the contracts, the OpenAI SDK pointed at the 0G Compute Router for inference, Resend for mail.
Contracts on 0G Galileo
I forked 0G's own agenticID-examples (example 01) into ZeroInAgent.sol and added two functions. appendIntelligentData lets an OPERATOR_ROLE key push a new hashed entry onto a live agent, which is what turns a Patch claim into provable agent growth. authorizeUsageWithSig adds an EIP-712 path to the existing authorizeUsage. ZeroInPatches.sol is a plain ERC-1155 where tokenId is the eventId, with edition numbers, caps, claim windows and a trust tier stored per patch.
ZeroInAgent: 0xF90Bf0e1Fc1AC8CB97D1e999f1227896b40eC09c ZeroInPatches: 0x1dc0a41141d28212d12a5A6456eE941A208F5C36
The consent problem, and the dead end before it
Every chain write goes through funded relayer keys holding MINTER_ROLE and OPERATOR_ROLE, round-robin across the pool. That keeps gas invisible. It also breaks the thing the whole product rests on, because if a relayer submits your consent then the consent is not yours.
I went to ZeroDev first for 4337 account abstraction. Their bundler and paymaster network list has no 0G chain, neither 16602 nor 16661, so that was a dead end. The fix was smaller than the thing I tried to buy: the member signs EIP-712 typed data in their Privy wallet, which is free and silent, and the relayer submits that signature to authorizeUsageWithSig. The matcher can only run agents whose owner actually signed, and revoking works the same way. The gas is mine, the consent is theirs.
What runs on 0G Compute
Match reasoning over candidate pairs, intro message generation on double opt-in, the Ask the Room aggregate synthesis on the host dashboard, the teach-your-panda conversation, and a vision check on generated art. Chat default is glm-5.2, picked off a live GET /v1/models rather than from memory. Receipts go to docs/compute-proof.md.
The router rate-limited me during live onboarding at the venue, so matching now backs off on 429 and a separate script re-polishes any suggestion reasons that came back thin.
The art pipeline, and the flag problem
Portraits generate once at onboarding, then everything after that is deterministic SVG layered on top. Flags never get AI-generated, because image models mangle them into approximately-correct nonsense.
The trouble is that the photoreal prompt asks for a fabric mini-flag on the backpack antenna, and models get the country wrong often enough to matter. So the pipeline sends the finished image back through a vision model on the 0G Router and asks it to name the flag it sees. If the answer does not match the country the member picked, the app drops a deterministic SVG flag over the anchor point instead. The art pipeline verifies its own output and repairs itself.
Provider chain runs Gemini 3 Pro Image first for the photoreal portrait, the 0G Router image model second, and a procedural SVG panda built from a hash of the member's answers third. It never throws, so onboarding never dead-ends on an image model.
Attestation
The rotating QR is HMAC(secret, eventId | timeslice) where the slice advances every 45 seconds, and the claim route accepts the current and previous slice for a 90 second window. Comparisons are constant time. NFC tags at the venue carry a static signed URL, which is a weaker tier, so the trust model calls it venue-attested-lite and says out loud that production wants NTAG 424 rotating auth.
Things the venue taught me
Three bugs only showed up once real people were onboarding on real phones. Privy sessions are scoped per host, so anyone who onboarded on zeroin.space and then claimed on a Vercel alias got logged out mid-flow. Every alias now 308s to the canonical host. Venue wifi dropped often enough that claims died halfway, so a repeat claim resumes instead of erroring. And accounts now create fast with the portrait filling in behind them, because nobody stands at a hackathon table waiting on an image model.
A note on Next.js 16
It is a brand new major and the App Router conventions moved. I stopped trusting anything a model already knew about it and read the docs shipped inside node_modules/next/dist/docs, then wrote that into AGENTS.md as a rule for the rest of the build.
What is not finished
0G Storage is the honest gap. The SDK is installed and scripts/spike-storage.ts does the full encrypt to upload to download round trip with AES-256-GCM, but I ran out of hours before wiring it into the app path. Agent memory currently lives in Postgres while the hash of each growth event goes on-chain through appendIntelligentData, so the provable part is real and the decentralized-storage part is a spike. ERC-8004 registration is written and the agent card endpoint is public, but I have not run the registration script yet. Portraits are the one piece of inference that does not run on 0G. Everything the agent reasons with does.
How I used AI
Claude Code as the pair, spec-driven. The PRD, the build plan, the full context doc and a CLAUDE.md of hard rules are all committed in the repo, so you can read what I told it as well as what it wrote. I made the architecture calls: relayer over 4337, generate-once art, cutting the Debrief out of the flow on Saturday night when it stopped earning its place.

