Make your own Darkbloom – The Expert Network pools Macs into one model A new open-source project, Expert Sniper, pools ordinary Macs into a network that runs Mixture-of-Experts (MoE) models none of them could run alone, achieving 4.0 tok/s on a 16 GB M4 mini running Qwen3-Coder-30B-A3B 4-bit (17 GB on disk) and 19.3 tok/s on a two-node localhost setup with OLMoE-1B-7B. The project exploits MoE sparsity to stream only active experts from SSD or remote nodes, with each node owning a partition of experts via rendezvous hashing, and it is available via pip install with commands like mlx-sniper download and expert-node. Connect ordinary computers into a network that runs MoE models none of them could run alone. MoE Mixture-of-Experts models activate only 8 of 128-256 experts per token, so ~97% of the weights are unused per computation. That sparsity has a consequence most inference stacks ignore: the experts don't have to live on the machine doing the thinking. They can live on any machine — on its SSD, served over the network — because what moves between boxes is activations ~4 KB per layer , while what moves within a box is expert weights ~13.5 MB per layer . Interconnect is never the bottleneck; pooled SSD bandwidth is the resource, and it scales linearly with every machine that joins: feasible when N x SSD bandwidth x cache hit rate bytes per token x target tok/s └ number of machines in the network Expert Sniper builds this in two tiers: One machine src/mlx expert sniper/ : pin the small always-needed weights attention, norms, router — ~0.9-1.4 GB in RAM and stream only the active experts from SSD via F NOCACHE + pread , with a right-sized LRU expert cache and threaded prefetch. A 17-21 GB model runs in a few GB of RAM. A network of machines src/expert network/ : each node owns a partition of the experts, loaded from its own SSD into its own RAM; a driver runs attention locally and dispatches expert compute to whichever nodes own the active experts. Every machine added is more expert RAM and more SSD bandwidth. Partition assignment is rendezvous hashing over a shared node roster — every node derives the same assignment with zero coordination, and adding a node moves only ~1/N of the experts. One machine, measured 16 GB M4 mini, Qwen3-Coder-30B-A3B 4-bit, 17 GB on disk : 4.0 tok/s, 72.5% expert-cache hit rate, 5.4 GB/s effective reads, ~3.6 GB peak RAM. The model is larger than the machine's memory. Two nodes + driver localhost, OLMoE-1B-7B, 64 experts split 32/32 by roster : 19.3 tok/s, TTFT 0.6 s, 2.9 ms/layer round trip, ~0.24 MB of network traffic per token — faster than the same model streaming from SSD on one machine 14.9 tok/s , because resident partitions take the SSD out of the token loop entirely. That measurement is localhost. Across two physical machines it is a well-founded projection, not a result; see issue 3. Joining does not mean downloading the whole model. A node fetches only the experts it owns, from machines already serving them — the /block/{layer}/{expert} endpoint that proves a node holds an expert is the same one that hands it to the next node, and every block is checked against a published sha256 manifest on arrival. Blocks land in sparse files at the format's fixed offsets, so the engine reads them unchanged while the disk holds only this machine's slice measured: 0.2 GB on disk for a partition of a 4 GB model . pip install -e ". network " mlx-sniper download olmoe-1b-7b -o ~/models/olmoe-stream 3.6 GB demo model each machine or terminal derives its partition from the shared roster: expert-node --model-dir ~/models/olmoe-stream --roster mini-a,mini-b --me mini-a --port 8301 expert-node --model-dir ~/models/olmoe-stream --roster mini-a,mini-b --me mini-b --port 8302 expert-net ~/models/olmoe-stream --nodes http://127.0.0.1:8301,http://127.0.0.1:8302 --chat Nodes bind 127.0.0.1 by default and have no authentication — pass --host 0.0.0.0 only on a trusted network. The decode loop is a LAN/metro design per-layer round trips ; the WAN's role is distributing the content-addressed expert partitions, never the token loop. pip install -e . mlx-sniper download qwen3-30b download + preprocess + calibrate mlx-sniper run ~/models/qwen3-30b-stream -p "Hello" -v mlx-sniper chat ~/models/qwen3-30b-stream mlx-sniper serve ~/models/qwen3-30b-stream Ollama-compatible API mlx-sniper eval ~/models/qwen3-30b-stream perplexity on held-out text mlx-sniper download list shows supported models Qwen3-30B/Coder-30B, Qwen3.5-35B/122B, Qwen3-Next-80B, Qwen3-235B; Gemma 4-26B experimental . Already have an MLX 4-bit checkpoint? mlx-sniper preprocess