A model can generate a BaseNative interface at inference time — no build step, and no escape hatch to arbitrary JavaScript. The expression evaluator never calls eval or new Function, and render() takes that generated template string and returns HTML on the spot.
Why this is different
A CSP-safe evaluator, a runtime template renderer, and a toolchain that lets the model check its own output before it ships.
CSP-safe expression evaluator — no eval, no new Function
done
Model self-check — @basenative/validate, /mcp, /evals
done
@if / @else conditional rendering
done
@for list rendering with track
done
@switch state matching
done
Signal-based reactivity
done
Server-side rendering
done
Client hydration
done
Expression binding (:attr, @event)
done
SSR + hydration example
done
Eval results: not yet published — the harness ships, the corpus is in progress.
How it works
Write standard HTML with template directives. BaseNative handles the rest — server-side or client-side.