# Ringfence > A phone line for NEAR. A caller in a browser or on WhatsApp talks to one AI agent, and the agent acts from a NEAR wallet contract tied to the caller's phone number. The wallet contract holds the spending rules, so the agent can only ask it. A money packet is NEAR locked in a second contract; each person opens one share by saying the packet's words on a call. A caller can also ask for a top up from another chain ("top up my wallet with 2 dollars of SOL") and get a live NEAR Intents quote. Built at NEAR HACKATHON 2026 (#NEARHackathon), tracks: Social Money, Real-World Money. Site: https://ringfence.evalengine.ai Demos (recorded live on mainnet): https://ringfence.evalengine.ai/demo.html Source: https://github.com/ChromiaAgents/ringfence (MIT). AGENTS.md in the repository has the full version of this file. Status: on NEAR mainnet since 10 November 2026, small amounts. The contracts are AI-reviewed, not audited. ## Pages - https://ringfence.evalengine.ai/ : the call page - https://ringfence.evalengine.ai/packet/demo : the open demo money packet. The words to say are shown on the page. - https://ringfence.evalengine.ai/packet/family-1 : a money packet funded on mainnet by the Sputnik DAO ringfence-family.sputnik-dao.near. Its words are private. - https://ringfence.evalengine.ai/proof : attestation results for the AI models. JSON: https://ringfence.evalengine.ai/api/proof - https://ringfence.evalengine.ai/stats : usage numbers - https://ringfence.evalengine.ai/wallet/bind : bind a phone number to your own NEAR account ## Call socket (typed text, no voice needed) - wss://ringfence.evalengine.ai/ws/call - Send: {"type":"text","text":"..."} - Read: {"type":"agent","text":"..."} per sentence; {"type":"desk"} ends the turn. Binary frames are audio. - A call about one money packet: /ws/call?packet=&to=. The id is in the Call link on /packet/demo. - This is mainnet. A typed PIN after a prepared transfer sends real NEAR from the demo wallet. The right packet words with an account pay a real share. ## Commands (from a clone of the repository, Node 22 or newer, no keys) - npm ci : about 15 s - npm test : about 15 s, last line " passed" (57 on 12 Nov 2026) - npm run demo:check : about 15 s, last line "all steps passed" - npm run verify:contracts : about 10 s, 3 blocks starting with "ok" (code on mainnet equals contracts/release/) - npm run attest : about 10 s, "3/3 models fully verified" - npm run verify:evidence : about 5 s, last line "18 of 18 transactions match" (reads the README evidence transactions from an archival RPC) - npm run attack : about 2 s, last line "5 of 5 attacks blocked" (prompt-injection replay with a scripted model, in process) - npm run live:check : 30 to 90 s, last line "5 of 5 checks passed" (types 5 lines into the call socket above; no PIN, nothing paid; replies come from a real model, so wording varies between runs) - npm run topup:quote -- 10 SOL : about 5 s, a NEAR Intents 1Click dry quote (no deposit address) printed as JSON, last line "}" - npm run dao:wallet -- family.sputnik-dao.near 15550104477 : about 2 s, prints Sputnik DAO proposals for a DAO-owned wallet; without WALLET_SECRET the last line is "REFUSED: WALLET_SECRET is not set. ..." (exit 1) - cargo test in contracts/phone-wallet, contracts/factory, contracts/packets : about 7 minutes in total on a first run, each ends with "test result: ok." ## Contracts on NEAR mainnet - ringfence-wallet.near : wallet factory (contracts/factory) - .ringfence-wallet.near : one phone wallet per phone number (contracts/phone-wallet, published once as a global contract) - f18d3a55399e.ringfence-wallet.near : the website's demo wallet. View get_state: owner ringfence-custody.near, custodial, 1 NEAR per transfer, 3 NEAR per day, 60 second wait for a new recipient. - packets.ringfence-wallet.near : money packets (contracts/packets) - ringfence-agent.near : the account the server signs with. It holds one full-access key. ## Not built or not covered - The spoken voice is made by Cartesia and is not attested. Chat, speech-to-text and image models run on NEAR AI Cloud in a TEE. - The demo wallet is custodial. A wallet is owned by the user only after they bind their own NEAR account at /wallet/bind. - Trezu is not used. A Sputnik DAO can own a phone wallet and fund a money packet (docs/dao-wallet.md, docs/dao-packet.md). The DAO-funded packet is on mainnet (README evidence rows 12 to 15). The DAO-owned wallet is not on mainnet yet. - Top up from any chain through NEAR Intents 1Click: the agent sends a top-up page; the caller pastes a refund address there, sends from their own wallet, and the page follows the swap. One real swap on mainnet: 1 USDT on Solana landed as 0.999618 USDC (README evidence row 16). - Staking for packets is not built. - Spoken language: English for now (speech-to-text is set to English). Chinese replies are built and come back with STT_LANGUAGE=auto. ## WhatsApp - Built and supported: wallet by text, calls, the Approve card, money packets. - Public number +60 11-7512 3486: waiting on Meta's business verification. Once approved, anyone can message or call it. This file will be updated. - Until then: Meta's test number +1 555-144-4220, which only answers numbers Meta approved. The browser call at https://ringfence.evalengine.ai does the same on the shared demo wallet. ## Live room (new) - https://ringfence.evalengine.ai/room/ : a phone-style live room. Viewers gift real NEAR to by tapping a gift (a browser call sends it with the PIN) or by WhatsApp call. Gifts from any NEAR wallet show too (read from chain). An open-source VRM character hosts, lip-syncing and thanking each gift. Packets can be grabbed live (?packet=&words=...). Embed a stream with ?yt= or ?twitch=. - OBS overlay: https://ringfence.evalengine.ai/stream/ (transparent; ?preview=1 for sample gifts). ## Built with JustHoot (https://justhoot.fun): coin launches by voice. NEARON (https://nearon.dev): stake NEAR, earn AI credit; Ringfence can run its AI on a NEARON key with NEAR AI Cloud production as fallback. NEAR AI Cloud: private models, attested at /proof. NEAR Intents: top ups from any chain.