Web development / browser experiment
A warm-up consumable for PROVENANCE:
one image in, one 2000px proof sheet out.
Image processing stays in the browser. OWLv2 model weights download remotely on first use.
Working artifact
Drop, paste, or choose an image.
The image stays in the browser;
OWLv2 model weights download remotely on first use.
PROVENANCE / 00
DROP
ANYTHING.
DROP, PASTE, OR CHOOSE ONE IMAGE
IMAGE STAYS IN BROWSER // OWLv2 WEIGHTS DOWNLOAD ON FIRST USE
READY // AWAITING INPUT
LOCAL IMAGE
COMPOSITION
PROOF SHEET
The project
A local machine for making visual evidence strange.
Proof Sheet turns an uploaded, dropped, or pasted image into a deliberately official-looking document. It combines image treatment, object-region callouts, poetic misclassification, grain, typography, and a deterministic seed into one repeatable poster flow.
- Input
- One image, selected locally, dropped, or pasted
- Output
- Downloadable 2000px PNG proof sheet
- Runtime
- Client-side TypeScript, Canvas, a Web Worker, Transformers.js, and optional WebGPU/WASM inference
- Fallback
- Deterministic local geometry when model inference is unavailable
Pipeline
The browser is the studio.
Mask
A local image is reduced to a working canvas and given a lightweight local background treatment.
Read
OWLv2 queries visual regions in a worker through WebGPU or WASM, with a deterministic geometry fallback.
Compose
Dither, callouts, grain, labels, and a seeded barcode are composed into the final proof sheet.
Data boundary
The image stays close.
The selected image is read by the browser and is not uploaded by this tool. The image treatment, dither, composition, and final PNG are produced locally.
- Remote request
- OWLv2 model weights download from the configured Transformers.js model source on first use.
- Local execution
- WebGPU or WASM performs inference in a Web Worker when the browser supports it.
- Fallback
- If the model cannot initialize, the tool returns to deterministic local geometry rather than blocking the composition.
- Telemetry
- The portfolio code does not intentionally send the selected image to an analytics or application server.