On-device (WASM)
@neetix/edge is a TypeScript wrapper over a Rust→WebAssembly face engine.
Detection and passive liveness run on the user's device: your JavaScript
hands the wasm an RGBA frame and gets back boxes, five landmarks and a spoof
verdict. After the one-time wasm download there are zero network calls —
open the Network tab, or pull the Wi-Fi, and it keeps working.
No API key. No server. No biometric leaves the page.
Status: preview.
It runs the same models as the hosted engine — YuNet for detection and a
MiniFASNet two-model ensemble for passive liveness — compiled to wasm with
pure-Rust tract-onnx inference, so there is no native onnxruntime to ship.
What ships today
| Capability | Method | Status |
|---|---|---|
| Face detection (box + 5 landmarks) | detect | Ships now |
| Passive liveness / anti-spoof | liveness | Ships now |
| 512-d face embedding | embed | Pending recognizer weights |
| 1:1 match (selfie ↔ ID) | verify | Pending recognizer weights |
The candidate recognizer weights are CC-BY-NC licensed, and a non-commercial licence cannot ship in a commercial product. Matching stays on the hosted API until that is resolved — so the honest split today is: detect and liveness on-device, match on the server.
When to use this instead of the API
Use the edge build when the point is that the biometric never moves — a privacy claim you can demonstrate rather than assert — or when you need real-time per-frame feedback during capture, which a network round-trip cannot give you.
Use the hosted API when you need the verdict to be yours, signed and auditable. On-device code can be modified by the person being verified, so an edge result is a UX signal, not a fraud control.
Where to go next
- Quickstart — detection and liveness on a live webcam stream.