NAC3 framework demos

NAC3 in two flavors of the modern web.

Both demos render the same NAC3 contract: the buttons, fields, and verbs are addressable by an LLM, a voice runner, a Playwright spec, or a human cursor through the same API. Pick your framework, look at the source, ship NAC3 in your own app this afternoon.

技
React 18 + Vite

React adoption demo

Hooks-based registration, JSX with data-nac-* attributes, single-page reference app.

Open demo →
Angular 17

Angular adoption demo

Component decorators + structural directive bindings, standalone components, signals-ready.

Open demo →
道

v2.5 per-RFC demos. Each RFC shipped in 2.5 has a live, Playwright-driven demo with full evidence captured under evidence/<rfc>/<date>/. Across the 8 SHIPPED RFCs in v2.5 (V24-01/02/04/05 + V25-01/02/03/04): Layer 2: 124 PASS / 0 FAIL and Layer 3 LIVE w/ Claude: 51 PASS / 0 FAIL.

RFC V25-01 -- Layer 2 + Layer 3

Plugin extension: canvas + API

Iframe canvas+API mock decorated via 6 backends (postmessage, postmessage-listen, sdk-call, script-bridge, same-origin-window, synthetic-poll) + fallback chain + cross-backend transaction.

Open demo →
RFC V25-02 -- Layer 2 + Layer 3

Tree navigation

context(plugin) breadcrumb + tree(plugin, rootId?) enumeration with data-nac-opens / data-nac-leaf authoring attributes. Multi-level menubar with opens-chain composition.

Open demo →
RFC V25-03 -- Layer 2 + Layer 3

Assistive labels (narrate)

Priority: aria-label > visible text > data-nac-label > nac_id. Nested addressable children excluded from parent's visible-text. The label primitive for TTS, screen readers, voice agents, audit logs.

Open demo →
RFC V25-04 -- Layer 2 + Layer 3

Effect detection (expect + diff)

NAC.expect polls until state matches or times out. NAC.diff snapshots before / after an action. Closes the "silent damage" gap for assistive callers.

Open demo →
RFC V24-05 -- Layer 2 + Layer 3

Agent authority + sudo

Modal-backed confirm handler, request_authority TTL grants, rank rule (high > medium > low), TTL expiry, revoke idempotency.

Open demo →
RFC V24-04 -- Layer 2 + Layer 3

Snapshot versioning + OCC

plugin_version / tree_version / element_state_hash gates on click(), STRICT vs relaxed, mutation-then-stale-hash, versionHistory + conformance_tier.

Open demo →
RFC V24-02 -- Layer 2 + Layer 3

Idempotent syncPlugin

register vs syncPlugin contrast, manifest replace not append, tree_version monotonic across idempotent calls, nac:plugin:invalidated firing.

Open demo →
RFC V24-01 -- Layer 2 + Layer 3

Plugin slug uniqueness

Happy 2-instance plugin, register-time throw on violation, validate_global plugin_instance_violations bucket, HARD_DEDUP migration flag.

Open demo →
Looking for vanilla / server-rendered? See example.php (full reference) or any of the example-*.php files at /nac-spec/. NAC3 has zero runtime dependency on a framework -- declare the attributes server-side and the same contract holds.
← Back to NAC3 spec