Flyingkiwi · Technical

How Flyingkiwi runs a language model in the browser

English defaults to Blazing Kiwi, a 122M-parameter 4-bit model that looks subjects up in an offline Wikipedia library; two Qwen3-0.6B fine-tunes, one per language, ship at 8-bit. A dependency-free C engine compiled to WebAssembly runs them in the tab. The measured results are below, including the weak ones.

Blazing Kiwi 1.1Release v3.1

Every number here was measured. The weak ones are printed too.

What Blazing Kiwi measured

Blazing Kiwi paper →

81 MB

One-time download, English default

A 69.5 MB model and a 10.6 MB library: 7.1 times less than the 0.6B model.

94.1%

Right page among the two notes

Held-out questions about unseen passages; 97.5% for questions that name a title.

25/100

English, frozen blind set

Unchanged Qwen3-0.6B scores 64/100 in the same packets. Weak at arithmetic and reasoning.

98–134

Tokens per second in the browser

Six threads on a laptop processor; the 0.6B model wrote 29–35 in the same test.

Retrieval is measured on the held-out half of two question sets. The frozen set is the same 100 blind cases as release v3.1, graded again together with both 0.6B models. Mean KL of the shipped engine from PyTorch with the exact 4-bit codes, 30 prompts: 0.0008 (relaxed SIMD). Figures are for version 1.1.

What release v3.1 measured

Evaluation detail →

63/100

English, frozen blind set

Unchanged Qwen3-0.6B scores the same, with 6 invented-detail flags each.

37/100

Turkish, frozen blind set

Unchanged Qwen3-0.6B scores 12/100. Still weak in absolute terms.

571 / 567 MB

One-time download, English / Turkish

17 parts each; every part size and SHA-256 hash checked.

8-bit

Shipped weight format

Plain 4-bit, GPTQ and mixed 4/8-bit formats all measured worse.

Scores are correct answers on frozen 100-case blind sets, graded against unchanged Qwen3-0.6B. Mean KL of the released files from their checkpoints at the first reply token of 30 development prompts: 0.0114 English, 0.0513 Turkish.

  1. Request

    Your message stays in the tab. The worker gets the conversation and the language choice, nothing else.

  2. Worker

    A module worker loads the weights (4-bit for Blazing Kiwi, 8-bit for the 0.6B models) from browser cache after checking each file’s size and SHA-256 hash.

  3. Engine

    Integer matrix products and a compact 8-bit KV cache calculate the next token; up to six threads share memory.

  4. Tokens

    The new token is decoded and streamed into the page. Nothing in this path touches the network.

What this shows: the path of one message inside the tab, from the input box to the reply. The download happens once; after that nothing in this path leaves the device.

Reports and model files

Sources and licences

Blazing Kiwi is an Apache-2.0 derivative of SmolLM2-135M-Instruct, distilled with a fine-tuned SmolLM2-1.7B-Instruct; its library is text from English Wikipedia’s vital articles (CC BY-SA 4.0, fetched 30 October 2026) with Wikidata descriptions (CC0). The two 0.6B models are Apache-2.0 derivatives of Qwen/Qwen3-0.6B. Training answers were written by Qwen3.5-35B-A3B (Apache-2.0) for prompts from OpenAssistant OASST2 and CohereLabs Aya (Apache-2.0), GSM8K (MIT), TriviaQA questions and teacher-written prompts. Details are in the report and the model cards.

Device speed figures in the report come from browser emulation, not real phones.