Write once.
Ship to every runtime.
bext-lite takes one PRISM app and runs it natively, on the desktop, at the edge, in the browser, on mobile and on embedded hardware - from the same source. No Node, no V8 cage, no platform. The whole app ships in about 4 MB.
# build your PRISM app to a self-contained bundle
bext-lite build ./app -o ./dist
# run it - 1.8 MB binary, no Node, no V8 required
bext-lite serve ./distSwap the runtime, not the code
The AOT exporter emits the same bundle for every target. Pick the shape that fits - the app is identical.
How one app runs everywhere
Compile ahead of time, render with a tiny engine, bridge to the host, serve. Two of the four layers are fully portable - the client runtime is free on every target.
Small, faithful, everywhere
Tiny by construction
No Node runtime, no V8 pointer cage, no multi-tenant platform. The QuickJS path is a pure interpreter - the whole app ships in megabytes, not hundreds.
Same source, every target
Write a PRISM app once. The AOT exporter produces the same bundle for native, desktop, edge, browser, mobile and embedded - swap the runtime, not the code.
Byte-faithful
Every target renders the exact HTML the bext server would. The output is verified identical, so what you test is what every device ships.
Local-first data
KV, a per-app database and object storage are self-contained SQLite - copyable to any target. On-device data with optional sync to a remote bext.
Free client runtime
The island hydration runtime is pure browser JS with zero server coupling - it runs unchanged in any WebView, on every target, at no extra cost.
One CLI
bext-lite build, serve, dev and package. Hot-reload locally, export a self-contained bundle, ship it. No config sprawl.
Megabytes, not hundreds
The whole app - the runtime and your assets - ships in about 4 MB. The fat runtimes it replaces do not.
One codebase the others can't tell
Electron does desktop. Workers do edge. Neither does both - let alone mobile and embedded too.
Ship your PRISM app anywhere
Build a self-contained bundle and run it from a single binary in two commands.