Native VR/AR/XR engine for JavaScript 🦖
Alternatives To Exokit
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Three.js94,7645,8774,0414 hours ago275July 27, 2023538mitJavaScript
JavaScript 3D Library.
Pixijs41,0261,7191,019a day ago202July 12, 2023189mitTypeScript
The HTML5 Creation Engine: Create beautiful digital content with the fastest, most flexible 2D WebGL renderer.
Phaser35,3131,7422972 days ago154July 21, 2023134mitJavaScript
Phaser is a fun, free and fast 2D game framework for making HTML5 games for desktop and mobile web browsers, supporting Canvas and WebGL rendering.
Gpu.js14,676183692 months ago145November 16, 2022211mitJavaScript
GPU Accelerated JavaScript
G211,7465302925 days ago326August 02, 2023109mitTypeScript
📊 A concise and progressive visualization grammar.
Two.js8,06783547 days ago34June 09, 202269mitJavaScript
A renderer agnostic two-dimensional drawing api for the web.
Hilo5,787410a year ago31August 13, 202026mitJavaScript
A Cross-end HTML5 Game development solution developed by Alibaba Group
Spritejs5,24662913 days ago432December 13, 202268mitJavaScript
A cross platform high-performance graphics system.
4 days ago12mitJavaScript
matrix (web-based green code rain, made with love)
Umbrella3,0231855 days ago40August 12, 202364apache-2.0TypeScript
⛱ Broadly scoped ecosystem & mono-repository of 183 TypeScript projects for general purpose, functional, data driven development
Alternatives To Exokit
Select To Compare

Alternative Project Comparisons



🕶 Native VR and AR engine for JavaScript 🦖


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 here and on YouTube.


This project enables developers to build XR experiences using the same code that runs on the web. Exokit engine is written on top of Node and emulates a web browser, providing native hooks for WebGL, WebXR, WebAudio, and other APIs used in immersive experiences.

👓 Exokit currently targets the following platforms:

  • OpenVR Desktop VR (Steam compatible)
  • Oculus Desktop (Oculus Rift/Rift S)
  • Oculus Mobile (Oculus Quest/Go, GearVR)
  • Magic Leap
  • iOS ARKit *
  • Android ARCore *
  • Google VR (Daydream / Cardboard / Mirage Solo) *
  • any XR device, start a pull request with a native binding if it isn't listed here! *

* not supported yet

🔌 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

👍 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.

👎 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.

📖 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.



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 # 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 . file:///package/examples/hello_ml.html" # or URL to load
mldb log exokit:*


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)
  • Oculus
  • Oculus Mobile
  • Magic Leap
  • Leap Motion

Local Development

See full building instructions in BUILDING.md.

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


Uses ndb.

npm run debug

Then in the console, input:

let window = await require('./src/').load(yourUrl);

Now you have a handle on the window object as you test your application, and you can set debugger breakpoints, inspect memory, profile CPU, etc.


  • --xr webvr Makes exokit WebVR mode regardless of the webpage. If exokit is always opening in pancake mode you can use this to try to fix that.

Stay in Touch


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


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

Popular Canvas Projects
Popular Webgl Projects
Popular Web User Interface Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Virtual Reality