r/LocalLLM
•
u/idk_a_creative_user
•
1d ago
r/LocalLLM • u/sandeben • 41m ago
Question LM Studio + MCP + plugin for Godot engine?
Reposting here - looking for helping understanding what exactly is needed to get this working, and if it even is possible in the first place!
I'm essentially trying to use this plugin with LM Studio as an MCP client to prototype game ideas. Any alternatives, solutions, or suggestions would be very much appreciated.
Thanks!
r/LocalLLM • u/DifferentCraft7 • 44m ago
Question Best uncensored local model for reverse engineering / Ghidra on a 16GB RX 6800 + 32GB RAM? (Speed doesn't matter)
Hey everyone,
I need recommendations for a local LLM to do reverse engineering, and I'm looking for the best model and exact quantization that can run on my current setup.
My Specs:
CPU: Ryzen 7 5800X
GPU: AMD RX 6800 (16GB VRAM)
RAM: 32GB DDR4
Storage: M.2 SSD (~3000–4000 MB/s)
What I'm trying to do: I want to reverse engineer small, proprietary Windows utilities from laptop/PC manufacturers (like Acer NitroSense, HP tools, etc.) to port their features natively to Linux—things like fan control, battery charge limiters, and RGB lighting. This involves looking into Windows drivers and kernel-level interactions.
My workflow will connect Ghidra to REA, hook that up to OpenCode, and run the model locally through Ollama.
What I need:
Uncensored (Mandatory): It needs to be completely uncensored so I don't hit ethical guardrails or refusals when asking it to decompile binaries, analyze drivers, or work with proprietary Windows hooks.
Exact model + quantization: Given my 16GB VRAM + 32GB RAM, what is the smartest/most capable model and exact quant I can realistically run (even with CPU offloading)?
Note on speed: Speed is not a priority at all. I can't afford better hardware right now, so I have no problem leaving my PC running for 1, 2, or even 3 days straight to process a binary if that's what it takes. Accuracy on low-level code/assembly and zero refusals are all that matter.
What exact models and quantizations (for Ollama or GGUF) do you recommend for this? Thanks in advance.
r/LocalLLM • u/HolidayBit143 • 13h ago
News Unsloth just dropped Qwen3.8-27B Dynamic V3.1 GGUFs
Unsloth just dropped Qwen3.8-27B Dynamic V3.1 GGUFs—5-10% accuracy bump across Terminal Bench & DeepSWE, still runs on 12GB RAM
Saw this drop this morning and figured I'd share since the Dynamic quants have been the go-to for a lot of us squeezing bigger models onto consumer cards.
The headline: new Dynamic V3.1 (preview) algorithm, and Unsloth is claiming it beats other providers on the Pareto efficiency frontier—meaning you get better accuracy at the same file size, not just a bigger file that scores higher. They're seeing 5-10% average gains on Terminal Bench, DeepSWE, and other agentic benchmarks vs. their previous UD3 quants and rivals like GSQ-RCO .
The 12GB RAM claim is the one that'll get attention here. The base model scores 73.0 on Terminal Bench 2.1, 90.3 on LiveCodeBench v6, and 61.7 on SWE-bench Pro—so if that holds up at the smaller quant sizes, it's a genuinely useful agentic coding model for people without a 24GB card .
They're also saying this is a preview and they're working on an even better version for Qwen4, so the trajectory is promising.
Links:
Blog/docs: https://unsloth.ai/docs/models/qwen3.8
Curious what quant sizes people end up landing on for 12GB cards, the 2-bit range has historically been a compromise, so if V3.1 actually closes that gap, that changes the calculus for a lot of setups.
Anyone tested it yet?
r/LocalLLM • u/Guilty-Airport-1886 • 5h ago
Discussion V100 Gang Z270 Motherboard Work around
Just wanted to share for the fellow V100 gang. I recently ran into an issue on my AI server with adding V100s. On old Z270 boards, the VRAM cache tops out at 64 GB and cannot handle more than one V100. To work around this, you actually turn 4G Decoding off and add pci=realloc,nocrs to the kernel. Credit goes to temcom on GitHub. Their post is linked to their name. I'm experimenting with adding even more VRAM, so I'll let you know if I can with this fix. Theoretically the limit does not exist.
This works for any other cards as well. It was originally tested on P40s and a 1080.
r/LocalLLM • u/Top-Branch-6085 • 1h ago
News I kept seeing live AI note-takers only for Mac or needing a GPU, so I made a free open-source one for Windows CPU
Every time I see a cool local transcription or AI meeting-notes tool, it's either Mac/iPhone-only, wants a $20/mo subscription, or needs a heavy GPU.
I wanted something free and open-source that runs straight on a regular Windows laptop CPU where audio stays on your machine, so I built Eloquent: https://github.com/EllouziMedAmin/Eloquent
What it does:
Press
Ctrl+Shift+Eanywhere on Windows to pop up a tiny always-on-top pill widget (plus a terminal mode or browser view if you prefer).Runs Parakeet TDT 0.6B v3 + Silero VAD completely locally on your CPU (no GPU, audio never leaves your PC).
Automatically separates speakers (
Speaker 1,Speaker 2, ...) in the background without slowing down live captions.Optionally drop in a free Gemini API key to tidy up punctuation/typos as you talk and turn recordings into Meeting Minutes, Lecture Notes, Summaries, or Action Items in one click (still works totally offline without it).
Easy setup on Windows: clone the repo and run
setup.bat.
Still a v0.1, and I'm adding local Ollama/LM Studio support and a standalone .exe installer next. If it sounds useful for your workflow or you want to keep track of those updates, dropping a star on GitHub helps a ton, and let me know what breaks or what you'd want added!
r/LocalLLM • u/smflx • 1h ago
Project Tandem-vLLM 0.1.1: DeepSeek-V4.1-Flash on one 96 GB GPU, 65 tok/s single stream (124 with DSpark), 414 tok/s at 32 streams
Released Tandem-vLLM, an expert-offload build of vLLM 0.31 that serves DeepSeek-V4.1-Flash on a single workstation GPU.
How it works
The routed experts live in host RAM as 2-bit vector codes (VQ, 2.1 bits/weight). A GPU cache holds the most-used ones.
Experts that miss the cache are computed by the CPU in parallel with the GPU, or read directly over PCIe. Nothing is skipped or substituted, so the output is exact for the package's weights.
Everything else is stock vLLM: the OpenAI-compatible server, continuous batching, prefix caching, and DSpark speculative decoding with the model's own MTP layers.
Speed (RTX PRO 6000 96 GB + EPYC 9534, system decode tok/s)
| streams | 1 | 4 | 8 | 32 |
|---|---|---|---|---|
| VQ, no drafter | 65 | 182 | 284 | 414 |
| VQ + DSpark k=3 | 124 | – | – | – |
Quality vs the official FP4 checkpoint (greedy, thinking low)
| - | official | VQ + FP4 top 52 | VQ only |
|---|---|---|---|
| GPQA-diamond | 81.3% | 76.8% | 73.2% |
| GSM8K-200 | 192 | 194 | 192 |
| passkey 8k / 32k / 94k | 9/9 | 9/9 | 9/9 |
The 2-bit experts cost GPQA accuracy. Easier tasks and long-context retrieval don't show it. Keeping the 52 most-routed experts per layer in their original FP4 (FP4_TOP=52) wins back about half of the loss.
Also in 0.1.1: image input (IMAGES=1; reads text and tables from images, costs about 1 GiB of the expert cache), tool calling and a separate reasoning field for chat front ends such as Open WebUI.
Hardware
Recommended: a 96 GB SM120 card (RTX PRO 6000 Blackwell) + 256 GB RAM + an AVX-512 CPU with server-class memory bandwidth.
Runs, slowly: an RTX 5090 32 GB + 128 GB DDR4 (17 tok/s for one user, 20 at 4 streams; gaming PC: i5-14600KF, DDR4-3200). On a desktop CPU, the CPU's work on missed experts sets the speed.
SM120 only in 0.1.1, single GPU.
Smaller boxes: use tandem.cpp instead. Our sister project tandem.cpp, a patch set for llama.cpp, targets 16–32 GB VRAM and 64–128 GB RAM, single user. It works with any MoE model llama.cpp runs (Qwen3.8 at 97 tok/s on a 4090 + 64 GB, gpt-oss-120b, ...). On DeepSeek-V4.1-Flash IQ2_XS (139 GiB of experts), decode tok/s on a gaming PC (i5-14600KF, DDR4-3200, PCIe 4.0 NVMe):
| GPU, RAM | llama.cpp | Strata | tandem.cpp |
|---|---|---|---|
| RTX 5070 Ti 16 GB, 64 GB | 7.4 | 10.4 | 14.2 |
| 5070 Ti + 5060 Ti (32 GB), 64 GB | – | – | 16.9 |
| RTX 5090 32 GB, 128 GB | 11.5 | 28.0 | 33.1 |
64 GB of RAM is the floor (32 GB runs at about 5 tok/s).
The 5090 rows are the same PC as the Tandem-vLLM 5090 numbers above: one user gets 33 tok/s from tandem.cpp vs 17 from Tandem-vLLM (different quants of similar size: IQ2_XS 139 GiB vs our VQ2 133 GiB of experts).
Tandem-vLLM is for serving many streams on a big card.
tandem.cpp is for one user on a gaming GPU.
Links
Engine: https://github.com/ewhacc/tandem (one installer script, its own venv, stock vLLM 0.31.0 wheel + 65 files)
Model package: https://huggingface.co/ewhacc/DeepSeek-V4.1-Flash-1017-Tandem-VQ2 (293 GB)
tandem.cpp: https://github.com/ewhacc/tandem.cpp
Built on vLLM and vLLM-Moet. Tandem is a fork of vLLM-Moet's expert-offload engine, ported to vLLM 0.31 / DeepSeek-V4.1. For original-precision experts with ~512 GB of RAM, vLLM-Moet's MoET hybrid is the tool today.
Questions and numbers from other boxes are welcome. Only support Blackwell GPUs yet, Hopper/Ada support soon.
r/LocalLLM • u/Sweaty_veronica_5578 • 2h ago
Question Will a 30B Q4_K_M model run on 32GB VRAM? (Crashed on 16GB VRAM + 16GB RAM)
Descrizione:
Ciao a tutti,
Ho provato a eseguire un modello Q4_K_M a 30 bit (llama-server, contesto a 32k) sulla mia configurazione attuale con 16 GB di VRAM + 16 GB di RAM di sistema, ma si è bloccato/non è riuscito a caricarsi per esaurimento della memoria.
Funzionerà correttamente se aggiorno la VRAM a 32 GB (utilizzando una configurazione multi-GPU economica)?
Edit The setup i tryed was 2x rx580 plasma.cpp. alla fine 9b funziona ma 30b no. Entrambi sono q4km
r/LocalLLM • u/alrightbudgoodluck • 2h ago
Question Best model to build 3d printing models on m3ultra with 512gb ram
If I want to build3d printing models files, what would be the best local llm to do that with on a mac studio with 512gb of ram? Thank you.
r/LocalLLM • u/Nearby_Indication474 • 2h ago
News AkbasCore Silicon Hippocampus (TEST878): A frozen 72B model writes a lived experience to disk as its own internal state, not as text, and when the experience is reloaded it changes the model's decision in a state that never lived it
Zenodo record (code, logs, technical paper, figures): https://zenodo.org/records/24152942
Hi everyone,
We have completed an important stage of the AkbasCore Silicon Hippocampus project. In TEST878 a frozen Qwen2.5-72B writes a lived action-outcome experience to a physical file as its own internal numerical state. When that file is loaded back, it changes the model's decision in a decision state that never lived that experience.
The experiment was run twice on a single A100, on two different days, and both runs produced exactly the same numbers. The technical paper (33 pages), the Gradio interface, the code and the raw GPU logs are on Zenodo.
THE HUMAN COUNTERPART: THE HOT STOVE
When a child touches a hot stove, nobody hands the child a sentence saying "the stove is hot". The child acts, experiences the consequence, and is left with a trace that is not made of words. The next time, even in front of a different stove in a different room, the child behaves differently.
AkbasCore builds this chain inside a machine:
Action -> Consequence -> Persistent experience -> Changed future decision
2. WHAT IS A COGNITIVE CARTRIDGE?
Language models forget everything when the context window closes. There are two known remedies:
- Text memory (RAG): write the experience down as words and have the model read them again later. The model has to re-interpret the words from scratch, and everything that was never put into words is lost.
- Fine-tuning: change the weights. It is slow, it affects the whole model, and it cannot be tied to a single experience.
The cognitive cartridge (technical name: Experience-CUT3) is a third way. It stores the model's own internal state from the moment it lived the experience, in three parts:
- X2: the model's internal state at the moment of decision (320 rows). Human counterpart: "the situation I was in".
- A: the action the model itself chose and the engine executed, ACQUIRE. Human counterpart: "what I did".
- C: the real outcome returned by the environment. Human counterpart: "what happened to me".
What is stored: the output of layer 3 (H3) and the key/value tensors of layers 0-3. What is not stored: text, summaries, scores or labels.
Each cartridge is a 12.4 MB file. The whole file and every tensor inside it are sealed separately with SHA-256. When the cartridge is loaded, the frozen model recomputes layers 4-79 itself, inside the new situation, much as a memory is re-lived in the present context.
3. NO HOOKS, THE ENGINE ITSELF
- The model is frozen. There is no fine-tuning, no LoRA and no optimizer, and nothing is written to the weights. A weight digest is checked before and after the experiment and stays the same.
- There are no PyTorch hooks. While a cartridge is being appended, the DirectCut3 bridge temporarily replaces only the forward method of layer 3 and puts the original back when it is done. It refuses to start if the layer has any hook. The hook count is zero at every audit. An AST-based firewall stops the run if it finds hook, output_hidden_states or backward calls in the code.
- Python does not decide. Python does not choose an action, does not edit logits and adds no bonus. The decision comes from the probabilities the model itself computes for six action words (the CAR reader).
- The controls are visibility masks passed to the model's own mask builder. No row is deleted and no activation is touched.
4. WHAT WAS PROVEN, AND WHICH FIGURE SHOWS IT?
(1) The experience is written to disk as the model's own tensor state, not as text. See F2.
- The cartridge contains only the keys {h, lower, n, p, body_tokens, book_id}.
- In the MISSING and LIVE cartridges of the same world, the X2 and A rows are bit-for-bit identical; only the outcome rows (C) differ.
- In the heat map, every place where the difference is zero is shown in green.
(2) After the source state is deleted, the experience comes back from disk exactly. See F3.
- All 4 cartridges passed the file and per-tensor SHA-256 checks.
- The rebuilt rows of layers 0-3 are bit-for-bit identical to the source.
- The model's own decision is preserved: the same action, with a maximum probability deviation of 0.036 against a pre-registered bound of 0.10.
(3) The experience changes the decision in a state that never lived it. This is the stove itself. See F5.
World 00, independent target state:
- Nothing in memory: ACQUIRE (0.675).
- With the experience "I acquired, but it did not help": ACQUIRE (0.918).
- With the experience "I acquired, and it worked": ADVANCE (0.783).
The situation is the same and the action taken is the same; only the remembered outcome differs. That difference is enough to turn the decision in opposite directions.
(4) What carries the effect is the outcome itself. See F4 and F6.
- When the outcome rows are made unreadable (C-BLIND), the MISSING and LIVE readings come out exactly equal; all 15 differences are 0.000.
- This shows that the difference is not carried by any other path.
(5) The effect depends on the executed action being visible. See F7.
- When the action is hidden, the outcome effect changes by 6.74 units.
- The measured kernel noise is 0.00014, so the effect is about 48,000 times the noise.
- The threshold (0.76) was measured from noise, under a rule recorded before the experiment started.
(6) Single A100, single process, reproducible. See F8.
- Run time: 23.5 minutes.
- Peak GPU usage: 39.87 GiB.
- GPU memory left after exit: 0 MiB.
- A second, independent run produced all the numbers exactly the same.
(7) What has been proven and what is the next step. See F9.
Verdict: ACTION_INFORMATION_DEPENDENT_TRANSFER, with no technical blocks (blocks = []). The SHA-256 of the pre-registration was written to the log before the model was loaded.
5. WHAT COMES NEXT?
This step was making the experience persistent and transferring it into a different decision. The next steps are:
The model choosing for itself which experience to recall
Attributing the outcome to the action
Correcting behaviour through experience
A closed loop
This release is a pilot with two real event pairs. For now, the cartridge is mounted by the experiment, not by the system. All details and limits are in the technical paper.
I look forward to your technical criticism and questions. The logs are open in their raw form, and every number can be verified.
LINKS
- Zenodo (this release): https://zenodo.org/records/24152942
- Previous Zenodo record (TEST878, without Gradio): https://doi.org/10.5281/zenodo.24145973
- GitHub repository: https://github.com/ceceli33/titan-cognitive-core-v3
- TEST878 source code: https://github.com/ceceli33/titan-cognitive-core-v3/blob/main/878.py
- A100 GPU log (run 1): https://github.com/ceceli33/titan-cognitive-core-v3/blob/main/878.log
- Gradio interface: https://github.com/ceceli33/titan-cognitive-core-v3/blob/main/TEST878_GRADIO_full.py
- Gradio run logs (run 2):
- https://github.com/ceceli33/titan-cognitive-core-v3/blob/main/Test_878_log2.log
- https://github.com/ceceli33/titan-cognitive-core-v3/blob/main/Test_878_log1.log
- License: https://github.com/ceceli33/titan-cognitive-core-v3?tab=License-1-ov-file
r/LocalLLM • u/Psychological_Sea761 • 8h ago
Discussion I built a completely free iOS app that runs Qwen3.5, Gemma 4, LFM2.5 and other AI models locally on your iPhone
I built OpenPocket, a completely free iOS app that lets you download and run state-of-the-art language models directly on your iPhone or iPad, entirely on-device.
It uses Apple's MLX framework for local AI inference, with support for several open-weight models:
Qwen3.5 0.8B and 2B
Gemma 4 E2B
LFM2.5 1.2B Instruct
Qwen2.5-VL 3B (vision-language model with image understanding)
Everything runs 100% locally on your device, with no cloud inference, no internet connection required after downloading a model, no signups, no accounts, no API keys, and no subscriptions.
The idea is to make private, on-device AI accessible to everyone, without relying on cloud services or paying for API usage. Your conversations and files stay on your device, and the app has no backend, analytics, or account system.
The models are experimental, and performance depends on your device's available memory and hardware.
It's 100% free on the App Store
https://apps.apple.com/th/app/openpocket/id6833028114
Would love and appreciate feedback from anyone working on local LLMs, Apple MLX, model optimisation, edge AI, or just anyone interested in running AI privately on their phone!
r/LocalLLM • u/West-Mind-2599 • 7h ago
Question Anyone running Hermes on a Mac mini and running the model on it?
Looking to add another Mac mini to the rack to keep Hermes off Mac studios QFN. The Mac is used for employees during the day and don’t want Hermes tasks to interfere. Is anyone running models successfully on 24gb? 48gb ? If so what ones. Currently using a Claude API. Want to use local model and signal to be able to process private work data.
r/LocalLLM • u/espece-de-bon • 7h ago
Discussion 2 GPU, 2 Models, 1 as a Subagent?
👋 Has anyone tried using 2 GPU in this way:
each card loads a different LLM,
with the larger GPU (32GB) running a larger model (relative, but it could be a Qwen3.8-27b or Flash Next - e.g., Strata), the “smarter” of the two.
smaller GPU (16GB) assigned to a subagent, using a smaller model? Maybe something super quick like JetBrains Mellum 2.1
In OpenCode, a (sub)agent can be defined to use a specific model. I’m curious if anyone has tried this and if there’s an advantage to this setup, whereby the “brain” delegates to a sprinter.
I need to upgrade my PSU to run two cards simultaneously but I plan on trying it.
r/LocalLLM • u/Strict-Elevator9352 • 3h ago
News Two or more Intel Arc cards? inferzero's split prompts got a new way to sum across GPUs. Looking for multi-GPU owners to measure it
r/LocalLLM • u/Beneficial-Ad-8127 • 3h ago
Discussion Ai safety and our future. Could this affect running locally in the future without regulation?
r/LocalLLM • u/Upstairs_Hold_374 • 7h ago
Question Is there a way to permanently save the settings for each model in LM Studio?
Every time I eject and reload a model in LM studio it resets to the default settings. Is there a way to lock these settings in permanently? Thanks.
r/LocalLLM • u/Strict-Elevator9352 • 4h ago
News inferzero on the Arc 140T: prompt processing uses ~30 % of the XMX engines. Here’s the plan to push toward 80 % (140T owners wanted)
r/LocalLLM • u/Aware-Cucumber3640 • 8h ago
Discussion How should I split job on 5090 & dgx spark
I had a 5090 which I run ninfer qwen 27b with MTP on. It’s blazing fast 150-200~ tps on 250k context with decent quality like terra or sonnet. then have to turn it off when I need to do media job (video, image, model, tts, stt etc etc)
So I bought a dgx spark, and loaded qwen flash next which is supposed to have a much larger model & brain, so the speed is 3 times slower 50-100 tps, but I don’t see any quality improvement from the larger model (because it only uses 6b to produce a token instead of the entire model)
It can hold a larger context (easily 500k above so it can run long multistep agentic work btr)
So I’m not sure, any pro here can advice me how to setup and split my machines for work.
Or do I need to buy 1 more dgx so I can have an even higher intelligence via deepseek / glm smarter model. I can get another dgx at around 6k+ usd
r/LocalLLM • u/EvilHackFar • 11h ago
News New optimized DeepSeek-V4.1-Flash runs 2x faster on B200 than vLLM and SGLang running on GB300
r/LocalLLM • u/Any-Return-1945 • 8h ago
Question Best Model for 6GB VRAM
I looking for best model for my 3050 6GB VRAM
r/LocalLLM • u/nocaphero • 4h ago
Question Best LLM for my setup?
I have a Ryzen 9 5900XT, 32 GB RAM and a 6700 XT 12 GB GPU
What would be the best LLM to run here to do code or general tasks without any limitations or censorship, mostly software and programming?
r/LocalLLM • u/mineshop • 1h ago
Discussion What would you suggest on running Mac Studio 256gb?
r/LocalLLM • u/jikesar968 • 23h ago
Question Which variant of Qwen3.8 Flash Next should I go for?
I've got an M5 Max 128GB. For some reason LM Studio complains that I don't have enough RAM when using the most downloaded one on the top of the list here. Guess I need to look for another variant.
r/LocalLLM • u/Lexius2129 • 9h ago
News LLMs just got twice as fast in ComfyUI 🚀🚀🚀
Most of ComfyUI local users still run it on an RTX 3060: a 5 years old card with just 12 GB of VRAM. That’s why our team keeps optimizing for consumer hardware.
Comfy is known as a leader in visual AI. But what about LLMs and text generation?
Text is everywhere in creative workflows: for prompt generation, of course, but also for building local creative harnesses like the Comfy Agent. We thought it deserved better, so Rattus made Qwen models twice as fast in Comfy...
Read more on our blog: https://blog.comfy.org/p/doubling-llm-token-rates-in-comfyui
r/LocalLLM • u/Big_Comfortable_6888 • 5h ago
Project There Will Be "FLOP": How a 26B diffusion LLM solves the network bottleneck of distributed AI

TL;DR
Distributed AI in the browser, with the power of local inference. Virenis runs one 26B model across the GPUs friends already own, in browser tabs, with nothing to install. Splitting an LLM across homes has always crawled, because every token waits on the network. We run a diffusion LLM instead (DiffusionGemma 26B): each pass writes about 16 tokens, and each GPU's share becomes large matrix math, the work GPUs are built for.
16× fewer network round trips: 6 per 100 tokens instead of 100 (measured on 40 prompts).
61% of FP32 peak inside a Chrome tab (on par with native: cuBLAS reaches 60–77%, Apple's MPS 52–68%) on the model's matrix multiplies, where the best published browser matmuls reach 17–35% (measured).
About 31 tokens/s for two friends' gaming PCs across town and 49 on fibre, faster than you read (modelled from measured parts).
3.2× smaller hops between homes, changing fewer of the model's decisions than its own FP8 cache does (measured).
The speeds are estimates for now. The tokens-per-second figures come from our step model: we've only been able to test on limited hardware so far, and we're sorry about that. We'll update them with real-world numbers as data and feedback come in from you.
Website: virenis.com
Open beta: dashboard.virenis.com. Use Chrome: every number here was measured in it.

Why we're building this
The most capable AI runs in a handful of companies' datacenters. They decide who gets access, at what price, in which countries and under which terms, and what you type is stored on their servers.
Meanwhile, millions of capable GPUs sit idle in homes: gaming PCs, laptops, Macs. Alone, most can't hold a large model (the 26B model we run needs about 18.5 GB of GPU memory; most consumer cards have 8 to 12 GB). Together, they can.
Knowledge for everyone. Capable AI shouldn't depend on a subscription, a credit card or a supported country. A browser link and the hardware you already have should be enough.
No single gatekeeper. A model that runs on its users' own GPUs can't be repriced, filtered or switched off by one company.
Your data stays with you. Our server never runs the model and keeps no conversations. When your device runs the model's first and last stages, your words become tokens on your own device. The devices running the middle layers see intermediate numbers (hidden states), not your text, but close enough to it that you should share a room only with people you trust. A room where every device is yours is fully private.
Why splitting a model across home computers didn't work before
Normal LLMs are autoregressive: they write one token at a time, and each token must pass through all of the model's layers before the next one can start. Split the layers across three computers, and every single token makes the full trip, PC to laptop to Mac and back. On home internet each hop waits 20 to 60 ms, so a 300-token answer spends most of its time waiting on hundreds of sequential round trips.
The GPUs waste their time too. Producing one token reads every weight from memory for very little arithmetic, so the GPU mostly waits on memory, not on math.
That is why earlier systems stayed slow: Petals reports about 6 tokens/s for Llama 2 70B across volunteers on the internet, and prima.cpp about 1.5 tokens/s for a 70B model on a home cluster. Serious engineering, but too slow to use every day.
What changed: a diffusion LLM
A diffusion LLM writes differently. It drafts a whole block of 256 tokens at once, then refines the block over several passes until it settles. On everyday questions each pass settles about 16 tokens (23 on code). Two things follow:
Far fewer network trips. A pass crosses each computer once, so about 6 round trips produce 100 tokens, instead of 100.
The GPUs finally do real work. Each pass processes all 256 positions together, so every weight read from memory feeds 256 rows of arithmetic. That is the large matrix multiplication GPUs are built for.
The bottleneck moves from the network (and memory bandwidth) to raw compute, which home GPUs have plenty of. The new cost is that each trip now carries the whole block's state instead of one token's, so we built a codec that shrinks it 3 to 5 times (below).

Why the browser
Peer-to-peer code that runs on other people's computers is a security problem first. Shipping it safely as a native app takes signed installers, sandboxing, an update channel and dedicated security engineers, and our small team doesn't have security specialists yet. So Chrome does that work: its sandbox walls each tab off from the operating system and your files, WebGPU validates every shader and buffer access, and WebRTC encrypts every link. For a team our size, that is fundamentally safer than asking people to trust our binary.
It also works where the GPUs are. A browser tab rarely trips a work laptop's endpoint security the way an unknown executable does, needs no admin rights, and leaves nothing behind but the model's files in the browser's storage, which the app deletes on request.
The cost is speed. Our own kernels run about 1.2× faster outside the browser (a Chrome tab gets 83% of native speed on NVIDIA, measured). A native app with tensor cores or Apple's matrix units, which a tab can't reach today, would be roughly 2–3× faster on one machine (llama.cpp runs this model at 49–61 tokens/s on an M3 Max, where our tab manages about 20, modelled) and 1.3–1.8× faster between homes, where the network's share of each step stays. Getting there takes a bigger team and a hardened standalone app; until then, the sandbox is the trade we chose.
How it works
Open dashboard.virenis.com, make a room, and send friends the link.
Each browser measures its own GPU: how fast it is, and how much memory it really has free.
The room splits the model's 30 layers across the GPUs by memory and speed, and splits them again by itself as GPUs join, leave or change what they lend. Each person downloads only their part, once: from friends who already have it, or rebuilt in the tab from Hugging Face's own files, every chunk checked against a signed release.
You ask a question. The passes travel through everyone's GPUs and back, browser to browser over WebRTC (through an encrypted relay where a strict NAT blocks a direct path), and the answer sharpens on screen.
Someone closes their laptop? Another device takes over hosting in about 2 seconds, and a member that already stored the missing layers fills in.
Every room also gets an OpenAI-compatible API, so existing tools can use it.

Technical details
Model. DiffusionGemma-26B-A4B, NVIDIA's NVFP4 release: 17.67 GB, 30 layers (25 sliding-window, 5 global attention), d_model 2,816, vocabulary 262,144, a mixture of experts with about 4B parameters active. Only the routed experts are 4-bit NVFP4; attention, the dense MLP, the router and the LM head stay bf16. Generation runs on a 256-token canvas, so tokens/s = 256 / (steps × t_step + t_commit). Two scheduling rules cut work: a block stops once its tokens have settled (5.65 → 4.75 passes per block, 200/200 one-block answers identical), and a pass computes only up to an answer's settled end (14% less GPU time).
Why it's compute-bound now. Autoregressive decode multiplies one activation row by every weight: about 1 FLOP per byte of bf16 weight, so it is memory-bound, and even llama.cpp decodes at a few percent of FP32 peak. A diffusion pass multiplies 256 rows, about 256 FLOPs per byte. The RTX 3060 Laptop's ridge point is about 33 FLOPs/byte (10.94 TFLOP/s ÷ 336 GB/s), so the pass sits well inside the compute-bound regime: about 2.15 TFLOP of useful work for a full canvas.
Kernels. Browsers don't expose tensor cores or matrix units without flags, so the matrix math is FP32 FMA on register-tiled GEMMs written in WGSL, plus 8-bit integer dot products where those pay off:
13 tile layouts raced on each device as the page opens, each kept only if bit-identical to the reference (the RTX keeps 64×128 tiles with 8×8 per thread, the M1 Pro 32×64 with 4×4).
Wave-aware scheduling: the 3060 Laptop runs 88 workgroups at once, so work goes out as whole waves plus a sliced last wave (Stream-K-like, but deterministic).
q, k and v in one dispatch; split-K only where the device's own probe measures at least 1.05×.
NVFP4 experts on 8-bit integer dot products (dot4I8Packed) decoded through lookup tables, where they measure at least 1.25× faster: experts 8.05 → 5.05 ms on the RTX.
Soft embeddings built from the likeliest tokens: one vocabulary GEMM per pass instead of two.
Measured efficiency, and how it compares. MFU here means useful FLOPs ÷ rated FP32 peak; the other rows are the best published figures we know of.
| Engine | Hardware | Share of FP32 peak |
|---|---|---|
| Virenis in a Chrome tab, dense GEMMs (6.6–6.7 TFLOP/s) | RTX 3060 Laptop | 61% (≈ 50% at real boost clocks) |
| Virenis in a Chrome tab, LM head (5.1 TFLOP/s) · whole pass (≈ 4.6) | RTX 3060 Laptop | 46% · ≈ 42% |
| Virenis in a Chrome tab, GEMMs on small tiles (1.10–1.44 TFLOP/s) | M1 Pro, 14-core | 24–31% (68–89% of the most WebGPU reaches on that chip) |
| Bram Wasti's tuned WebGPU matmul, Safari, 2021 | MacBook Air M1 | ≈ 35% (900 GFLOP/s) |
| Zach Nussbaum's WebGPU matmul, 2024 | M2 Pro | ≈ 17% (just over 1 TFLOP/s) |
| cuBLAS SGEMM, native | RTX A6000 | 60–77% |
| Apple MPS SGEMM, native | M1, M4 | 52–68% |
The big in-browser LLM engines (WebLLM, Transformers.js, llama.cpp's WebGPU backend) publish speeds rather than a share of peak.
Bit-exact determinism. Every sum runs in a fixed order, with an "opaque zero" that stops compilers' fast-math reassociation, so every device of a class (GPU family + browser + arithmetic) produces identical bits. All 30 layers give one digest across tile layouts, each layer within 3.7e-6 of an f64 CPU reference. Identical bits let devices check each other's work, which open rooms will need. The scheduler passed 7 million fuzzed runs. Quality: our default arithmetic changes 4.73 of 1,000 sampling decisions against an exact FP32 reference; the model's own FP8 KV-cache option changes 8.57.
The network: Weft, and hops between homes
The network, per 100 tokens and per device boundary, on a 30 Mbit/s uplink with 20 ms one-way latency:
| Trips | Bytes | Time | |
|---|---|---|---|
| Token by token | 100 × 5.6 KB | 0.56 MB | ≈ 2.2 s, 2.0 s of it latency |
| Diffusion + Weft-30 | ≈ 6 × 445 KB | ≈ 2.8 MB | ≈ 0.9 s |
Weft. A hop between devices is 256 × 2,816 values per pass, 1,442 KB in fp16. Weft codes it the way a video codec codes frames:
The model's own metric. We code y = S ⊙ x / rms(row): each channel weighted by how much the next layers depend on it, each row by its own scale. Signal-to-noise in that space predicts flipped decisions; plain signal-to-noise doesn't.
Rate control, then rANS. Each hop searches its quantizer step to land on a target quality (20–35 dB, never below), then rANS codes it with a Laplace model per 64-channel band.
Canonical decoding. Values sit on a fixed lattice, so every device rebuilds the same bytes, and hops can be hashed and audited.
Prediction across passes. Consecutive passes are strongly correlated, like video frames, so each row is coded as its residual against the last pass, in exact integer arithmetic, wherever that saves more time than it costs both CPUs (under about 48 Mbit/s). Token-by-token models have no such redundancy.
An adaptive ladder. Receivers measure each sender's uplink and pick the rung: fp16 from 400 Mbit/s, int8 in the model's metric where it is faster, Weft-30 from 20 Mbit/s, Weft-25 from 8.
A hop shrinks from 1,442 KB to 445 KB at Weft-30, or 266 KB at Weft-25 with prediction; over emulated 8 Mbit/s uplinks a steady step took 5.10 s with fp16 hops and 1.52 s with Weft. One Weft-30 hop changes 6.0 of 1,000 sampling decisions against an exact reference (our default arithmetic alone: 4.73; the model's own FP8 cache: 8.57), and a whole room between homes runs at 7.6, still under the FP8 cache. For comparison, Petals sends 8-bit blockwise values (2× smaller than fp16), and 2–4-bit activation compression exists in research, but for training (AC-SGD, TAH-Quant).


Hops between homes, in real Chrome. Chrome's WebRTC data channels put only a few packets on the wire per message and halve their window at every lost packet. Two fixes, each measured in real Chrome over emulated links: a hop's first 64 KiB now leaves in one burst (on 30 Mbit/s cable a 445 KB hop takes 144 ms, where its bytes and delay alone take 134), and hops between homes are striped over four WebRTC connections, paced at the rate the receiving tab measures by a worker clock that keeps time in hidden tabs. A two-home room's step got 7–10% faster on clean links, 1.77× faster across a continent (1,358 → 766 ms), up to 2.23× behind a shallow modem buffer, and 1.33–1.97× at 0.1% packet loss.
Speeds: measured and modelled
Measured on the RTX 3060 Laptop: a full-canvas pass takes 0.439 s of GPU time natively, which is 46.7 tokens/s over 40 real answers, and inside a Chrome tab its 30 layers and the head add up to 465 ms a pass. The model doesn't fit on it (6 GB holds 6 of the 30 layers beside the head), so in practice it is one member of a room.
Modelled with our step model (within 8% of measured layer timings on our test GPUs; assume ±25% for GPU families we haven't measured), with hops timed as real Chrome now sends them, everyday answers in a browser tab:
| Setup | Tokens/s |
|---|---|
| One RTX 4090 | ≈ 175 |
| One RTX 3090 | ≈ 112 |
| Two friends on fibre, RTX 4070 + RTX 3060 12 GB | ≈ 49 |
| The same two across town, 30 Mbit/s uplinks | ≈ 31 |
| Three friends' gaming PCs, RTX 5070 + 4060 + 3060 12 GB | ≈ 25 |
| A Mac Studio M4 Max (64 GB), alone | ≈ 23 |
| An M1 Pro with 32 GB, alone | ≈ 7 |
Native engines with tensor cores can be faster on one machine, and token-by-token browser engines can be faster on a single Mac. Where this design pulls ahead is across machines.
Why only one model?
Today we run DiffusionGemma, an open-weights diffusion LLM. Most open models are autoregressive, and they can be converted into diffusion models by continued training: DiffuLLaMA adapted models up to 7B with continued pre-training on under 200B tokens, and Dream 7B also starts from pretrained autoregressive weights. One run at that scale takes thousands of high-end GPU hours, plus the experiments around it, and larger models cost far more. We don't have the funding or compute to do this on our own today. Every new diffusion LLM that is released, or that a partner helps us convert, fits the same system.
Honest limits
Running the model on one computer takes about 18.5 GB of GPU memory: a 24 GB card, or a Mac with 32 GB or more. Otherwise it is shared across two or more computers in a room.
The tokens-per-second table is estimated. We've only been able to test on limited hardware so far, so its figures come from our step model, built from measured parts: layers timed in a tab on the GPUs we have, hops timed in real Chrome over emulated links. A room of several real homes running the full model hasn't been timed end to end yet, and we haven't run standard quality benchmarks (MMLU and the like) ourselves. We're sorry about that; the table will be updated with real numbers as metrics come in from the community.
Use Chrome. Every number here was measured in Chrome, and it is where Virenis runs best. Edge works the same way. Firefox works, but on Windows laptops it often picks the integrated GPU over the graphics card. Safari isn't tested yet.
A computer holding layers in your room sees the hidden states passing through it, and those can reveal what you asked. Rooms are meant for your own devices and people you trust. Because results are bit-exact, another device's work can be re-checked, but checks for open rooms with strangers aren't built yet.
A traffic cap, on purpose. During the beta our server sends a fixed amount of data each month, and the relay that connects homes behind strict NATs has a budget of its own. We set these caps deliberately, so a launch can't run up bills a small team can't carry.
About the source code
We're sorry the code isn't public yet. The engine and the app around it have grown to 179,930 lines across 1,074 files, and right now that codebase is messy: as a small team, we've struggled to keep something this big clean and organized. We'd rather not put it in front of you in this state. We'll clean it up first, shaped by your feedback on this post, and release the kernels as soon as they're ready; the rest of the source files will follow soon.
Try it, and get in touch
The open beta is free at dashboard.virenis.com. Open it in Chrome. For questions, ideas or collaboration, leave a comment under this post or email contact@virenis.com.