The fake of the art runtime.

Run Node.js
in the browser

A lightweight runtime with virtual filesystem, npm support, shell, and dev servers. Build coding playgrounds and agentic flows entirely in the browser.

View on GitHub
$ npm i @run0/jiki
index.ts
Terminal
❯
Virtual Filesystem npm & pnpm TypeScript HMR Snapshots
Features

What's inside the runtime

01 VIRTUAL FILESYSTEM

In-memory file system.

Complete Node.js-compatible filesystem with directories, symlinks, file watching, and snapshot serialization.

02 PACKAGE MANAGER

npm & pnpm built in.

Fetch and install packages from the npm registry. Handles dependency resolution, semver ranges, and caching.

03 TRANSPILER

TypeScript & JSX.

Powered by esbuild-wasm for TypeScript, JSX, and ESM transpilation directly in the browser.

04 SHELL

Full shell environment.

Pipes, logical operators, built-in commands (ls, cat, cd, mkdir, rm, echo), and extensible command registration.

05 DEV SERVER

HTTP server with HMR.

Serves files and handles routes inside the browser via Service Workers. Supports hot module replacement.

06 FRAMEWORKS

React, Vue, Next.js & more.

Works with React, Vue, Svelte, Astro, Next.js, Nuxt, Vite, Express, and Hono.

07 SNAPSHOTS

Serialize & restore.

Save the entire container state (filesystem, packages, environment) and restore it on next boot.

08 NODE.JS POLYFILLS

Comprehensive API coverage.

Polyfills for fs, path, process, http, crypto, stream, child_process, events, and others.

09 UI COMPONENTS

Ready-made editor & terminal.

CodeEditor with Shiki syntax highlighting, Terminal, BrowserWindow, and FileExplorer components.

Quick Start

A few lines is all it takes

app.ts
import { boot } from '@run0/jiki';

// Boot a container with a virtual filesystem
const container = boot({ cwd: '/' });

// Write files, install packages, run code
container.writeFile('/app.js', `
  const chalk = require('chalk');
  console.log(chalk.green('Hello from jiki!'));
`);

await container.install('chalk');
const result = await container.run('node app.js');

console.log(result.stdout);
// => "Hello from jiki!"
Examples

See it in action

Try jiki

Install the package and boot a container in a few lines of code.