A prototype client demonstrating a multi-user experience in WebVR. Built with A-Frame
To run the client, run:
git clone https://github.com/mozilla/hubs.git cd hubs npm ci npm start
Building Static Files
npm run build
Sharing Your Changes
When running a local copy of Hubs as-is, you'll use Mozilla's "dev" Reticulm and Janus servers for storing your room information and relaying messages between users in the room.
This also means you can upload a modified copy of Hubs to a hosting provider as-is, and use it without having to set up your own servers. Simply run:
npm run build
and then upload the files in the
dist folder to your hosting provider.
If you are running your own servers, you can modify the environment variables
RETICULUM_SERVER when building to point Hubs to your own infrastructure.
.env.defaults for the full set of environment variables that can modify
Hubs' behavior at build time.
hubs.local Host Entry
When running the full stack for Hubs (which includes Reticulum)
locally it is necessary to add a
hosts entry pointing
hubs.local to your local server's IP.
This will allow the CSP checks to pass that are served up by Reticulum so you can test the whole app.
allow_multi- Allow multiple instances off the app in the same browser session
enable_screen_sharing- Enable screen sharing
accept_screen_shares- Display screens shared by other users
avatar_scale- Scale your self!
quality- Either "low" or "high". Force assets to a certain quality level
mobile- Force mobile mode
no_stats- Disable performance stats
vr_entry_type- Either "2d", "vr", or "daydream". Used internally to force a VR entry type. Add "_now" to the end of the value to skip the audio check.
truedisables Sentry telemetry.
debugstyle filter for setting the logging level.
trueperforms verbose logging of Janus and NAF traffic.
disableTunnel- Tunnel vision is on by default. Disable the tunnel vision by this parameter.
- Reticulum - Phoenix-based backend for managing state and presence.
- NAF Janus Adapter - A Networked A-Frame adapter for the Janus SFU service.
- Janus Gateway - A WebRTC proxy used for centralizing network traffic in this client.
- Janus SFU Plugin - Plugins for Janus which enables it to act as a SFU.
- Hubs-Ops - Infrastructure as code + management tools for running necessary backend services on AWS.