BLR / browser lab
Portfolio

Experimental · runs locally in your browser

Write code. Run Blender.

Rust compiles in your browser to bounded scene commands. Python runs in Blender’s embedded Python. Open the resulting scene in the Blender editor or as a GLB preview.

  1. Rust
  2. wasm32-wasip1 guest
  3. Scene commands
  4. Blender 5.2
  5. GLB

Runnable workspace

Rust + Python · Blender 5.2.2

Rust source

Drafts save per example and language in this browser

Each language keeps its own draft.

Choose Scene function for a scene-building function or Full program for a standalone program. Press Ctrl/⌘ + Enter to run.

Loading BLR…

Scene preview

Choose the Blender editor or GLB preview

Waiting for a run
Checking browser support. GLB preview is ready while the check runs.

Run an example to create a Blender scene.

Browser-hosted Blender workspace

Current scene geometry

Objects
—
Vertices
—
Triangles
—
Blender
—

Run output

Compile and runtime diagnostics

Preparing
  1. 1Rust compile
  2. 2Blender run
  3. 3Mesh preview
Rust compile
—
Guest execution
—
Blender execution
—
Preview (GLB/snapshot)
—
Guest Wasm
—
Scene commands
—
GLB
—
Examples and runtime status will appear here.
About this playground and its limits

Rust examples compile to bounded scene commands. Python examples execute in Blender's embedded Python runtime with access to bpy and the current scene. A successful Rust or Python run replaces the previous generated scene; separately created Blender objects remain outside that lease. Canceling a dispatched Python run closes Blender because Python code cannot be safely interrupted. Snapshot / Update GLB exports the generated objects. The headless path also creates GLB previews.

Scene-function examples use shared blr recipe values compiled with a browser adapter into bounded Blender scene commands. The browser supports six primitive kinds, transforms, tint metadata and up to 64 objects. It does not expose the full native API or arbitrary Cargo dependencies; native source remains private. Blender's Workbench viewport uses gray Solid shading, while GLB previews turn tint metadata into browser materials. These views do not provide EEVEE or Cycles rendering. Compiler and Blender assets load only after you start the editor or run a program.

Python is trusted code with access to the Blender process, filesystem and other process side effects. Source and output limits do not make it a sandbox. Headless runs use a disposable Blender runtime. Editor runs cannot roll back arbitrary changes Python makes to pre-existing objects or other Blender state. Cleanup tracks IDs created by the run; cleanup uncertainty is reported as an error.

The demo is experimental and does not provide general .blend round trips or the full native API. Browser support requires cross-origin isolation and WebGPU for the editable Blender workspace; the GLB preview is the available fallback.