🧠

How HelperBrain works

the whole stack runs in your browser tab — this page is the tour

HelperBrain has no backend. The page you load is static files; everything that happens after that happens on your machine:

helperbrain.org (static files on a CDN — that's the entire "infrastructure")
├── index.html                     UI + wiring only
├── helperbrain_harness.wasm       the decision engine (Rust → WebAssembly)
├── webllm.js                      WebLLM runtime (vendored, same origin)
└── model/…  (~0.7 GB, one-time)   Llama 3.2 1B, 4-bit, runs on YOUR GPU via WebGPU

Every request goes to helperbrain.org — the model shards, the runtime, the wasm. No third-party CDN, no API, no analytics. Open DevTools → Network and watch.

The design rule that makes a 1B model reliable

Language → the model. State, arithmetic, and identifiers → code. A small model is only ever asked to do the one thing small models are good at: turn your words into structured suggestions. Everything that has to be correct lives in the Rust→WASM harness:

the model suggests…the harness guarantees…
how to sort your brain dump into bucketsevery line you typed survives (a coverage check re-adds anything the model dropped); bucket names are coerced onto the real enum
minutes per taskclamped 2–240; absurd values replaced by a deterministic heuristic; totals computed in code
micro-steps for a scary task3–8 steps, numbering stripped, length-capped — or a built-in fallback breakdown
which tasks move your long-term goalsfabricated task/star ids are dropped; links only ever point at real state
warm words for check-ins and the weekly digestevery number in the digest is computed from local logs, never generated

The time math is fully deterministic: your "ADHD buffer" is the median of actual ÷ guessed time from your own history (clamped 1–3×) plus a fixed transition cost. The focus timer's default length is whichever block length your history shows you actually complete. No model in that loop at all — and if the model never loads, keyword fallbacks run the whole app in "instant mode."

What runs where

layerwhat it issize
UIone HTML file: rendering, WebAudio (chimes + generated brown noise), confetti, timers' rAF loop~55 KB
HarnessRust compiled to wasm32: task state, parsers, guards, buffer math, streaks, dopamine deck, prompts~360 KB
LLM runtimeWebLLM (MLC), vendored~6.5 MB
ModelLlama 3.2 1B Instruct, 4-bit quantized, executing on your GPU via WebGPU~0.7 GB, cached

Model outputs are JSON-schema-constrained (the grammar makes malformed output impossible), then still guarded. All prompts are assembled inside the wasm from live state, so the model only ever sees ids that actually exist.

Verify the privacy claim yourself

Honest limits

Stack: Rust + wasm-bindgen, WebLLM/MLC, Llama 3.2 1B (Meta, MLC 4-bit build), WebGPU, WebCrypto, Cloudflare R2 for static hosting. The harness ships with native unit tests, a Node smoke test that drives the real wasm artifact, and a headless-browser suite that exercises the entire no-model path.