A permanent collection, kept honest by a build.
The Pocket Museum is the catalogue of every machine PocketJS runs on. It belongs to Pocket Lab, whose landing page carries a short version of this collection; this site is the long version, with hardware, bring-up documents and example code per machine.
Where the content comes from
two owners, one pageCurated here
- Hardware specifications — processor, clock, memory, panel, storage, body, release date — with sources.
- Product photographs, each with author and licence (credits below).
- The plaque text: what the machine was and why it is in the collection.
- The status and execution-path labels, which follow upstream's evidence tables.
Lives in src/data/devices/*.ts of the museum repository.
Owned upstream
- Toolchains, build and deploy steps, acceptance rules — the host READMEs and
docs/*.md. - Target profiles — read from
contracts/spec/platforms.ts. - Board definitions —
vapor/boards/*.json. - Blog titles and dates —
site/nav.ts; screenshots —site/assets/blog/. - Example code — the demo apps and runtime sources themselves.
Rendered verbatim from the git submodule external/pocketjs, pinned at 6c43f49 (2026-08-19).
The rule is simple: the museum never rewrites a bring-up document. Markdown is parsed into a token stream at build time; headings get anchors, relative links resolve to the repository at the pinned revision, code is highlighted — and nothing about the text changes. When a machine lacks a document upstream, its page says so instead of inventing one. 40 upstream documents are in this build's render set.
How to add an exhibit
four steps- 01
Land the bring-up upstream first
A host README or a
docs/<MACHINE>.mdin pocket-stack/pocketjs is the source of truth for toolchain, build, deploy and acceptance. The museum only points at it. - 02
Update the submodule
bun run upstream:updatemovesexternal/pocketjsto the current main and stages it. - 03
Write the exhibit
Add
src/data/devices/<slug>.tswith the hardware sheet, a freely licensed photograph insrc/assets/devices/, the upstream document paths and example files, and register it insrc/data/devices.ts. If a document lives in a new directory, add the glob tosrc/data/upstream.ts. - 04
Build
bun run checktype-checks and prerenders every page. A missing document, a broken path or a wrong type fails the build rather than the visitor.
Photo credits
every product photographScreenshots and device captures on exhibit pages come from the PocketJS repository (MIT) and are credited to their upstream path in place. Motion Lab studies are by yui540 and are not reproduced here.
Colophon
how it is built- Stack
- Vue 3, Vite, vue-router and vite-ssg for static pages; Tailwind CSS v4 compiled at build time; markdown-it and shiki at build time. No runtime CSS or JS framework beyond Vue.
- Type
- Space Grotesk for display and body, IBM Plex Mono for labels, specifications and code — the Pocket Lab pairing.
- Colour
- Near-black navy surfaces on a 56 px bench grid; cyan for interaction, green for shipping, amber for time.
- Source
- pocketlab-museum · design notes in
DESIGN.md, working rules inCLAUDE.md.