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

@r1ck404/nodepod

v1.11.2

Published

Browser-native Node.js runtime environment

Readme

nodepod

npm CI

Run Node.js inside the browser. Nodepod provides a virtual filesystem, shell, npm packages, worker-backed processes, and Node-compatible HTTP servers without requiring an application backend.

npm install @r1ck404/nodepod

Nodepod used to be published as @scelar/nodepod. That name is deprecated; switch to @r1ck404/nodepod (same API and subpaths: @r1ck404/nodepod/headless, /server, /vite, /next).

Nodepod is source-available under the MIT License with the Commons Clause. See License before using it in a product.

Quick start

import { Nodepod } from '@r1ck404/nodepod';

const nodepod = await Nodepod.boot({
  files: {
    '/home/project/hello.js': 'console.log("Hello from the browser!")',
  },
  workdir: '/home/project',
});

const process = await nodepod.spawn('node', ['hello.js']);
process.on('output', (text) => console.log(text));
await process.completion;

await nodepod.teardown();

The browser entry enables Nodepod's preview service worker by default. If your product only needs files, processes, packages, or programmatic HTTP calls, use the reduced mode:

const nodepod = await Nodepod.boot({ serviceWorker: false });

Capabilities

  • Filesystem — POSIX-style paths, files, directories, metadata, watchers, and serializable snapshots.
  • Shell and terminal — a persistent shell with an optional xterm.js UI.
  • npm packages — registry resolution, archive extraction, module transforms, and browser-side caching.
  • Processes — Node.js scripts and shell commands executed in Web Workers.
  • HTTP servers — Node-compatible virtual servers reached through request(), a service-worker preview, or headless loopback ingress.
  • Headless mode — the core runtime without terminal or preview UI in the browser, Node.js, and Bun.
  • Profiling and inspection — opt-in runtime traces and attached-preview diagnostics.

Framework setup

Vite can serve and emit Nodepod's runtime assets automatically:

// vite.config.ts
import { defineConfig } from 'vite';
import nodepod from '@r1ck404/nodepod/vite';

export default defineConfig({ plugins: [nodepod()] });

Next.js, Fetch-style frameworks, Express, Fastify, bare Node servers, and static hosts have dedicated helpers or copy-based setup. The documentation covers the service-worker scope, preview bridge, production wildcard origins, and required headers.

Browser compatibility

Nodepod targets current evergreen browsers with WebAssembly and Web Workers. Full synchronous and threaded behaviour requires cross-origin isolation and SharedArrayBuffer.

Without shared memory, Nodepod supports a reduced execution path, but synchronous child-process APIs and threaded WASI packages are unavailable. A package can also depend on native add-ons or operating-system behaviour that browsers cannot provide. Test the exact dependency and browser matrix your product promises.

Nodepod is not a hardened sandbox. Products that run adversarial code must define their own trust boundary, resource limits, network policy, and cleanup strategy.

Documentation

The documentation website is maintained in the private website/ workspace in this repository. It is live at r1ck404.github.io/Nodepod. GitHub Pages deployment is currently manual, so updates are published after review.

Development

Nodepod uses pnpm 10.34.5. The runtime build and tests use Node.js 20; the docs workspace requires Node.js 22.12 or newer.

pnpm install
pnpm run type-check
pnpm run build:publish
pnpm test

Build the documentation locally:

pnpm run docs:build
pnpm run docs:check
pnpm run docs:test

See CONTRIBUTING.md for repository workflow and contributor expectations.

Sponsorship

Nodepod is maintained independently. You can support it through GitHub Sponsors; tiers and listing details are documented on the sponsor page. Sponsorship does not include an SLA, priority issue handling, private support, or early repository access.

No private email address is published for sponsor listings.

Links

License

Nodepod is source-available under the MIT License with the Commons Clause. The repository LICENSE is authoritative; documentation and marketing summaries do not replace its terms.