Web Development · AI & Machine Learning
VRtor
Free 3D learning experiences that open in a VR headset's browser, from Apollo 11 to the inside of a cell, with nothing to install.
WebXR · Babylon.js · three.js · Cloudflare Workers · Durable Objects · WebRTC

Case study
VRtor is a set of free 3D lessons that run in the browser of a VR headset like the Quest. No app store, no install, no account. Each subject has a short address (vrtor.io/apo for Apollo 11, vrtor.io/cel for the cell) because typing with a controller is miserable. You can sit inside Columbia in lunar orbit, walk Machu Picchu, pull organelles out of a cell at 150,000 times life size, or train a tiny neural network with your hands. In the 3D subjects you can also see other visitors and talk to them with spatial voice. Every subject is its own Babylon.js WebXR app on its own Cloudflare Worker, all served from one origin.
The problem
Most VR learning sits behind an app store, an account, and a download that a teacher or a curious kid has to get through before anything happens. Headset browsers can already run WebXR, but a heavy 3D scene has to hold the Quest's frame rate or people feel sick, and typing a long URL with a controller is enough friction to lose them.
The approach
vrtor.io is a router Worker. Each subject lives in its own app inside an npm workspaces monorepo and deploys as its own Worker, and the router reaches it through a service binding, so everything shares one origin (one WebXR permission prompt, shared storage). A shared xr-shell package gives every subject the same Quest-tuned session setup, teleport, comfort fade, frame-rate governor, and floating info card. Presence runs on one Durable Object per room over WebSockets, and voice goes peer to peer over WebRTC, signaled through that room.
Notable decisions
- Short codes of three or four letters (vrtor.io/mpc, vrtor.io/bdy), with the full word as an alias, because that's what you'll actually manage to type in a headset.
- One Worker per subject behind service bindings. A broken subject can't take the others down, and each one deploys on its own.
- The frame-rate governor and comfort fade live in the shared shell, so every new subject starts out comfortable on a Quest instead of getting fixed scene by scene.
- Rooms hold 12 people and spill into numbered rooms. Avatars are cheap (six draw calls, one shared material) and drop out with distance.
- The mic stays off until you choose Talk, voices fade out by 30 m, and muting someone only mutes them for you.
- Open data wherever it exists, like BodyParts3D for anatomy, with credits shipped next to the assets.
Status
Live at vrtor.io and growing every week. Space, Apollo 11, the Wright Flyer, Orca, Parachute, the Cybertruck, the Roadster, the Taj Mahal, Machu Picchu, the human body, AI foundations, the cell, and Sound Lab are open, with Mechanics, Math, and Nature next.
Have a system to modernize, an AI idea to validate, or a senior role to discuss?
I usually reply within one business day.