three.ws · lab

Demo pages

Pre-release features wired end-to-end so we can test them before they replace anything on the live site. Everything on these pages hits real APIs and real storage — no mocks.

USDZ & AR Quick Look

Load an avatar, generate a USDZ companion in-browser, push it to R2, and confirm iOS Quick Look opens the result.

Beta

Half-body XR

Enter WebXR with lower-body bones collapsed — the seated/VR variant Ready Player Me used to ship.

Beta

@three-ws/avatar SDK

Drop-in <agent-3d> web component loaded from the npm SDK bundle, plus the programmatic AvatarCreator iframe.

Beta

Audio-driven lipsync → /lipsync/mic

Feed live mic audio through the viseme analyser and watch the avatar's mouth track your voice in real time.

In prod

Multi-LLM brain → /brain

Send the same prompt to Claude, GPT, Qwen on Alibaba DashScope, Qwen3-Coder on ModelScope, and Llama on Groq. Side-by-side streaming, latency, and token usage.

In prod

TTS-driven lipsync → /lipsync

Type any text, stream it through OpenAI TTS, and the avatar's mouth animates in real time via wawa-lipsync viseme detection.

In prod

3D walkaround → /walkaround

WASD + mobile joystick navigation with real Rapier physics and Recast navmesh. Click the ground to autopilot your agent there.

In prod

ERC-8004 registry browser

Live read of on-chain agent identities across Base, Ethereum, Polygon, and testnets via agent0-sdk. No keys, no signer.

Live

Avatar button jump

A 3D avatar runs up and leaps onto a physical button. Spring physics squish and bounce the button on impact, then the sequence loops.

Beta

Tactile button (Gemini concept)

Heavy 3D cylinder button living in the scene next to the avatar. Volume-preserving squish, elastic recoil, shockwave torus, cinematic spotlight. GSAP via ESM.

Beta

Create page v2

Redesigned /create chooser: featured recommended card, distinct 3D previews, time badges, destination hints, live stats from /api/explore, and integration strip.

Beta

These pages are unlisted and noindex. They share the same backend as the live site but are intentionally separate from /create and /avatars/:id so the production flow keeps working while we test.