npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

browserpod

v3.4.0

Published

Sandboxed Dev Environments in any Browser

Readme

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.