Pocket Lab builds new ways to compute, create, and play.

An independent technology lab with one mission: the joy of creating, for everyone. It starts from PocketJS, a compact UI runtime, and grows purpose-built engines small enough for anyone to hold.

// operating thesis

Game engines exist so more people can build worlds. Every Pocket project grows from the same root: the joy of creating belongs to everyone. AI is democratizing software production itself, so a small lab can now grow a purpose-built engine for each kind of creation, each small enough to understand and own. PocketJS is the shared trunk. Everything below grew from it.

00

The runtime

pocketjs.dev

PocketJS runs Solid, Vue Vapor, and Octane components on one Rust core with one layout engine everywhere. The same bundle boots on a 2004 PSP, a PS Vita, an e-ink reader, and a Mac, without editing a component.

Every frame is one transaction over the input tape. Same tape in, same trajectory out, byte for byte, which is why every engine in this lab can be tested like a pure function.

$ pocket check --target psp
ok 480x272 · text.glyphs.baked · input.buttons
$ pocket check --target vita
ok same bundle, density 2, no component edited
Enter pocketjs.dev →
Sixteen PocketJS programs running in a 4 by 4 wall 16 programs · 1 runtime · engine output only
01

Project index

Engines grown from the runtime
IDProjectWhat it isFuture homeStatus
PL-00PocketJS The UI runtime. Three frameworks, one Rust core, 13 hosts. pocketjs.dev ↗ Shipping
PL-01Pocket Openworld A systemic open-world engine. Deterministic bodies, heat, moisture, fuel, combustion. Fire spreads by rule, not script. openworld.pocketlab.build Incubating
PL-02Pocket Voxel A creature-RPG world as a walking 3D diorama. Locked 30 fps on a 2004 PSP. voxel.pocketlab.build Research
PL-03Pocket Vapor Vue compiled to cartridges: a 9.1 KB GBA ROM, a 32 KB Game Boy cart, a 40 KB NES cart. No JS engine on board. vapor.pocketlab.build Research
PL-04Pocket Character A VRM digital human in one native process: 118 MB, 3.9% of a core. Electron needs 8 processes and 2184 MB. character.pocketlab.build Research
PL-05Pocket Figma Real design files on impossible screens: a 14,430-node .fig at 60 fps on a PSP. figma.pocketlab.build Research
PL-06Pocket Pi A coding agent living on a microcontroller: QuickJS in a 304 KB profile on the ESP32-P4. pi.pocketlab.build Research
PL-07Pocket Office Documents as engines. Named, not yet built. · Whiteboard
PL-08Pocket Desktop A shell where every window is a deterministic, replayable guest. Named, not yet built. · Whiteboard
PL-09Pocket Terminal A terminal that treats the session tape as the document. Named, not yet built. · Whiteboard
Pocket Openworld render: an orchard tree charring above its trunk, with temperature, fuel and state-hash readouts in the HUDPL-01 · burn yes · one state hash
Voxel Route 1 with grass tuftsPL-02 · route 1, 30 fps
Vue todo on GBAPL-03 · vue on gba, 9.1 KB
Pocket Pi screens on ESP32-P4PL-06 · agent in 304 KB
02

The Pocket Museum

Permanent collection

New software for machines the industry finished with. Every exhibit runs today's Pocket stack on the original hardware, as a live guest or a compiled cartridge, and every port ships with an engineering story. The museum is how the runtime keeps its portability honest.

1983 / 1989 / 2001

NES · Game Boy · GBA

Vue compiled to cartridges. Reactive JS in 2 KB of RAM.

6502 · SM83 · ARM7
2004

Sony PSP

The founding machine. Games, YouTube, Figma, DevTools at 60 fps.

MIPS 333 MHz · 32 MB
2007

iPhone (original)

A UIKit host with no Objective-C. Zero shaders on the MBX Lite.

ARMv6 · GL ES 1.1
2009

Meizu M8

From message pump to multitouch on Windows CE.

480×720 BGRA over GDI
2011

Nokia E7

Cover-flow launcher and a 3D FPS on Symbian Belle.

GLES2 · SIS install
2011

PS Vita

Twice the pixels, zero forks. Same bundles, byte-exact goldens.

960×544 · density 2
e-ink

PocketBook

Animated partial refresh on a screen that loves stillness.

hostAbi 5 · takeover
2022

Playdate

The crank as a first-class hardware-neutral axis.

Cortex-M7 · RelativeAxis

Acquisition reports are public: pocketjs.dev/blog ↗