A language model split across the machines in one room. No server to shut down, no address to block. Once every machine has it, the model keeps answering with the internet cut.
Using a hosted model is a permission. Permissions get revoked — and usually not by the company. By a government.
Both numbers describe the same lever. A model reachable at an address can be blocked at that address, and a model that needs the internet dies when the internet is turned off.
Take the address away. Shard splits the model's 28 layers across the machines you can see, and they find each other on the local network. No coordinator decides the split: every node runs the same arithmetic over the same peer list and lands on the same answer.
Nothing leaves the room. Once the app and the weights are on each machine, an internet shutdown does not reach it.
No operator assigned those ranges. Both machines worked them out alone.
One standalone binary, fetched by key and updated over the air. Only changed blocks travel: 80MB on disk, about 6MB on the wire.
Each node sweeps its own subnet and announces what it can hold. No tracker, no bootstrap server.
Peers sorted by a stable id, layers handed out in order. Nothing votes and nothing is elected.
Every machine keeps its layers in GPU memory. The asking node drives them all through
one --rpc list.
Same WiFi, different WiFi, hotspot on CGNAT — timeout every time. On the LAN we sweep UDP instead.
ggml-rpc-server block-buffers stdout on a pipe, so we knock on the port
instead of reading its output.
It passed our tests, which had no TTY, and failed on a real machine.
--simple-io is the fix.
On every machine that will serve layers. Steps 01 to 03 are one-time; after that it updates itself.
Node 22 or newer. Running pear once finishes the setup.
npm i -g pear pear
The RPC backend is off by default. On Apple Silicon add Metal.
git clone https://github.com/ggml-org/llama.cpp cd llama.cpp cmake -B build -DGGML_RPC=ON -DGGML_METAL=ON -DCMAKE_BUILD_TYPE=Release cmake --build build --config Release -j8
1.9 GB. Shard looks in the working directory, then $HOME.
mkdir -p ~/models curl -L -o ~/models/Llama-3.2-3B-Instruct-Q4_K_M.gguf \ https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q4_K_M.gguf
No registry, no release page. The target directory has to exist first.
mkdir -p ~/shard pear install --to ~/shard pear://k6c99su98pmobmw1c4xqtoacsage1is5ayhq9mqdsc8gobdzg8bo
--offer is how many GB this machine lends — about 15 layers per GB. Then
open localhost:7777.
~/shard/hello-pear-bare --label laptop1 --port 50053 --offer 1 ~/shard/hello-pear-bare --label laptop2 --port 50052 --offer 1
mkdir -p ~/shard pear install --to ~/shard pear://k6c99su98pmobmw1c4xqtoacsage1is5ayhq9mqdsc8gobdzg8bo