Compile a supported JavaScript subset to bytecode and run it in a register-based virtual machine. JoVault is a TypeScript research project with a local browser demo and an optional WebAssembly engine path.
Research · Guide · Compatibility · Validation
Experimental research preview. Full JavaScript support and resistance to reverse engineering remain unproven. Code delivered to a browser remains inspectable.
Use Node.js >=24.11.0 <25 and npm. Clone the standalone repository and start the local demo:
git clone https://github.com/pushjoman21/JoVault.git
cd JoVault
npm ci
npm run jovault:demoOpen 127.0.0.1:4971. Edit JavaScript, compile it, then run
the original and compiled versions locally with the same arguments.
The editor shows the register instructions and generated ESM wrapper.
Run npm run check to typecheck the project and execute its Node tests.
| Path | Current contract |
|---|---|
| R0, the default | 32 operations, primitive values, loops and direct calls; function imports and exports through native ESM. |
| Boa, optional | A Rust JavaScript engine compiled to Wasm; explicit module graphs, signed checkpoints and fresh-instance execution. Requires pinned engine assets. |
Unsupported R0 syntax produces an error. Boa has no ambient DOM, Node, network or filesystem access; its exposed arguments and results are primitive values. The guide explains how to enable it. Validation distinguishes measured results from open work.
Signed packages bind code, runtime, deployment and expiry. R0 changes its opcode mapping in ten-minute epochs. Local expiry checks can be patched by the client owner; they cannot revoke a copied algorithm. Keep secrets and authorization on a server. Architecture explains the trust boundaries.
Compiler reproductions and compatibility tests are welcome. Read the contribution guide and include the input, expected result and actual result in a bug report. Star the repository to bookmark it; use Watch for release notifications.