Skip to content
Konjure / spatial intelligence

Platforms & devices

Capability-driven adapters preserve the core while respecting real device differences.

Desktop and mobile browsers

The web adapter uses WebAssembly for scene semantics and WebGL 2 for drawing. Mouse, touch and keyboard controls work without sensor permissions. It caps render resolution by device pixel ratio and prepares meshes only when a scene changes.

Browser and immersive support are separate. A mobile browser may render the full playground while offering no immersive AR session. Detect capabilities at runtime; do not infer them from a user-agent string. See WebXR.

RayNeo X3 Pro

The repository includes the existing Android app, native Rust/wgpu renderer, sensor boundary and offload host. Their capture orientation, reconnect and deployment behavior are useful tested foundations. New SDK contracts and device integration are tracked independently from those earlier experiments.

The native renderer accepts both the older konjure.program and new konjure.scene formats. For SDK scenes it uploads Rust-prepared meshes and samples the SDK runtime each frame. Compile a .kj source with kj compile, then pass the resulting JSON through the existing scene-loading interface. Candidate validation failures preserve the accepted renderer.

Camera observations must be normalized upright once, at capture, before preview, inference, recording and offload. Read sensor/display metadata; do not hardcode one device’s orientation in every consumer. Capture orientation does not calibrate camera-to-eye or room alignment.

A native adapter owns Android lifecycle, permission requests, camera buffers, audio routes, graphics surfaces and SDK calls. The core owns scene semantics. Raw evidence, calibration and recordings belong outside the source tree.

Frames and clocks

Use explicit frame IDs and timestamps for observations. Record clock identity and sequence so a consumer can detect stale or reordered data. Nanoseconds and sequence numbers serialize as decimal strings to preserve all 64 bits across JSON and JavaScript.

Never silently identify camera coordinates with a world frame. A resolved transform needs a known source, target, timestamp and calibration/tracking evidence. Orientation-only rendering cannot satisfy room anchoring.

Embedded subset

Sourcesh
cargo check -p konjure-sdk --no-default-features

The profile excludes the DSL compiler and std. Feed it a precompiled SceneDocument; provide allocation and the platform’s output adapter. This is not a promise that every microcontroller can render every scene. Validate memory limits, floating point, frame budgets and target support for the intended device.

Add an adapter

Define capability discovery, coordinate/clock conversion, lifecycle, resource limits and explicit errors. Consume Rust scene/frame contracts. Give the adapter fixtures for disconnect, unsupported capability, stale input and recovery. Record physical validation separately from host simulation.