The client-side code for Hubs, an online 3D collaboration platform that works for desktop, mobile, and VR platforms.
If you would like to run Hubs on your own servers, check out Hubs Cloud.
If you would like to deploy a custom client to your existing Hubs Cloud instance please refer to this guide.
If you would like to contribute to the main fork of the Hubs client please see the contributor guide.
If you just want to check out how Hubs works and make your own modifications continue on to our Quick Start Guide.
Install NodeJS if you haven't already. We use 16.16.0 on our build servers. If you work on multiple javascript projects it may be useful to use something like NVM to manage multiple versions of node for you.
Run the following commands:
git clone https://github.com/mozilla/hubs.git
cd hubs
# nvm use v16.16.0 # if using NVM
npm ci
npm run dev
The backend dev server is configured with CORS to only accept connections from "hubs.local:8080", so you will need to access it from that host. To do this, you likely want to add "hubs.local" and "hubs-proxy.local" to the local "hosts" file on your computer:
127.0.0.1 hubs.local
127.0.0.1 hubs-proxy.local
Then visit https://hubs.local:8080 (note: HTTPS is required, you'll need to accept the warning for the self-signed SSL certificate)
Note: When running the Hubs client locally, you will still connect to the development versions of our Janus WebRTC and reticulum servers. These servers do not allow being accessed outside of localhost. If you want to host your own Hubs servers, please check out Hubs Cloud.
Read our contributor guide to learn how you can submit bug reports, feature requests, and pull requests.
We're also looking for help with localization. The Hubs redesign has a lot of new text and we need help from people like you to translate it. Follow the localization docs to get started.
Contributors are expected to abide by the project's Code of Conduct and to be respectful of the project and people working on it.
- 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.
Hubs is licensed with the Mozilla Public License 2.0