Overview
ES-Runtime is a secure, standards-based JavaScript runtime for the server, built on V8 in Rust. It runs standard ES Modules with a sandboxed module system.
Two binaries. esrun runs your service and is deny-by-default — it reaches only what the command line names. esdev carries the development toolchain — TypeScript, bundling, tests, watch, a debugger — grants everything so the inner loop needs no flags, and never reaches production.
It is not Node.js-compatible — see Scope & non-goals and the runtime comparison.
Development
Development with esdev
Build, watch, test, and debug your projects.
Install
Download a prebuilt, checksum-verified binary for your platform:
curl -fsSL https://esrun.opentechf.org/install.sh | bashirm https://esrun.opentechf.org/install.ps1 | iexPrefer to build from source? See the README.
Run a script
# Run a module file esrun app.js # Evaluate an inline snippet (top-level await is supported) esrun -e='console.log(await Promise.resolve(42))' # Pass arguments through to the script esrun app.js --name Ada
On your own machine, esdev takes the same file and the same flags — plus TypeScript, --watch, tests, bundling and a debugger. See esdev.
Two rules cover every flag:
--flag or --flag=value | A value is never a separate word — --timeout=500, not --timeout 500 |
| esrun's flags come first | Everything after the script belongs to the script |
Both are enforced, not conventions: a value arriving as a separate word would be indistinguishable from the script path, and a flag written after the script would silently do nothing. Details: esrun CLI.