{"id":13445632,"url":"https://github.com/exokitxr/exokit","last_synced_at":"2025-11-13T22:32:20.798Z","repository":{"id":44163297,"uuid":"118219951","full_name":"exokitxr/exokit","owner":"exokitxr","description":"Native VR/AR/XR engine for JavaScript 🦖","archived":false,"fork":false,"pushed_at":"2023-09-06T20:59:00.000Z","size":245044,"stargazers_count":994,"open_issues_count":209,"forks_count":117,"subscribers_count":37,"default_branch":"master","last_synced_at":"2024-10-29T17:38:09.954Z","etag":null,"topics":["a-frame","android","browser","canvas","engine","exokit","javascript","magicleap","reality","virtual-reality","web","webgl","webrtc","webvr","webxr","xr"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exokitxr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-20T07:29:25.000Z","updated_at":"2024-10-17T01:49:37.000Z","dependencies_parsed_at":"2024-06-18T22:51:54.162Z","dependency_job_id":"44f693b1-3b4b-4780-95c8-f589ec0d9b01","html_url":"https://github.com/exokitxr/exokit","commit_stats":{"total_commits":8539,"total_committers":32,"mean_commits":266.84375,"dds":"0.11148846469141582","last_synced_commit":"29e5df2c9ebef031c380d70792e2e93730ee6a01"},"previous_names":["webmixedreality/exokit"],"tags_count":526,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exokitxr%2Fexokit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exokitxr%2Fexokit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exokitxr%2Fexokit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exokitxr%2Fexokit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exokitxr","download_url":"https://codeload.github.com/exokitxr/exokit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246547440,"owners_count":20794982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a-frame","android","browser","canvas","engine","exokit","javascript","magicleap","reality","virtual-reality","web","webgl","webrtc","webvr","webxr","xr"],"created_at":"2024-07-31T05:00:36.939Z","updated_at":"2025-11-13T22:32:15.772Z","avatar_url":"https://github.com/exokitxr.png","language":"JavaScript","funding_links":[],"categories":["Libraries","Projects"],"sub_categories":["VR/AR"],"readme":"\u003ch1 align=\"center\"\u003eExokit\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\u003cimg width=\"300\" height=\"300\" alt=\"Exokit\" src=\"assets/icon.png\"/\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cb\u003e:dark_sunglasses: Native VR and AR engine for JavaScript 🦖\u003c/b\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/exokitxr/exokit/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/exokitxr/exokit/total.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/exokit\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/exokit.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://travis-ci.org/modulesio/exokit-windows\"\u003e\u003cimg src=\"https://travis-ci.org/modulesio/exokit-windows.svg?branch=master\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://ci.appveyor.com/project/modulesio/exokit-windows\"\u003e\u003cimg src=\"https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true\"\u003e\u003c/a\u003e  \n  \u003ca href=\"https://twitter.com/exokitxr\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/exokitxr.svg?style=social\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/9M8awV8\"\u003eDiscord\u003c/a\u003e\n  \u0026mdash;\n  \u003ca href=\"https://twitter.com/exokitxr\"\u003eTwitter\u003c/a\u003e\n  \u0026mdash;\n  \u003ca href=\"http://eepurl.com/dFiLMz\"\u003eEmail List\u003c/a\u003e\n\u003c/div\u003e\n\n## Examples\n\n\u003ca href=\"https://youtu.be/cd_DEwCDF6U\"\u003e\u003cimg alt=\"Hands Reality Tab\" target=\"_blank\" src=\"https://user-images.githubusercontent.com/29695350/55507781-0e463300-561e-11e9-9b1a-f43b8259d041.gif\" height=\"190\" width=\"32%\"\u003e\u003c/a\u003e\n\u003ca href=\"https://youtu.be/b-UKSg0QCRE\"\u003e\u003cimg alt=\"Live Reload Magic Leap\" target=\"_blank\" src=\"https://user-images.githubusercontent.com/29695350/55507118-a216ff80-561c-11e9-829e-74d8244571c3.gif\" height=\"190\" width=\"32%\"\u003e\u003c/a\u003e\n\u003ca href=\"https://youtu.be/O1xA1r5SZUM\"\u003e\u003cimg alt=\"Tutorial Reality Tab\" target=\"_blank\" src=\"https://user-images.githubusercontent.com/29695350/55507125-a3e0c300-561c-11e9-835f-3a26a9e879b5.gif\" height=\"190\" width=\"32%\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://www.youtube.com/watch?v=m_QntqZmd_Q\"\u003e\u003cimg alt=\"Reality Projection with HTC Vive and Magic Leap\" target=\"_blank\" src=\"https://user-images.githubusercontent.com/29695350/55507271-e60a0480-561c-11e9-87ad-7dc736ba0760.gif\" height=\"190\" width=\"32%\"\u003e\u003c/a\u003e\n\u003ca href=\"https://youtu.be/i0MXRCNkdB4\"\u003e\u003cimg alt=\"Emukit\" target=\"_blank\" src=\"https://user-images.githubusercontent.com/29695350/55507623-a8f24200-561d-11e9-97a3-194b6b4a1d8b.gif\" height=\"190\" width=\"32%\"\u003e\u003c/a\u003e\n\u003cimg alt=\"Various Exokit Apps\" target=\"_blank\" src=\"https://user-images.githubusercontent.com/29695350/55506701-ba3a4f00-561b-11e9-9e19-ba808bed7c5a.gif\" height=\"190\" width=\"32%\"\u003e\n\n*Find more examples [here](https://github.com/exokitxr/exokit/tree/master/examples) and on [YouTube](https://www.youtube.com/channel/UC87Q7_5ooY8FSLwOec52ZPQ).*\n\n\n## Overview\n\nThis 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.\n\n:eyeglasses: **Exokit currently targets the following platforms**:\n* OpenVR Desktop VR (Steam compatible)\n* Oculus Desktop (Oculus Rift/Rift S)\n* Oculus Mobile (Oculus Quest/Go, GearVR)\n* Magic Leap\n* iOS ARKit *\n* Android ARCore *\n* Google VR (Daydream / Cardboard / Mirage Solo) *\n* any XR device, start a [pull request](https://github.com/exokitxr/exokit/compare) with a native binding if it isn't listed here! *\n\n\\* not supported yet\n\n:electric_plug: **Since Exokit supports anything that runs on the web, it powers experiences built with**:\n* Three.js\n* Unity\n* Pixi.js\n* Babylon.js\n* A-Frame\n* Custom WebGL frameworks\n* WebAssembly, TypeScript, and any language that transpiles to JavaScript\n\n:thumbsup: **Why Exokit?**\n\n- You want your WebGL/WebXR to run fast.\n- You want the hot new web APIs.\n- You want to add your own integrations -- including native -- into a browser environment.\n- You want a lightweight browser as a hackable node module.\n- You want to combine the web with a 3D engine like Unity.\n\n:thumbsdown: **Why not Exokit?**\n\n- You're looking for a traditional \"web browser\".\n- You don't care about 3D or mixed reality.\n- You're looking for strict and/or legacy standards support.\n\n:book: **Manifesto**\n\n- The future is immersive. The web is the best application platform. Javascript is the best ecosystem.\n- Content should be hardware agnostic. Tomorrow will have different hardware. VR and AR should be compatible.\n- It's not possible to do both 2D and 3D well. We don't do 2D. We can use an external 2D browser.\n- Use your favorite game engine. Exokit is not a game engine.\n- Legacy browser design choices don't make sense in XR.\n- Exokit empowers and connect apps, even (especially) if they aren't designed to cooperate.\n- Apps should run in \"reality tabs\", layers of reality that blend together.\n\n\n\n## Quickstart\n\n### Desktop\n\u003ch4\u003e\u003ca href=\"https://unavailable\"\u003eDownload for current OS\u003c/a\u003e\u003c/h4\u003e\n\n#### Run a WebXR site (desktop)\n\n```sh\nexokit https://aframe.io/a-painter/ # start A-Painter in Exokit\n```\n\n### Magic Leap\n\n\u003ch4\u003e\u003ca href=\"https://unavailable/magicleap\"\u003eDownload for Magic Leap\u003c/a\u003e\u003c/h4\u003e\n\n#### Run (Magic Leap device)\n\n```sh\nmldb connect 192.168.0.10:1131 # mldb needs to be connected; see MLDB documentation\nmldb install -u exokit.mpk # downloaded or built package\nmldb launch com.webmr.exokit -v \"ARGS=node . file:///package/examples/hello_ml.html\" # or URL to load\nmldb log exokit:*\n```\n\n## Architecture\n\nExokit is a Javascript [Node.js](https://nodejs.org) module.\n\nC++ bindings hook into WebGL, WebXR, Magic Leap, Leap Motion, and various other device APIs.\n\n`const {window} = require('exokit')()` to get an immersive browser in another project.\n\nExokit runs on Windows, macOS, Linux (x64), Linux (ARM64), and Magic Leap (ARM64).\n\n## Web API support\n\n- HTTP/S\n- HTML5\n- `\u003cscript\u003e`\n- DOM\n- WebGL\n- WebXR\n- WebVR\n- WebRTC\n- Canvas2D\n- WebSocket\n- Web Workers\n- `\u003cimg\u003e`, `\u003caudio\u003e`, `\u003cvideo\u003e`\n- WebAudio\n- Keyboard/Mouse events\n- Gamepad API\n- `\u003ciframe\u003e`\n- ~~HTML layout~~\n- ~~HTML rendering~~\n- ~~CSS~~\n- ~~Legacy APIs~~\n\n## Hardware bindings\n\n- OpenGL\n- OpenVR (Steam VR)\n- Oculus \n- Oculus Mobile \n- Magic Leap\n- Leap Motion\n\n## Local Development\nSee full building instructions in [BUILDING.md](https://github.com/exokitxr/exokit/blob/master/BUILDING.md).\n\n```sh\ngit clone https://github.com/exokitxr/exokit.git\ncd exokit\nnpm install\nnode . \u003curl\u003e # or node . -h for home\n```\n\n## Debugging\n\nUses [ndb](https://github.com/GoogleChromeLabs/ndb).\n\n```sh\nnpm run debug\n```\n\nThen in the console, input:\n\n```js\nlet window = await require('./src/').load(yourUrl);\n```\n\nNow you have a handle on the window object as you test your application, and\nyou can set `debugger` breakpoints, inspect memory, profile CPU, etc.\n\n## Flags\n\n- `--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.\n\n## Stay in Touch\n\n- [Join our Discord](https://discord.gg/Apk6cZN) for hanging out.\n- [Follow @exokitxr on Twitter](https://twitter.com/exokitxr) for updates.\n\n\n## Contributing\n\nGet involved! Check out the [Contributing Guide](CONTRIBUTING.md) for how to get started.\n\n## License\n\nThis program is free software and is distributed under an [MIT License](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexokitxr%2Fexokit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexokitxr%2Fexokit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexokitxr%2Fexokit/lists"}