A proposal · October 2026
Worlds are websites. Doors are links. You walk the web.
The 1989 recipe
| Part | The web (1989) | The metaverse web |
|---|---|---|
| Address | URL | URL + a spawn point |
| Content | An HTML page | A live 3D world (a website) |
| Link | <a href> | A portal you walk through |
| Client | The web browser | The Metaverse Browser: “me” |
The idea
Each world is its own live website, built by anyone, on any server. A door in one world points to another world’s address. Walking through it is clicking a link.
Architecture
localhost:5175
Address bar, back and forward, bookmarks, your name and avatar
localhost:5173
localhost:5174
The current world runs inside the browser in an iframe; the two talk by postMessage.
Protocol v0.1
1 · manifest
Each world serves a small JSON file: its name, spawn points and portals.
2 · enter
Browser → world: here is who I am and which spawn point to use.
3 · navigate
World → browser: I walked into a portal to this address.
4 · presence
World → browser: where I am now, such as “near the counter”.
The manifest
Served at a well-known path, like robots.txt. A 3D browser reads it, and so can an AI agent.
// /.well-known/metaverse.json
{
"name": "Darul Kebab",
"protocol": "mvw/0.1",
"spawns": { "front_door": "…" },
"portals": [{
"id": "to_yale", "label": "Yale SOM",
"href": "http://localhost:5173",
"spawn": "courtyard"
}]
}
One trip
You walk into the glowing door in the Yale courtyard.
Yale sends navigate to the browser.
The browser fades out, logs history, loads :5174.
It sends enter with your name and front_door.
You appear at the door. The owner says hello.
Press Back and you are in the courtyard again.
The standard, for builders
Any 3D website, any engine: three.js, Babylon, Unity WebGL.
Read ?spawn= on load. Always have a default.
One small file: says ready, reports where you are, hands portal trips to the browser.
Serve .well-known/metaverse.json: name, description, spawns, portals.
Anywhere static: GitHub Pages, Netlify, your own server.
Portal to a friend’s address and spawn; they add one back.
The full spec is PROTOCOL.md; world_starter/ is a template that already does all six.
Linking to Yale SOM
Put a portal in your world whose address is Yale SOM and whose spawn is one of its arrival points. List it in your manifest too.
Then send me your address and a spawn id. I add a portal back, and the two worlds are joined.
// your manifest’s portals
{
"id": "to_yale",
"label": "Yale SOM",
"href": "https://zlisto.github.io/
yale_som_virtual/",
"spawn": "default"
}
// in your three.js world
<Portal x={0} z={-4}
href="https://zlisto.github.io/yale_som_virtual/"
spawn="default" back="lobby"
label="Yale SOM" />
Honest history
| Year | Effort | What it did |
|---|---|---|
| 1994 | VRML, then X3D | An HTML for 3D, with links between worlds |
| 2014 | JanusVR | Web rooms joined by walk-through portals |
| 2018 | Mozilla Hubs | Shared 3D rooms in the browser |
| 2022 | Metaverse Standards Forum | Industry group on interoperability |
The idea is old. What changed in 2026 is who walks the web.
What is new
Every world explains itself in plain JSON, so an agent can enter, look around, talk to the owner and follow a portal, just as you do.
Finding worlds
1
Start from a few known worlds. Read each manifest; follow every portal href.
→
2
Store each world’s name, description, spawn points and portal labels.
→
3
Worlds that more portals point to rank higher, like PageRank.
→
4
Results open a world at the right spawn point, not just its front door.
Search “biryani” → darul_kebab/?spawn=front_door
Why search is easier here
Google had to guess what a page was about. A manifest just says so.
Spawn descriptions let results drop you at the buffet or the library.
An AI asks the index, picks a world, and walks in through the browser.
Roadmap
The restaurant, its tables and the owner, on port 5174.
Address bar, identity, history and the world frame, on 5175.
Manifests and messages in Yale and Darul Kebab.
The written spec, so anyone can build a world.
First stop
The first world we build: one dining room in Cambridge, eight tables, and the owner holding a plate of biryani.