Node.js and Python in the browser.
Server on demand.

Start Node-style code and supported Python in the tab. When the workload needs native tools, server-only packages, or a durable workspace, Verklet can promote the same runtime to a managed server backend.

$ npm i @verklet/sdk
runtime · idle
index.mjs10 lines
import { createServer } from 'node:http';

const port = 3000;

createServer((req, res) => {
  res.writeHead(200, { 'content-type': 'text/plain' });
  res.end('hello from a tab\n');
}).listen(port, () => {
  console.log(`listening on :${port}`);
});
terminal
browser runtime · preview :3000 → /

The complete dev loop, from tab to server.

01 · The runtime

Browser first. Server when needed.

Run the fast path in the browser: workers for Node processes, Pyodide for Python, WebAssembly for hot paths, OPFS for local persistence, and service workers for previews. Switch to the server backend only when the workload needs Linux or native tools.

  • backend: 'browser' | 'server' | 'auto'
  • fs, http, process, events, streams
  • Python through Pyodide, native stacks through promotion
  • OPFS snapshots or server workspaces
  • Per-runtime limits and usage events

02 · Installs

Lockfile hydration in the tab.

Treat npm, pnpm, and Yarn lockfiles as truth. Let the package manager write the lockfile, then hydrate the exact package layout through the fast registry path. Browser demos stay cheap and instant.

03 · Python

Python plots without a backend.

Run supported Python and Pyodide packages in the browser, write files into the same VFS, and show artifacts like SVG plots in your preview surface.

04 · Previews

Previews stay isolated.

When a process opens a port, Verklet exposes it on a dedicated preview origin. Browser-backed servers use the preview bridge; server-backed sessions use the same runtime events and SDK surface.

Wherever a real dev loop has to fit on a page.

AI coding agents

Give agents a sandbox that starts in the browser for Node and supported Python, then promotes uv or native-tool work to a server workspace when the task needs it.

Browser IDEs

Bring your editor, terminal, filesystem, previews, and server fallback behind one SDK. The UI does not need separate local and remote execution paths.

Embedded tutorials

Drop a working dev environment into your docs. JavaScript and Python exercises stay in the tab; native-tool chapters can run on the managed backend.

Customer demos

Ship live, mutable demos that are browser-cheap by default and server-backed only for the flows that need real Linux capabilities.

An SDK that gets out of your way.

Boot a runtime, mount files, spawn processes, listen for events. Use one SDK for browser workers, Pyodide Python, and server sessions. Your UI keeps the same filesystem, stdio, events, and preview model while Verklet chooses the backend the command needs.

typescriptquickstart.ts
1import { Runtime } from '@verklet/sdk';
2
3const runtime = await Runtime.boot({
4 projectId: 'prj_your_project_id',from your account
5 backend: 'auto',browser first
6 persistenceKey: 'demo',OPFS or server persistence
7});
8
9await runtime.mount({
10 'index.mjs': { file: { contents: 'console.log("local")' } },
11 'analysis.py': { file: { contents: 'print("pyodide")' } },
12});
13
14await runtime.spawn('node', ['index.mjs']);stays in the tab
15
16// Runs in Pyodide unless the workload needs server promotion.
17const proc = await runtime.spawn('python', ['analysis.py']);Pyodide first
18
19for await (const chunk of proc.output) {
20 console.log(chunk);
21}

Free during beta. Browser Node and Python plus server promotion included.

Create an account to get a public project ID. Every project gets browser Node, Pyodide Python, hosted assets, registry access, and beta server-runtime access. Commercial tiers start at $20/mo and add commercial rights, included server hours, support, and usage analytics. Extra server time is metered by the minute.

See the tiers →

no credit card required