CPython 3.14 on WebAssembly with real processes, multi-core parallelism, checkpoint/time-travel, and a computer you can export as a single file. Zero dependencies, no build step. Chromium/Edge.
This page prints no benchmark headlines. A number on a landing page is a number you owe forever, and that debt steers the product. pyproc pays off when a product can prepare state once, restore it, or shard work across browser processes; single-kernel NumPy remains ordinary WebAssembly BLAS. Measure it on your own machine in Speed Lab.
Every demo above runs in the hero console. These pages are the same thing with room to poke at it.
One Python state across tabs. Close the leader and another tab recovers memory and files locally.
Prepare a Python environment once, checkpoint, let buggy code corrupt it, restore in milliseconds (no re-run), then branch two approaches from the same state. The agent retry loop, in the tab.
A computer that never turns off: close the tab, it hibernates as a few MB; reopen, it resumes. Export it as one signed .pymachine file and open it with a trusted key.
FastAPI, SQLite, editable app.py, and a live iframe preview, all served by Python through a Service Worker virtual origin in this tab.
Run NumPy matrix multiply once on one Python worker, then shard the same job across 4 workers through the public PyProc API. Measure it on your own machine; single-kernel BLAS is a separate axis.
A real REPL: input() genuinely blocks (WebAssembly JSPI), and %undo time-travels the heap to before your last statement.
Fork workers from a memory snapshot and run on real CPU cores in parallel. First visit reloads once to unlock SharedArrayBuffer.
Boot CPython, run code, load numpy. The smallest possible start.
Web Worker = process. Boot once, snapshot the heap, fork N interpreters: N GILs, N cores, kill/interrupt/respawn lifecycle.
Full-hash heap checkpoints at execution boundaries. Restore writes only the changed pages instead of re-running, guarded against silent corruption by a mutation counter.
The whole running computer in one .pymachine file: SHA-256 integrity, explicit trust gate, and a determinism check before any delta is applied.
bootEnv restores a bare-heap snapshot and installs wheels from an OPFS cache. runScript runs PEP 723 self-sufficient scripts. freeze() pins it all.
The bundled service worker maps fetch("/pyproc/...") to your in-kernel FastAPI app: real URLs, zero sockets, no backend.
/home/web is a real OPFS-backed disk that survives kernels. Core assets cache so the second boot needs no network at all.
Financial-disclosure notebooks over DART and SEC filings. pyproc's in-kernel ASGI server is the live browser-as-server backend: a Python FastAPI app answers fetch("/pyapi/...") with no socket, in production today.
A browser spreadsheet that runs real Python inside cell formulas (=PYUDF(...)). Adopting pyproc's Runtime for the interpreter, interrupt-driven cancellation of runaway UDFs, and the value bridge.
A worker that already booted its own Pyodide adopts pyproc with new Runtime(py): no second interpreter, all the capabilities.
Product code should consume root exports, stable subpaths, and documented execution assets, never engine internals. These are the decision surfaces before wiring pyproc into a product.
Start from the task: which public exports to import, and which runnable proof backs that capability.
Decide what to enable by product value, status, browser requirements, runnable surfaces, gates, and hard boundaries.
Pin exact versions, keep import boundaries clean, deploy same-origin assets, and verify the product gate.
Reproduce S0-S5 artifacts before making speed claims. The headline is sharding and OS primitives, not blanket Python speed.
Pin an exact npm version for product use. Release-before-pinning alternatives and asset deployment rules live in the consumer contract.