Privacy and safety
What stays on your device
Everything you type, what it says back and what it remembers. The model runs in your browser, on your own graphics card. I checked the network traffic: while you play, the page sends nothing at all.
What leaves it
Only the download, once. The code comes from jsDelivr, the model from Hugging Face and its graphics code from GitHub. They see your IP address and which brain you picked, not what you type. Gemini Nano is downloaded and kept by Chrome itself. The site counts page visits with Umami; nothing from this game goes there.
What it keeps
One short note about you, in your browser’s storage, and only words you typed yourself. “Forget” wipes it. Unplugging frees the memory. The download stays in your browser until you remove it under Setup, or clear the site’s data.
What the model can do
Pick one move from a fixed list and say a few words. It can’t open links, run code or fetch anything, and what it says is shown as plain text. Ask it to misbehave and the worst you get is a strange line.
Not watertight yet
The code and the model files come from those other servers without an integrity check. If one of them were hacked, it could change what runs on this page. Next on my list: serving that code myself and pinning the files.
The measurements
The gauge shows numbers only. “Copy as JSON” puts them on your clipboard, with your graphics card and browser, never what you typed. Nothing is sent anywhere unless you paste it yourself.
Measurements
Last replies
Nothing measured yet. Plug it in and give it something to react to.
| Input | Action | Time | Tok/s | FPS |
|---|
A small creature with a language model for a brain, on your own graphics card. It picks how to react. The code checks that choice and plays it. Pull its plug to switch it off.
This site keeps in your browser.
It remembers:
How it’s built
A small language model runs on your own graphics card, in a Web Worker, through WebLLM and WebGPU. The page tells it what just happened, the code checks its answer and plays it with springs on one SVG.
- A grammar on the answer. For every moment a GBNF grammar allows only compact JSON with the moves that are possible right now. WebLLM’s own JSON mode let one model wander off into endless whitespace.
- Code decides, the model reacts. When it does something by itself, which words are commands and the fallback lines are plain code. The model picks a move and says a few words, nothing more.
- Springs instead of keyframes. Every pose is a target for a damped spring; hops and the flip are kicks to those springs (
creature.js). - Pull the plug. Pointer Events with growing resistance (
Math.tanh), a buzz per notch through the Vibration API, and Chrome’s own Gemini Nano through the Prompt API where it exists.