kevala: Laya and Kev in any web page, zero-dependency Rust to WebAssembly with WebGPU
One import, no server. Dependency-free Rust compiled to Wasm with WebGPU kernels; pulls a pinned int8 pack from Hugging Face and keeps it in the browser. Live Tetris included.
kevala</h1> <p align="center"><b>Ask questions about text with Laya, Kev, H2O-Lightning, Clef-flash, SemIf, and Gemma 4 running on the user's own hardware.</b></p> <p align="center"> <a href="https://bvolpato.github.io/kevala/#/tetris"><img src="docs/tetris.gif" alt="Model-guided Tetris running in the browser: game rules shortlist promising landings, a decision model scores them, and the piece follows the chosen path" width="760"></a> </p> <p align="center"> <a href="https://bvolpato.github.io/kevala/">Live site</a> · <a href="https://bvolpato.github.io/kevala/#/playground">Playground</a> · <a href="https://bvolpato.github.io/kevala/#/tetris">Tetris</a> · <a href="https://www.npmjs.com/package/kevala">npm</a> · <a href="examples/">Examples</a> · <a href="docs/architecture.md">How it works</a> </p> kevala runs [Laya](https://huggingface.co/convaiinnovations/laya), [Kev](https://github.com/jaredpalmer/kev) v1.0, [H2O-Lightning-4B](https://huggingface.co/h2oai/h2o-lightning-4b), [Cloudflare Clef-flash](https://huggingface.co/Cloudflare/clef-flash), frozen Qwen3.5 models, and [Gemma 4](docs/gemma4.md) with [SemIf option scoring](docs/models.md#how-semif-scoring-works) inside the browser. You give it text or JSON and typed questions (`noul` for yes/no, `choice`, `score`), and it scores the options without generating an answer token by token. There is no model server, no API key, and no data leaving the tab. Gemma 4 E2B also accepts images when you load its compatible vision companion on WebGPU. The engine is Rust with zero dependencies, compiled to WebAssembly, plus WebGPU kernels written for these models. The browser runtime is a few plain ES modules. Existing Laya, SemIf, and Gemma packs download from [Hugging Face](https://huggingface.co/bvolpato/kevala