A new place for the development of the WebAR of tomorrow.
Open-source WebAR tooling — from historical tracking in C/C++ to pure-Rust, WASM-first computer vision.
We are a group of developers passionate about Web Augmented Reality. We believe open source makes a difference: we build libraries for marker-based and markerless (NFT) tracking directly in the browser, without plugins, using WebAssembly.
Our work covers the entire stack: from historical bindings based on ARToolKit to a new generation of pure-Rust libraries, designed to be lightweight, portable (including no_std), and performant on WASM.
| Project | Description |
|---|---|
| PureCV | Computer vision library in pure Rust, without FFI dependencies, designed for the WASM target. On the roadmap: Feature detection (TEBLID, FREAK, StarDetector/CenSurE) and matching (BFMatcher, GMS filtering), with experimental no_std support under evaluation. |
| WebARKitLib-rs | Rewrite of the WebAR tracking library in Rust, a direct successor to WebARKitLib/ARToolKit5, designed to compile efficiently to WASM. |
| jsfeatNext | TypeScript version of jsfeat, with type definitions, used as a computer vision layer on the JS/TS side. |
| webarkit | 🚧 Proposed. Organization's central repo: will host the shared CV contract (@webarkit/cv-backend-spec), making jsfeatNext and PureCV backends interchangeable for a future high-level AR project. |
| Project | Description |
|---|---|
| WebARKitLib | The C/C++ source code for WebARKit, based on ARToolKit5 and extended with new features (SIMD, logging, improved tracking). |
| webarkit-cv | WebARKit compiled via Emscripten/OpenCV: the bridge between the C++ library and the browser. |
| Project | Description |
|---|---|
| ARnft | Lightweight JavaScript library for WebAR with markerless tracking (NFT), based on jsartoolkitNFT, with rendering via three.js. |
| jsartoolkitNFT | A stripped-down version of jsartoolkit5, focused exclusively on NFT (Natural Feature Tracking) support. |
The current focus is migrating to a pure-Rust, FFI-free stack, with particular attention to:
- 📦 WASM binary size control
- 🔧
no_stdcompatibility (embedded target, e.g., ESP32) - ⚡ SIMD performance on WASM
- 🧩 API consistency across different repositories
On the C/C++ side, work hasn't stopped: recent tracking improvements (first-frame robustness, marker-centered origin option) and the OpenCV/Emscripten pipeline update are keeping the historical foundation solid as the Rust stack matures.
🚧 In discussion: A proposal for a monorepo hosting a shared CV contract (@webarkit/cv-backend-spec) is open in the webarkit repo, making jsfeatNext and PureCV interchangeable backends behind the same interface, ready to be consumed by a future high-level AR project. The status is still draft, open to discussion about the monorepo structure and package names.
Pull requests are welcome! Check out the open issues in the individual repositories—many are labeled good first issue or help wanted. For general questions, you can email us at contact@webarkit.org or visit webarkit.org.