Introduction

Overview

Exokit is an engine that runs XR experiences made with regular web code. It emulates a web browser on top of Node.js, providing native hooks for WebGL, WebXR, WebAudio, and other standard APIs for immersive experiences. It works with web pages and your favorite frameworks like A-Frame.

eyeglasses Exokit targets the following platforms:

  • Desktop VR (Steam compatible)
  • Magic Leap
  • Mobile AR (ARKit / ARCore) *
  • Mobile VR (Daydream / Gear VR) *
  • Standalone VR (Oculus Quest/Go) *

* not supported yet

electric_plug Since Exokit supports anything that runs on the web, it powers experiences built with:

  • Three.js
  • Unity
  • Pixi.js
  • Babylon.js
  • A-Frame
  • Custom WebGL frameworks
  • WebAssembly, TypeScript, and any language that transpiles to JavaScript

thumbsup Why Exokit?

  • You want your WebGL/WebXR to run fast.
  • You want the hot new web APIs.
  • You want to add your own integrations – including native – into a browser environment.
  • You want a lightweight browser as a hackable node module.
  • You want to combine the web with a 3D engine like Unity.

thumbsdown Why not Exokit?

  • You’re looking for a traditional “web browser”.
  • You don’t care about 3D or mixed reality.
  • You’re looking for strict and/or legacy standards support.

book Manifesto

  • The future is immersive. The web is the best application platform. Javascript is the best ecosystem.
  • Content should be hardware agnostic. Tomorrow will have different hardware. VR and AR should be compatible.
  • It’s not possible to do both 2D and 3D well. We don’t do 2D. We can use an external 2D browser.
  • Use your favorite game engine. Exokit is not a game engine.
  • Legacy browser design choices don’t make sense in XR.
  • Exokit empowers and connect apps, even (especially) if they aren’t designed to cooperate.
  • Apps should run in “reality tabs”, layers of reality that blend together.

Examples

Hands Reality Tab Live Reload Magic Leap Tutorial Reality Tab

Reality Projection with HTC Vive and Magic Leap Emukit Various Exokit Apps

Find more examples at the showcase, on GitHub, and on YouTube.

Getting Started

Desktop

Download for current OS

Run a WebXR site (desktop)

exokit https://aframe.io/a-painter/ # start A-Painter in Exokit

Magic Leap

Download for Magic Leap

Run (Magic Leap device)

mldb connect 192.168.0.10:1131 # mldb needs to be connected; see MLDB documentation
mldb install -u exokit.mpk # downloaded or built package
mldb launch com.webmr.exokit -v "ARGS=node --experimental-worker . file:///package/examples/hello_ml.html" # or URL to load
mldb log exokit:*

Local Development

git clone https://github.com/exokitxr/exokit.git
cd exokit
npm install
node . <url> # or node . -h for home

The Installation page provides more options for getting started with Exokit.

Architecture

Exokit is a Javascript Node.js module.

C++ bindings hook into WebGL, WebXR, Magic Leap, Leap Motion, and various other device APIs.

const {window} = require('exokit')() to get an immersive browser in another project.

Exokit runs on Windows, macOS, Linux (x64), Linux (ARM64), and Magic Leap (ARM64).

Web API support

  • HTTP/S
  • HTML5
  • <script>
  • DOM
  • WebGL
  • WebXR
  • WebVR
  • WebRTC
  • Canvas2D
  • WebSocket
  • Web Workers
  • <img>, <audio>, <video>
  • WebAudio
  • Keyboard/Mouse events
  • Gamepad API
  • <iframe>
  • HTML layout
  • HTML rendering
  • CSS
  • Legacy APIs

Hardware bindings

  • OpenGL
  • OpenVR (Steam VR)
  • Magic Leap
  • Leap Motion

License

This program is free software and is distributed under an MIT License.

Off You Go!

If it’s your first time here, here’s a plan for success for getting into Exokit:

  1. For inspiration, check out what other people have built with Exokit on the Weekly Blog or WebVR Directory.

  2. Read through the documentation to get a grasp.

  3. Stay in Touch:

  1. Get involved! Check out the Contributing Guide for how to get started.

And it really helps to have dig into the fundamentals on JavaScript and three.js. Have fun!