Charlot Lab · EFA · Ferric Runtime

Open weights on WebGPU. Same kernels as native.

The released EFA checkpoints, fetched from Hugging Face and executed by Ferric compiled to WASM on your browser's WebGPU — the same pure-Rust tensor ops that run natively on Metal. The flagship EFA-1 runs here with its shipped agency gate on-fabric: one trunk drives 1-, 2-, or 3-joint bodies, its own energy checked against the artifact's τ each decision. Toggle to the JS CPU path and watch the per-decision latency: at these sizes the CPU wins — dispatch overhead dominates — and the page says so, because that is the honest crossover. The WebGPU path is the runtime that scales when the models outgrow JS.

efa-1 — one trunk, 3 bodies
efa-hybrid-arm2
efa-flow-arm3
runtime: Ferric WebGPU
runtime: JS CPU
initializing Ferric on WebGPU… fetching released weights from Hugging Face…

What is different from the pure-JS page. Nothing about the models — that is the point. The same safetensors bytes are handed to ferric_web.wasm, uploaded once as Ferric tensors on the tab's WebGPU device, and each decision runs as real tensor-graph ops. On the efa-1 tab the shipped agency gate runs inside the WASM call: flow K=1, the model's own potential scores the action against the τ from the artifact's config.json, and only if the energy objects does it integrate K=4 — the HUD shows the gate deciding live, per decision. The teal meter is the same potential verifying at random probe states. Latency is displayed for whichever runtime is active; switch runtimes live and compare. Cross-fabric is the claim: Metal natively, WebGPU here, one codebase — same weights, same gate, same decisions.