Skip to content

Repository files navigation

BrowserPod.io  •  Docs  •  Claude Code  •  Discord

BrowserPod
BrowserPod

Discord server GitHub Issues npm

Build with:   Wasm

Supported languages:   Node.js    Rust    Python    Ruby    Go

Supported frameworks:   React    Next.js    Vue.js    Nuxt.js    Angular    Svelte    Express.js

Supported tools:   npm    Vite    tailwind    yarn    jj    Git

What is BrowserPod?

BrowserPod is a WebAssembly-based API that creates a lightweight Linux virtual machine directly in a user's browser tab. Its in-browser Linux-like kernel supports sandboxed runtime environments including Node.js, Rust and Python (preview), with more coming soon.

Developers use BrowserPod to sandbox untrusted and AI-generated code in the browser, build web applications that embed server-side processes client-side, create interactive documentation and playgrounds and run AI coding CLIs in-browser without modification (e.g., Claude Code, Codex).

Features

Feature Description
WebAssembly BrowserPod compiles full native runtimes to WebAssembly, running them directly in the browser without a server.
Kernel BrowserPod's in-browser kernel exposes a Linux-compatible syscall interface rather than a limited JavaScript shim.
Sandbox BrowserPod runs directly in the browser, inheriting its security boundary.
Runtimes In-browser runtimes for Node.js, Rust and Python (currently in preview). Ruby and Go are in development.
Compatibility The Node.js runtime ships with npm built in, and supports most frameworks and tools (including React, Angular, Next.js, Express.js and Vite; see Node.js frameworks for more). Most Rust CLI tools work unmodified, including jj, ripgrep and Codex.
Filesystem A block-based streaming virtual filesystem provides full POSIX compatibility. Disk images are streamed on demand, and any file changes stay local to the browser session using either IndexedDB or the Origin Private File System (OPFS).
Portals Ports that open in BrowserPod can be shared via a temporary private URL. This secure URL routes external traffic directly to the service running in the browser, enabling live previews and collaboration without any backend servers.
Tools BrowserPod provides a wide range of developer tools and frameworks, including bash, git and ripgrep, plus npm for Node.js.
Multithreading Web workers enable true multithreading for complex, multi-process workloads that would normally require a full operating system.
Terminal To connect a process's I/O, pass it a Terminal, an in-browser pseudo-terminal handle created via createDefaultTerminal or createCustomTerminal. BrowserPod uses xterm.js by default, but also supports other Wasm-compatible pseudo-terminals (e.g., ghosttyweb).
Networking BrowserPod provides controlled networking. To prevent malicious use, egress is limited to a whitelist of domains (e.g., github.com). To add domains for your project, reach out to us on Discord.

Getting started

Quickstart

npm create browserpod-quickstart

npm

npm install @leaningtech/browserpod

yarn

yarn add @leaningtech/browserpod

Runtimes

BrowserPod supports Node.js and Rust, with Python currently in preview. Additional runtimes, including Go and Ruby, are in development.

Runtime Availability Since
Node.js Live 🟢 browserpod-1.0
Rust Live 🟢 browserpod-3.0
Python Preview 🟠 TBA
Go 2026 🔴 TBA
Ruby 2026 🔴 TBA

Considerations

Browser

Chrome, Firefox, Edge and Safari are all supported. For maximum compatibility, we recommend Chromium-based browsers.

In some experimental use cases that require significant client memory, BrowserPod may fail in Safari.

Native binaries

BrowserPod runs Node.js in a Wasm environment. Packages that ship native binaries for specific CPU architectures will not run unless they provide a Wasm build.

Many popular build tools publish an official Wasm version alongside the native one. You can tell your package manager to install the Wasm version instead, anywhere in your dependency tree, without changing your own code.

Common Wasm overrides

Native package Replace with What it does
esbuild npm:esbuild-wasm@* Bundler used by Vite and many dev servers
rollup npm:@rollup/wasm-node@* Bundler used by Vite for production builds
@parcel/watcher npm:@parcel/watcher-wasm@* Watches files for changes during development

Add them under overrides in your package.json:

{
  "overrides": {
    "esbuild": "npm:esbuild-wasm@*",
    "rollup": "npm:@rollup/wasm-node@*",
    "@parcel/watcher": "npm:@parcel/watcher-wasm@*"
  }
}

If you use Yarn, the field is called resolutions instead of overrides. The contents are the same.

Framework-specific packages

Some frameworks ship their Wasm build as a separate package that you add as a normal dependency, rather than as an override:

Package Needed for
@next/swc-wasm-nodejs Wasm build of the SWC compiler used by Next.js
@oxc-minify/binding-wasm32-wasi Minifier for Nuxt and other Oxc-based toolchains
@oxc-parser/binding-wasm32-wasi Parser for Nuxt and other Oxc-based toolchains
@oxc-transform/binding-wasm32-wasi Transformer for Nuxt and other Oxc-based toolchains

Cross-origin isolation

BrowserPod uses SharedArrayBuffer, which means it can only run on cross-origin isolated pages.

To enable cross-origin isolation, your page must send both of these headers:

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

Resources


Licensing

BrowserPod is proprietary software. It's free to use for personal and open-source projects.

Commercial support, feature fast-tracking, sponsored development and consulting packages are available for Enterprise customers.

Generous token grants are available for start-ups and open-source projects.

See our pricing for more details or contact us if you've got questions.

About

A browser-native code sandbox. Run Node.js, Rust, C++, Python (preview), and other full-stack runtimes directly in the browser.

Topics

Resources

Stars

213 stars

Watchers

6 watching

Forks

Releases

Packages

Contributors

Languages