--- title: 1650-Elo Browser Chess emoji: ♟️ colorFrom: blue colorTo: indigo sdk: static app_file: index.html pinned: false short_description: Grafted BT4 to Qwen3-1.7B chess, self-playing on WebGPU custom_headers: # credentialless (not require-corp) so the cross-origin model weights fetched from the # HF model repo load under cross-origin isolation WITHOUT needing a CORP header on them. # Still enables SharedArrayBuffer / crossOriginIsolated, which WebGPU + threaded WASM need. cross-origin-embedder-policy: credentialless cross-origin-opener-policy: same-origin --- # 1650-Elo browser chess — Latent Grafting A frozen **Lc0 BT4** chess trunk is grafted into **Qwen3-1.7B** as soft-prompt tokens; the LLM reads the graft and plays. Everything — the BT4 trunk, the graft stem, and the quantized LLM — runs **entirely client-side on WebGPU** via onnxruntime-web. No server inference. Three games self-play simultaneously (batched on the GPU), each streaming the model's `` reasoning and its stated win probability per move. ## How it's served This is a **static** Space. The `custom_headers` block above sets COOP/COEP so the browser grants `SharedArrayBuffer` (required by ORT-web's threaded WASM + WebGPU). The pre-built front-end and the ~1.6 GB of model weights are committed under `dist/` (weights via Git LFS) and served as-is; `app_file` points at `dist/index.html`. ## Requirements (for visitors) A WebGPU browser (Chrome/Edge 113+, Safari 18+) and a ~1.6 GB one-time download (cached after first load). Click **Load model**, then **Self-play**.