Skip to content

Internals

Downloads and caching

Each device downloads only its own layers, from Hugging Face or from another device in the room, and keeps them for next time. How to see and delete what is cached.

Where each device’s weights come from, what the browser keeps, and how to delete it. Each device downloads only the byte ranges of its own layers: a laptop that holds half the MoE fetches about half of its 20.8 GB.

Model Whole weights file
Qwen3 1.7B (Q8) 1.83 GB
Qwen 3.8 27B (Q4) 16.06 GB
Qwen 3.6 35B MoE (Q4) 20.84 GB

Before you press Start, the model picker says what this device will download: “the whole 1.8 GB model” for a laptop alone, less when other devices share the work.

For every piece of its layers, a device tries these in order:

  1. Its own cache. Layers it downloaded before load from disk.
  2. Another device in the room. Before dealing, the host asks every device what it has cached. A device that is missing a range takes it from one that has it, over the room’s direct connection. On the same Wi-Fi this is usually much faster than Hugging Face. The host itself is never a source, because it is busy loading its own layers.
  3. Hugging Face. Range requests straight to the model’s public file.

Weights from another device stream in 64 KB parts, with at most 8 MB in flight, so a phone never holds a whole range in memory. If that device stalls for 15 s or fails, the range comes from Hugging Face instead.

The host first reads the model’s index (the file header, about 11 MB for the 27B and the MoE) to learn where each layer sits in the file.

Cache What it holds Where
Downloaded weights The raw byte ranges of this device’s layers The browser’s Cache API
Converted weights Tensors the loader converts on the CPU before they go to the GPU The browser’s private file storage (OPFS)

Downloaded weights make a rejoin fast: a device that held the same layers before reloads them from disk in seconds. Every entry carries its size, and a short entry (a tab that died mid-write) is thrown away and downloaded again.

Converted weights skip the CPU work on a second load. Some tensors (K-quants, BF16, F16, Q5_0, the embedding) are converted before they reach the GPU, which takes seconds per device; with 48 such tensors (816 MB), a second load took 0.8 s instead of 8.6 s. The Q4_0 and Q8_0 matrices that stream straight to the GPU are not stored. The cache writes only while 1 GB or 15% of the site’s storage quota stays free, and any problem with it falls back to converting.

Conversation checkpoints on disk are separate from the weights: see Device drops and recovery.

Open Room settings and look under Room.

  • Clear cached weights deletes every cached model on this device, downloaded and converted. Press it once to see the size (“Clear 16.1 GB?”), then again within 6 s to delete.
  • Below it, each cached model has its own row with its size and a Delete button. It also asks twice. Use it to free the 27B and keep the MoE.
  • The last line shows how much storage the whole site uses on this device, to check the sizes against.

The next Start downloads whatever was deleted again.

The room says what happened and keeps the layers already cached. Most failures are a blocked or rate-limited connection to Hugging Face: wait a minute and press Start again. Every message is in Troubleshooting.

Option Effect
?wcache=0 Don’t use the converted-weights cache on this device.
?peerweights=0 On the model host’s page: don’t ask the devices what they have cached, so every device downloads from Hugging Face.

More in URL options.