VectoUI — the Zero-DOM canvas UI engine an AI agent can actually drive

Zero-DOM, accessible, agent-native. The canvas UI runtime that screen readers — and AI agents — can operate by role.

DemosGitHub

More than a canvas

ECS architecture

Every object is an Entity in the Virtual Math Tree. Extend built-in components via inheritance or build entirely custom ones — if JavaScript can express it, VectoUI can render it. No opaque component registries.

🍃

Zero-DOM, zero reflow

The entire UI tree lives in one <canvas>. Layout, hit-testing, and animation are pure math in JS and Workers — no browser reflow, no style recalc. DOM-node count stays flat while animating tens of thousands of elements.

👁️

Agent-native & accessible

Every interactive entity projects a real, transparent DOM node. A pure-canvas page is still driven by screen readers, Playwright, and AI agents withgetByRole().click(). No adapters required.

🔤

Hot/cold typography & BiDi

prepare() measures glyphs once; layoutPrepared() re-wraps on every resize for free. Inline rich text, exclusion flow, Arabic/BiDi shaping, MSDF fonts, and streaming token-append built in.

WebGL & WebGPU acceleration

Batch layer coalesces same-color shapes into one draw call. WebGPU compute simulates 100k–1M spring particles on the GPU. Idle auto-throttle drops to ~2 fps when nothing is animating, conserving CPU and battery.

Streaming-first Markdown

appendMarkdown(delta) appends in O(changed paragraph), not O(document). Tables, code fences, images, math (MathJax), Mermaid, and ABC notation are all rendered natively — built for LLM chat and live feeds.

Three.js & 2.5D depth

ThreeAdapter renders a full VectoUI scene as aTHREE.CanvasTexture with UV raycasting for pointer events. A built-in depth sort handles pseudo-3D layering without a raw WebGL depth buffer.

Zero-GC & O(1) culling

Particle data lives in contiguous Float32Array buffers — no per-frame heap allocations. A constant-time spatial index skips every offscreen entity. Modular subpath imports keep bundles small.

Built for

Anywhere a DOM is too slow, too rigid, or too visible.

Data

Visualization & trading terminals

Real-time charts, deep order book terminals, and K8s topology viewers. Thousands of animated nodes with flat memory usage — no DOM reflow per data tick.

Canvas

Infinite canvases & knowledge graphs

Collaborative whiteboards, Figma/Miro-scale design tools, and node-edge graphs. O(1) spatial culling keeps pan and zoom smooth at any depth.

Streaming

LLM clients & live feeds

Token-by-token Markdown streaming, danmaku at 5,000+ concurrent comments, and real-time observability feeds — all with sub-millisecond append cost.

Games & Media

Web games & educational video

OSU!-style rhythm games, physics sandboxes, and interactive animations. A web-native alternative to Remotion and Manim — no video pipeline needed.

Editors

Text editors & dev tools

Canvas-based editors like vscode.dev use canvas because the DOM text engine can't be controlled at the character level. VectoUI provides the missing layout engine, IME input, and accessibility layer.

Privacy

Scraping-resistant interfaces

No DOM means no structured HTML for bots to parse. Natural fit for premium content protection, anti-bot surfaces, and CAPTCHA-alternative applications.

XR & 3D

WebXR & Three.js integration

Render VectoUI panels as THREE.CanvasTexture on any 3D mesh. Spatial dashboards, in-world terminals, and head-up displays with full UV-raycasted pointer events.

Creative

Advanced interactive websites

Physics-driven layouts, cursor-reactive particle fields, magnetic typography, and generative art — effects impossible with CSS alone, embedded inside an otherwise normal webpage.