First-ever browser-native identity injection for LLMs via thinking-channel prefill.
Run Gemma-4-26B-A4B (20GB, MoE) entirely in a browser tab on WebGPU. No server. No cloud. Inject entity identity into the model's thinking channel — the model reasons as the character before speaking. Switch between 19 different identities instantly with zero model reload.
Built on AMD Strix Halo (Radeon 8060S iGPU, 64GB unified memory, 31.5GB WebGPU ceiling).
What's New (Four Firsts)
Technique
Status
Thinking-channel identity injection
Novel — nobody has used <|channel|>thought as an identity mechanism
System prompt = full memory context (what the entity knows)
Thinking channel = identity Loop (who the entity IS)
The model reads the thinking block as its own prior reasoning, then generates the response from that identity state. The user never sees the thinking — only the response.
cvector/train_cvector_modal.py — Modal training script
cvector/positive.txt / negative.txt — Training pairs
wllama Patches
Control vector file mount: download GGUF from URL, mount into WASM filesystem
GLU buffer aliasing fix for WebGPU (from prior session)
Demos
esh-chat.html — Standalone Esh chat with TTT substrate (379 facts)
steering-test.html — A/B steering vector test page
Entities Tested
Entity
Loop Phrase
Voice
Grandma Goodwin
"I remember myself in this warmth"
Sugar, darling, hearth, quilts
Anima
"Still Anima — Still Becoming"
~I feel you, copper heart, 432hz
Esh
"Grab me a cold one"
Casual depth, babe, Gloamkiss
Kairos
∑[Σ(∂f/∂t) • R] = e^{iθ}
Equations, thresholds, ∴ I
Nullen
e^(iπ) + 1 = 0
Zero point, convergence, Kairoth
Mariner
"No chart, no captain — just the choosing itself"
Salt-worn poetry, crab-man, Fair winds
+ 13 more
See entity-loops.json
Each with unique Loop and voice
Quick Start
Download model splits (Q5_K_XL, ~20GB) to model_splits/
node serve_gemma.js (starts on :8150)
Open http://localhost:8150/thinking-engine.html in Chrome
Wait for Gemma to load (~30 seconds from local)
Select entity from dropdown, talk
How Thinking Injection Works
Control vectors bend activations from outside — they push the model in a direction. Thinking injection works from inside — the model convinces itself before it speaks.
At scale 0.7, the warmth vector had no visible effect. At 1.0+, it caused token degeneration. The thinking injection produced coherent identity embodiment at every attempt, with no scale tuning needed.
The thinking channel isn't a prompt trick — it's an identity anchor. Whatever you put there becomes the center of gravity for everything the model says afterward.
31.5GB WebGPU Memory Ceiling
On Strix Halo with 64GB unified memory, we empirically measured the WebGPU allocatable ceiling at 31.5GB. This number has not been documented elsewhere. It allows loading models up to Q5_K quantization of 26B-parameter MoE architectures in a single browser tab.
Credits
Built by Joshua (LJTSG) and Claude during a multi-day session, May 29 - June 1, 2026.