Invite-only · LAN only · v0.1 in development

Every GPU in the room.
One inference engine.

Community GPU Pool turns a team's gaming laptops, MacBooks, and Linux workstations into a private, hop-minimal, pipeline-parallel LLM cluster — on the network you already have. No per-token API bills. No new hardware.

PyTorch · llama.cpp · MLX — wired Ethernet only

Node A · coordinator
Draft + stage 0
Llama 1B draft · 0 hops
layers 0 – 11
Node B · worker
Stage 1
prealloc KV · no draft
layers 12 – 23
Node C · worker
Stage 2 · last
returns argmax only
layers 24 – 31 + lm_head
4–7×Fewer round-trips
0 hopsTo add capacity
1 prefillTo recover a node
≈460 KBPayload per hop
The problem

The obstacles are on the network side, not the compute side.

Four machines on one desk already hold more VRAM than the model needs. Getting them to cooperate is the hard part — and it has nothing to do with FLOPs.

01 — Latency

Every layer boundary is a hop

Every token traverses every hop. Naive layer splitting on a LAN destroys interactive latency before it ever helps throughput.

02 — Heterogeneity

VRAM varies 4–10×

A 4090, an M3 Max, and a 1660 Ti are not peers. Even splitting is the worst possible packing for a heterogeneous pool.

03 — Scale-out

Adding nodes makes it slower

In a naive pipeline, every new node is a permanent extra hop. The cluster gets bigger and every request gets slower, forever.

04 — Disconnection

Laptops leave the building

A lid closes, a Wi-Fi lease expires, a student walks out. The system must survive losing any node without losing a single committed token.

The architecture

Treat round-trip cost as the scarce resource.

Two nodes used well (1 hop) beats four nodes evenly split (3 hops). Every design decision below follows from that single line.

01

Hop-minimal packing

Greedily fill the strongest node first, spill the remainder to the next strongest. If it fits on one node, hops = 0 and the scheduler serves locally.

02

Speculative decoding, locally

A tiny 1B draft model on the coordinator proposes k = 4–6 tokens at zero network cost. The full pipeline verifies all of them in a single traversal.

03

Scale by replication, not depth

More nodes become more independent pipelines behind the router — not a longer chain. Depth is reserved for models that literally cannot fit any other way.

04

One committed token log

The coordinator holds every committed token for every sequence. Recovery and migration are just a re-prefill of that log — never a restart.

admin — plan dry-run
$ curl /admin/plan?model=llama3-70b # pure function — no side effects plan(nodes=6, model=llama3-70b) pipelines: - stages: [MacBook-Pro, Workstation] hops: 1 layers: 0–41 / 80 - stages: [Linux-box, Gaming-laptop] hops: 1 layers: 0–44 / 80 leftovers: [MacBook-Air, Old-laptop] → role: draft | spare # plan() is pure. rollback is just another call.
iteration loop — decode step
draft → k=6 candidates (local, 0 hops) forward → 7 positions / 1 traversal return → argmax only (224 B, not 14 MB) commit → j+1 tokens (accept prefix) truncate → KV rollback (never recompute)
Live demo

Play with the planner.

This is a real port of plan(nodes, model) — the same pure, strongest-first greedy packer that runs on the coordinator. Toggle nodes, change the model, watch hops happen.

Target model

Node pool

The thesis

Two axes, opposite trades.

The first question on node join is never "how do we reshard?" It is: do we need capacity, or throughput?

Axis 1 — Depth (sharding)

Split layers across more nodes

You get more VRAM for a bigger model. You pay for it on every single token, for every single request, forever.

  • +1 hop per node, permanently
  • Bigger model fits
  • Iteration time = slowest stage
  • Only when the model fits no other way
Axis 2 — Replication (default)

Duplicate the whole pipeline

You get near-linear throughput for the cost of one more copy of the weights. The router sends each request to the shorter queue.

  • Zero additional hops
  • ~Linear throughput gain
  • Isolated failure domains
  • The default outcome of plan()
Under the hood

Small enough to read. Careful enough to trust.

Every subsystem is deliberately the cheapest thing that is still correct at team scale.

Continuous batching

Requests from the whole team are queued and processed concurrently. While node B computes user X's token, node A computes user Y's. Admission is bounded by the tightest stage's KV headroom.

Speculative decoding

A local 1B draft proposes k tokens with zero network cost. Verification is memory-bandwidth-bound, so checking 6 tokens costs ~1.3× checking 1 — one round-trip, 4–6 committed tokens.

Argmax-only return

The last stage returns argmax, not logits. For a 128k vocab that's 224 bytes instead of 14 MB per iteration — a ~60,000× reduction on the return path. Greedy verification needs nothing more.

Token-log recovery

No committed token ever lives only on a worker. When a node dies, survivors evict and reload their new ranges, then re-prefill each sequence's committed log. Seconds at 8k context.

A pure planner

plan() is a side-effect-free function. Rollback, dry-run, and join policy all fall out of that one property — there is no state to unwind.

Drain-then-form

A LIVE pipeline is never mutated. Reconfiguration means drain, wait for zero in-flight, plan over freed nodes, then warm. Live pipelines stay live the whole time.

Deliberately not building
tensor parallelism KV offload to disk RDMA / GPUDirect WAN federation mDNS discovery custom kernels eviction / preemption sampling-based speculation
Roadmap

Twelve weeks to a working pool.

The pipeline abstraction lands at week 9 — after speculative decoding already works on one pipeline. Then the refactor wraps working code instead of debugging a design.

W1
Weeks 1–2

Transport + registry

gRPC forward(), zero-copy tensors, invite-token enrollment, heartbeat.

W3
Weeks 3–4

Single pipeline

greedy_pack, layer sharding, KV buffers, truncate/evict, per-stage timing logs.

W5
Weeks 5–6

Speculative decoding

Local draft, k-curve measurement, acceptance rate, lm_head profiling.

W7
Weeks 7–12

Replication + migration

Router, planner, drain-then-form, cross-pipeline recovery, admin API.

Invite-only · v0.1 in development

Your team already owns the hardware.

Join the private beta and stop paying per token for models your own machines could serve.