Create immersive WebXR experiences for Meta Quest 2/3, deploy to 48
slots across 9 categories, and reach AIOS users with zero install
friction. Powered by A-Frame 1.5, GeoQode geometry, and the PHI=1.618
resonance lattice.
POST your experience manifest to
/api/plai/developer/apps. Include bundle_id,
entry_point, category=VR, and GeoQode metadata (frequencyHz,
latticeNode).
Public read-only APIs — no auth required for GET endpoints. Use these to
build directory integrations, portfolio sites, or discovery tools.
Method
Endpoint
Description
Notes
GET
/api/aios/vr/taxonomy
Full VR taxonomy JSON — all 9 categories + 48 experiences (19 live)
Cache-Control: 5min · CORS *
GET
/api/aios/vr/categories
Lightweight category list with live/total counts per category
CORS * · No auth
GET
/api/aios/vr/experiences
Flat experience list. Supports ?category=cinema and
?status=live
CORS * · No auth
GET
/api/plai/apps?category=VR
PLAIstore apps filtered by VR category. Supports
?limit=?sort=?page=
Live published apps only
POST
/api/plai/developer/apps
Submit a new experience. Auth required.
Authorization: Bearer <token>
GET
/api/plai/apps/:id
Get full app detail by PLAIstore app ID
Returns developer info + ratings
Fetch live VR experiences — example
// Get all live experiences in the Cinema categoryconst res =
await fetch("https://realaios.com/api/aios/vr/experiences?category=cinema&status=live"); const data =
await res.json(); data.experiences.forEach(xp
=> { console.log(xp.id, xp.frequencyHz,
xp.latticeNode, xp.vrUrl); });
Hosting Guide
Your WebXR scene must be served over HTTPS. Recommended zero-cost
options:
⚡
Cloudflare Pages (Recommended)
Free, global CDN. Drag-and-drop deploy from GitHub. HTTPS by
default. Connect a custom domain in 2 minutes.
Required HTTP headers for Quest Browser compatibility
# Cloudflare Pages _headers file/*
Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy:
require-corp Cross-Origin-Resource-Policy: cross-origin
# These headers enable SharedArrayBuffer for spatial audio + hand
tracking. # Required for advanced WebXR features. Basic scenes work
without them.
Meta Quest Optimization
Quest 2 and 3 are your primary targets. These constraints ensure 72 Hz
smooth rendering and minimal battery drain.
Keep polygon count below 500k per scene. Quest 2 GPU is mobile-class.
Use compressed textures (KTX2/Basis) for any texture over 256×256.
Set renderer="antialias: false" on Quest 2 (72hz >
visual quality).
Avoid blocking JS on the main thread — precompute anything heavy at
load time.
Test in Chrome DevTools with "Mobile" device emulation before
deploying to Quest.
Add loading="eager" to all A-Frame assets. The Quest
Browser prefetches aggressively.
Use raycaster="objects: .interactable" to limit
raycasting to interactive elements only.
Include touch fallback for flat-screen users: gaze cursor + click =
same as controller trigger.
Test with hand tracking enabled (Quest Settings → Hand and Body
Tracking → Hand Tracking → On).
Add <meta name="theme-color" content="#0a0a0f"> for
correct Quest browser chrome color.
FAQ
Yes — publishing to PLAIstore and appearing on the VR Hub is free.
You can charge for your experience (set
price_cents > 0) or keep it free. AIOS takes no
revenue cut on free experiences and a small platform fee on paid
ones (details TBA).
No. AIOS VR runs entirely in the Quest Browser via WebXR — no App
Store, no app submission, no hardware/software developer enrollment.
Just host your HTML file on HTTPS and submit the URL to PLAIstore.
The AIOS swarm validates your entry_point URL, loads the scene,
checks for required GeoQode meta tags, and verifies HTTPS. If
everything checks out it publishes immediately. Flagged content gets
a manual review (usually same day).
Absolutely. Your entry_point can be any URL — a static HTML file, a
server-rendered page, a Next.js app, anything. You can call any API
from within the scene. Multi-user social experiences use WebSockets
for presence.
geoqode:frequencyHz (one of the 8 Solfeggio
frequencies: 72, 396, 417, 528, 639, 741, 852, 963),
geoqode:semanticType
(ENTITY|LOCATION|ACTION|DIALOGUE|EMOTION|PHYSICS|NARRATIVE|HOLOGRAPHIC),
geoqode:latticeNode (0–47), and
geoqode:phi (always 1.618). These anchor your
experience in the Merkaba 8→26→48:480 lattice and are used for
AI-driven content curation.
Immediately on PLAIstore under the VR
category, and within one AIOS swarm cycle (up to 6h) on the
VR Hub category grid. High-engagement
experiences get promoted to the VR Theatre (/vr)
featured list.
Ready to Build?
Copy the A-Frame template, host it, submit to PLAIstore. Your
experience can be live in the VR Hub today.