userland.run70Try the demo
Compare · BrowserPod

userland.run vs BrowserPod

BrowserPod, from Leaning Technologies (the team behind CheerpX and WebVM), runs Node.js and other runtimes in the browser on a WebAssembly-native kernel with Linux-compatible syscalls. It launched in late 2025 and has been shipping quickly. Here is how it differs from userland.run.

Last verified: · sources cited below

The short answer

  • Choose BrowserPod for fast Node.js (and Rust, Python preview) sandboxes with broad browser support, hosted public URLs for in-browser servers, and a vendor that runs the relay — if metered, API-key-based pricing fits.
  • Choose userland.run if you need to self-host everything under an open-source license, run prebuilt Linux binaries today, or want no per-session metering.

Side by side

BrowserPoduserland.run
LicenseProprietary: the npm package's license grants no rights beyond Leaning Technologies' terms of service and pricing policy. [1]Runtime: AGPL-3.0 or commercial UEL. SDK: MPL-2.0 or UEL. Source on GitHub.
How it worksA "WebAssembly-native kernel, designed from scratch to run in the browser"; processes run in Web Workers with Linux-compatible syscalls; an Ext2-like filesystem streamed on demand and cached in OPFS/IndexedDB. [2]User-mode RV64GC RISC-V emulator + Linux syscall layer in wasm, plus peer runners: Node on the host JS engine, a wasm32-wasip1 runner, a Boa JS sandbox.
Node.jsA Node build modified to run JavaScript on the browser's own engine (near-native speed). Launched with Node.js 22; Rust official since 3.0, Python in preview. [2][3][4]Real Node.js v25.4.0 ELF on the emulator (fidelity), or nodert on the browser's JS engine (fast, with documented divergences).
Native binariesPrograms must be compiled with Cheerp for its target: "third-party binaries are currently unsupported"; npm packages need a wasm build. x86 support via CheerpX is on the roadmap. [2][5]Yes — static riscv64 Linux ELF binaries (BusyBox, ripgrep, …) and wasm32-wasip1 apps.
Offline / self-hostingYou host the outer app, but BrowserPod.boot needs an API key; self-hosting is an Enterprise option. [6][7]Static files you host yourself. Catalog apps come from a signed CDN index (mirrorable via CdnOptions.baseUrl) and are cached in OPFS.
PricingPersonal: free, non-commercial/evaluation, 10,000 tokens. Pro: $20/month, 20,000 tokens, extra $10 per 10,000. A boot costs 10 tokens, each further hour 10. Enterprise above fair use. [8]Free under AGPL-3.0 / MPL-2.0. A commercial license (UEL) is available from And The Next GmbH for terms the open-source licenses don't provide.
BrowsersCOOP same-origin + COEP require-corp; Chrome, Edge, Firefox and Safari on desktop and mobile per the FAQ. [9][6]Cross-origin isolation (COOP/COEP, or the shipped service worker) + SharedArrayBuffer. This site's sample suite runs in Chromium; other engines are not in the published test matrix.
Preview / networking"Portals": random public domains routing HTTP to services in the pod, relayed via Cloudflare Workers; outbound traffic on the free tier limited to allow-listed domains. [2]Inbound: in-tab servers previewed via a service worker (/sw/<port>/). Outbound: HTTP through the host fetch (CORS applies; an optional self-hosted CORS proxy ships).
ActivityVery active: 3.4.0 on npm on 2026-10-07. [1]Active: SDK 0.2.7, nano v0.2.1 — see the changelog.

Where BrowserPod is better

  • Speed. Code compiled to wasm and JavaScript on the browser's JIT avoid interpretive CPU emulation.
  • Shareable previews. Portals give in-browser servers public URLs; userland.run previews are only reachable from the tab that runs the VM.
  • Language runtimes. Official Rust support and a Python preview, plus bash, git and BusyBox since 2.0. [10]
  • Browser coverage. The vendor states support for all major desktop and mobile browsers.

Where userland.run is different

  • No API key, no meter. Everything is static files on your origin; nothing phones home, and there is no token budget per boot or hour.
  • Open source. AGPL-3.0 runtime, MPL-2.0 SDK, commercial license optional.
  • Prebuilt binaries now. Static riscv64 Linux ELF executables run as they are — no recompilation against a vendor toolchain.
  • A JS sandbox and a WASI runner alongside Node, sharing one filesystem — see features.

Both projects need cross-origin isolation, and both keep user code in the visitor's browser. The difference is mostly who controls the runtime and the network relay, and whether you are emulating a CPU or compiling for a wasm kernel.

FAQ

Does BrowserPod run arbitrary Linux binaries?

Not today. Leaning Technologies says third-party binaries are unsupported and programs must be compiled from source with Cheerp; running x86 binaries through CheerpX is a stated roadmap item.

How is BrowserPod priced?

Through tokens on an API-key subscription: a free Personal plan for non-commercial use and evaluation, and a $20/month Pro plan for commercial use with 20,000 tokens; a boot and each additional hour cost 10 tokens each.

Can I get a public URL for a server running in userland.run?

No. Previews are served by a service worker to the same tab. To share a running app you would deploy it somewhere conventional.

Sources

  1. npm: @leaningtech/browserpod (LICENSE.txt, versions)www.npmjs.com/package/@leaningtech/browserpod
  2. Leaning Technologies — BrowserPod deep dive (2026-05-18)labs.leaningtech.com/blog/browserpod-deep-dive
  3. Leaning Technologies — BrowserPod announcementlabs.leaningtech.com/blog/browserpod-annoucement
  4. BrowserPod — changelogbrowserpod.io/docs/more/changelog
  5. BrowserPod — working around native npm dependenciesbrowserpod.io/docs/guides/working-around-native-npm-dependencies
  6. BrowserPod — FAQbrowserpod.io/docs/more/FAQ
  7. BrowserPod — licensingbrowserpod.io/docs/more/licensing
  8. BrowserPod — pricing policybrowserpod.io/browserpod-pricing-policy
  9. BrowserPod — cross-origin isolationbrowserpod.io/docs/understanding-browserpod/cross-origin-isolation
  10. Leaning Technologies — BrowserPod 2.0labs.leaningtech.com/blog/browserpod-20
  11. userland-run/nano — README and LICENSE.mdgithub.com/userland-run/nano
  12. userland-run/sdk — @userland-run/nano-sdk READMEgithub.com/userland-run/sdk

All third-party facts were checked against these pages on 2026-10-11. Products change — if something here is out of date, please open an issue.