What If You Never Needed an API Key Again? Building a Mesh LLM From Spare Compute

Introduction: Idle Compute and the Mesh LLM Vision

The speaker opens by highlighting how much compute exists in everyday devices and rooms, yet sits idle, while inference workloads for LLMs and agents are becoming a major bottleneck and increasingly expensive. He introduces the Mesh LLM project as an attempt to pool this underutilized consumer compute to help address rising inference demands.

Why Pool Compute: Sovereignty, Cost, and Personal Motivation

The speaker explains motivations for building Mesh LLM, including data sovereignty (keeping data local rather than routing through undersea cables), zero marginal cost enabling different model choices, and personal experiences from the Goose project where users with underpowered laptops struggled to run local models. He also shares his long-standing fascination with peer-to-peer networking and draws an analogy to the 1990s shift from proprietary Unix machines to commodity Linux hardware that birthed the modern internet.

Project Overview: Naming, Demo, and Developer Experience

The speaker describes the Mesh LLM project's GitHub repo and its blue bottle jellyfish logo, noting the irony that the jellyfish is itself a decentralized colonial organism. He demonstrates the simple developer experience—running one command to join a mesh and get an OpenAI/Anthropic-compatible API—and shows console stats, network topology visuals, and a chat interface his wife used, before outlining core challenges like trust, efficiency, latency, and hardware diversity.

Inference Fundamentals: Tokenization, Embedding, and the Prefill/Decode Cycle

Using hand-drawn diagrams, the speaker explains inference-time (test-time) concepts for those unfamiliar, introducing 'Marvin' as a stand-in for a stateless model with no memory. He covers tokenization, embedding, attention, and the two-phase inference process: prefill (populating caches across the network) and the decode loop (generating tokens one at a time) supported by the KV cache.

Hardware Architectures: From NVLink Clusters to Unified Memory to the Internet

The speaker contrasts traditional inference hardware—GPU clusters with high-bandwidth, low-latency interconnects like NVLink and specialized dies like Cerebras—with consumer unified-memory architectures such as Apple Silicon. He then poses the core challenge of Mesh LLM: using the unreliable, higher-latency internet and commodity protocols (IP, UDP, QUIC) instead of exotic interconnects.

Parallelism Strategies: Pipeline, Expert, and Agent Mixtures

The speaker explains why Mesh LLM uses pipeline parallelism (splitting model layers across nodes) rather than tensor parallelism, given diverse and unreliable network conditions. He introduces mixture-of-experts routing to group active experts on single nodes, and mixture-of-agents, a technique using diverse pools of smaller models to produce more accurate, failure-tolerant results than one large model.

Exploiting Prefill Parallelism and Decentralized Topology

The speaker details technical tricks that make Mesh LLM feasible: prefill's natural parallelism-friendliness, peer-to-peer topology detection for low-latency direct connections, and splitting models into pipeline stages stored on Hugging Face so each node downloads and serves only its needed portion, reducing memory and bandwidth pressure.

How Skippy Works: Pipeline Staging and the Inference Flow

The speaker describes their custom layer called Skippy, built on Llama.cpp, which organizes nodes into pipeline stages that gossip to determine layer distribution. He walks through how prefill fans out across stages in parallel and how the decode loop passes activations sequentially between stages to generate tokens, noting that small network latencies can still yield a solid tokens-per-second floor while freeing up node compute for other tasks.

Speculative Decoding: Speeding Up Token Generation

The speaker explains speculative decoding, where a small, fast draft model predicts multiple future tokens that are validated in parallel by the larger model's pipeline stages. This technique, similar to CPU branch prediction, can dramatically reduce round trips by producing multiple validated tokens per cycle when predictions are accurate, with minimal cost when they're wrong.

Mixture of Experts vs. Mixture of Agents Trade-offs

The speaker discusses the downsides of routing to pre-grouped 'hot experts,' which can cause strange failures like forgetting basic facts due to losing access to full model interconnect. He then presents mixture-of-agents as a better alternative—running multiple smaller specialized models in parallel, racing and arbitrating their responses—as illustrated in an AI-generated architecture diagram.

Runtime Monitoring: Detecting and Correcting Hallucinations

The speaker describes how deep integration with the inference engine allows real-time monitoring for statistical signals like entropy spikes that may indicate impending hallucination or model confusion. When detected, the system can pause and request help from other nodes in the mesh to verify and correct outputs, all while presenting a single simple API to the user.

Results, Public Mesh Demo, and Closing Remarks

The speaker shares early findings, including successfully running a half-trillion-parameter-class model on commodity Ethernet hardware with good throughput, though performance drops over interstate networks while mixture-of-agents can span greater distances. He closes by describing the free public mesh demo (for fun, no guarantees or incentives), the option to run private meshes, and thanks the audience while providing links to the project.

Thank you. Thank you. You can hear me okay? Great. Yeah. So, yeah, compute is all around us. It's in this very room with us. Quite a lot, actually. A lot of it's idle. Not all of it's idle. I can see a lot of people doing work or they've got things going on, but it's often underutilized as an asset.

So what if we could pull it together to help out with some of these new workloads where we've been struggling with? So the project to do this is called Mesh LLM. We didn't think too much about the name, but I'll go into that a bit later and hopefully teach a few things on the way. So inference, you've probably heard a lot this week is a bit of a bottleneck, especially LMs and agent workloads and things like that. It's really quite compute heavy.

Training is heavier but you train once and you do a lot of inference over and over and that's kind of where things are biting right now. It's getting expensive as people are starting to find. It's very, very resource heavy. It's not always the most efficient thing with the hardware that's used. And of course, you know, there's lots of angst about data center builds and waste and all that sort of stuff.

And very crude sort of chart based on some, you know, finger in the air data from the previous slide that has some credibility. But if you sort of group, you know, squint your eyes a bit and group all the consumer stuff together versus the deployed fleet of AI specialist stuff from 2025, the bar chart kind of looks like that. There's a lot of consumer stuff out there.

That's not like you're not comparing apples with apples, but it just gives you a taste of what's going on. Just the sheer power of compute that comes out of Apple devices and and other things out there that's just being bought every year renewed or just sitting there idle. It's been there for years. So why do we want to do that?

Well, John kind of talked about this a bit. Sovereignty has been talked about this week a bit. Sovereignty is just kind of giving you optionality of where things run. So you don't have to rely on a optic fiber that that goes out. That's the one that goes out from Bondi Bondi Beach and heads across to California.

Your data doesn't have to go there. So you've got, you know, national sovereignty and and for some reason in this diagram, it's going by New Zealand, which is chilling. There's a would you do things differently if you had zero marginal cost? Like if you had, you know, this is one of the things about local models or or, you know, personal stuff is you're not you're not paying for someone else's tokens or compute by the minute or whatever. Maybe you would do things differently.

Maybe that will give you more efficiency. And model choices and other ones. So you get that's related to sovereignty. You can, you know, you're not having things changed on you without you, kind of permission. So some more wires, so the Goose project that I was part of, we would encounter people that were interested in running local models, experimenting with maybe the people that worked in different industries, you know, chemical engineering, drug engineering, things like that.

And often they would have underpowered laptops and be trying to download and run things like with four gig. No no chance of doing anything out there. So I sort of started thinking, well, I've got some idle stuff at home. I could just share that over the web for them somehow or they could pull it with their friends.

Surely there's got to be a way to give them something. Also, I've always been a fan of peer to peer networking. It's more like a hobby for me. I don't know why. It just kind of fascinates me and it has been improving. There's a lot of innovations there. Networks are getting better, mobile networks, home networks, Starlink. And unified memory architectures are now pretty common for new PCs and laptops and things like that that happen to be quite good at these workloads. And I also think back to the '90s, like there's a bit of an analogy here.

Compute went from Unix machines running, you know, Solaris, SunOS, whatever, e 10 k's bespoke things, showing my age there, to commodity stuff running Linux, which and then, you know, the Internet as we know it took off from that. So is there an analogy here to birth kind of a new era? It's it's fascinating to see.

So, yeah, that's that's some links to the project. That's the a GitHub repo. It's called Michelle Lam. The importantly, the logo is a blue bottle jellyfish, which is actually not a jellyfish that animal nerds told me. It's actually a collective organism that is itself decentralized and distributed and has its tentacles touching each other. So I thought that was a funny accident.

Just to go at the high level into it, the experience is just can be this simple. You just run this one monolithic app command and by default, it will discover something, join, work out what computes there, does it can you contribute anything, can you use someone else's. And you get as a developer, you get a a standard sort of OpenAI or Anthropic compatible API on your desktop, the familiar API and a little little console to help you out.

So sort of the the surface. Sometimes it looks like this. This was like a snapshot of a public one this morning or something. It'll it'll give some stats like how much effective RAM is available. Sometimes there'll be thousands of things in there. Someone will be being either attacking it or being silly buggers and running it on a a fleet of thousands of machines, but it's sort of designed for it.

That's really just behind the scenes sort of look at of how the nodes that are talking to each other and what ones have direct connections. There's like a you know, everything has a chat interface. That's really just to demonstrate it's working. My wife did use it for a while. She had a thing against OpenAI and that's how she would use it. And so I'd get messages whenever it wasn't working.

She's number one customer. But it's really designed for developers to use. So there are challenges. And, you know, we do these things, but not because they're easy, but we thought that would be easy. So obviously, trust if you're sharing stuff. Obvious one, we can talk about that at length. Efficiency, of course, boring stuff. But the interesting stuff is like the the stuff that people say, oh, this can't be done.

And latency is a big one, especially during inference. Training has other challenges. No no time to go into that today. It's a subject to the future, but it's fascinating. And then finally, the hardware just varies so much. Like you you have someone who has a certain GPU and if it runs over a certain temperature, it just bricks, things like that.

There's a variety of operating systems, emerging chips, GPUs, architectures and, you know, a lot of compile targets basically. So just a little bit of a backgrounding just for those that don't have. So what we mean by inference time and what goes on. Inference time is sometimes called test time is is the term of art. I don't know why.

It annoys me. I just call it runtime, but test time it's called. And, you know, this is all hand drawn, not not an AI slop. This is all me doing it by hand. So that's me on the left. I put in my hopes and dreams as a prompt, maybe video, maybe voice, maybe text. Typically gets broken down into a a stack of things like that, the system prompt, schemas, and history, and traces, and all this sort of good stuff, the thing that you just asked and post to it. And that goes to Marvin, and then Marvin will use the tokenizer and do some embedding to find related things and attention and use a case to be efficient because fundamentally this Marvin is stateless.

He has no thoughtful mind. He's a there's no memory there really. And some other terminology that you probably heard thrown around tokenizing, taking input text images, whatever it is that and turning it into numbers that you can put in big fancy matrices or vectors. Embedding, which is finding a space, a high dimensional space that these numbers or groups of numbers can be a vector pointing to.

So something that mentions cat or feline will point to the same sort of area that helps with the models understanding what you're talking about and attention and all that sort of stuff. And then pre fill is like the early part of inference when your prompt goes in and has to like spread throughout the network and like populate the caches, go through all the layers.

And once that's done, then it can start doing the decode loop. And the decode loop is when it starts just making stuff up. And that's when you get the outputs back. And the KV is the cache that helps it along. So, you know, we've got caches, you know, and that's all inference. So normally, they're on big stonking boxes that have amazing interconnect, things like NVLink and that.

So you'll have a, you know, GPUs in a machine. It might be a a PC, like a games machine, you have multiple ones or it might be one of those big pro racks with two miles of copper interconnect. I believe it's copper because the speed of light is faster in copper than fiber and that matters. And the GPUs will have a bit of their own vRAM, sometimes it's called, and the CPU will have its own RAM and then l one and l twos and but all of these pipes here, again, hand drawn, like big fat things and low latency.

Latency meaning ten milliseconds is a lot of, sorry, ten microseconds is high latency. So really, really not light networks as we know them and that's how they do tensor scaling and parallelism and all this sort of stuff and burn a huge amount of power to do inference. Another architecture that's more like what's in this room and the consumer stuff is unified RAM, like all of Apple post Intel.

If anyone's still got an Intel Mac, then good on you that it's still running, but it doesn't do this. But, you know, they'll have a pool of GPUs sharing the same RAM more or less as the CPUs and the cores. And, yeah, that that gives you pretty good fast interconnect too. So it's it's different but but also similar.

But again, it's really high bandwidth, low latency, and even specialized devices like Cerebras that build giant dies where the all the GPU and memory is all interwoven with each other on the on the on the actual silicon is is like this as well. But what we wanna do in this mesh thing is we wanna use the Internet, which is not really known for its latency and reliability. In fact, it was built for things not to be reliable.

And we wanna use commodity networking and hardware, so we're gonna use things like IP and UDP and QUIC, QUIC being the the protocol that came from Google a while ago. So you can have all these little boxes of Internets talking to each other in ad hoc ways. So to do this, we need to use tricks.

So we need to build on the strengths and avoid the weaknesses. So the strengths is there's lots of compute around, and we can do lots of things in parallel if they're happy to do it in parallel and step away from the weaknesses, which is weird, diverse hardware. It's not gonna be the same hardware. The networks are gonna be, you know, variable.

Things will come and go. Latency can be high. And that means using certain ways of spreading out models and not others. So pipeline parallelism is one, not tensor parallel. Sometimes the terms get mixed. So pipeline is you take the layers of a model and you break up the layers and you can split them apart onto different machines if you want.

You can also split up a model into different experts. A lot of the bigger models that you probably use, if not maybe all of the frontier ones or near frontier, are mixtures of experts. So they have a bunch of experts and at any one time, you're only using a subset of them. And so if you work out the subset, experts, if you like, you can group them together with the with the trunk.

And then you have a single node that can do a good chunk of that model and you just route traffic to it and you don't have to worry about latency. Mixture of agents is something that's there were some papers I found, and I've done a version of that in the mesh where you it's using different models. It's called MOA, mixture of agents, but it's really a mixture of models, where it'll use a diverse pool of of models to get better and more correct answers and tool calls than one big model.

And it's less latency tolerant, more failure tolerant. And, yeah, as I said, embracing the high latency and then do things like speculative decoding and stuff like that, racing different ones to see who comes first because otherwise it's idle. There's all sorts of tricks. And of course, if you want to host like a frontier class model, like something larger than you would typically consider a local model, Because remember all these nodes, I'm talking about a commodity, they're not going to be super powerful on their own.

There's a few nice facts we can exploit like prefill is very friendly to parallel work. So that's great. It's not going to be too sensitive to latency. So we can spread our work out and take the pressure off memory bandwidth that way. So that means we can do work in parallel. We can also use these networking technology, peer to peer stuff to detect the topology and finding low latency connections from node to node and also make sure that they don't have to funnel through any centralized point. They can just talk direct and lay out the network that way. We split the model by pipeline, not by tensor, as I mentioned. So that means we split up the pipeline.

We precalculate it into stages and we upload those. We're all kept on hugging face. So there's lots of little files. So each node only needs download the bit it needs to serve because these things can get really big and downloading can be a real pain. And each node then only needs to contribute what it can do. It doesn't have to hold the whole model or any part of the whole model.

It takes a whole lot of pressure off the energy and memory bandwidth and so on. And then of course, we use drafting, which I'll show you in a bit. So to do this, we took Alana CBP and at first, it was a bit of a fork because it had some of the bits of it. And then we decided we wanted to build on it with some patches but build our own layer over the top called Skippy, as in Skippy is a bush kangaroo.

I don't know why we thought of that name. But roughly, it works like this. You've got a these are like four nodes, which we call stages, and a stage is made up of any number of layers of the model. And the mesh will gossip amongst itself and work out a a layout of what who can cope with how many layers using a heuristic, agree how to split.

And maybe if the flow will typically be left to right. So if there's any latency to group it appropriately, if it can, to see what takes what load. And then the stage is made up of one or more layers and there's many layers, hundreds in a typical model. So when inference starts, you talk to the mesh via your local little app that you saw before from your API, connects you to the mesh, and prefill happens.

So it'll start talking at least first stage zero. And then pretty quickly, it fans out across the other stages, and they all start in parallel doing their prefill, populating their KV cache or reusing it, managing it, doing all that sort of stuff on their own without having to talk amongst each other during the prefilled stage. So that's the first part of inference going on.

Now decode loop starts, which is where the actual hallucination and nonsense generation machine begins. So it's generating new stuff. So it's got everything set up. It's good to go. And it's now gonna go, I'm gonna guess what the next token is. And I've got a pretty good idea it's this or this set of probabilities. And then it go the activations go pop to the next stage, and it's layer five to whatever.

The first one is layer zero to four and so on and so forth. You know, it just pops out each one to the end, and a single token pops out, and it goes back around the loop and it all starts again. But as you can see, these latencies add up, which is not ideal. But if they're small, like on an Ethernet network, you know, you get millisecond latency, you can still have a fair number of layers and get a pretty good ceiling floor limit to how many tokens per second that's quite useful.

And it's also whilst these things are going on, these nodes, which are computers, are free to do other stuff. They could do their regular computation. They could run a bit of Minecraft or you could do batches in parallel where other users have requests coming in. So it's not like you you it's a it's a busy wait when it's when it's done.

It's it's freeing stuff up as things flow through, but we can do better. So speculation or drafting, so instead of one token, why not try eight or something? There's I don't know if people follow all of the excitement online. There's always new algorithms for things like compressing the KV store, TurboQuan, and there's also stuff to do with algorithms for predicting tokens.

So basically, you use some kind of a very fast, small, efficient model near late stage zero. So instead of the big model, you take a really stripped down dumb one that's fast but often wrong, and you just ask it to generate a small amount of tokens or, you know, activations, all that sort of information.

And so everything happens before. It's generating tokens and activations are passing through the network peer to peer. But along with that, there's a bunch of other information for the other from the from the other predicted ones up to eight or more. And so as it goes through, not only are the stages doing the computation to predict what the next token is, they're also in parallel validating what the draft model has said, I think these are the next tokens.

And they can look statistically and go, actually, yeah, all the way up to six of those, that's pretty good. Seven is not so good or all eight is great. And that passes it on to the next stage. And if everything goes great, you get to which often it does for certain workloads, especially longer prompts, agentic things. It'll get to the end and instead of one token popping out, you get multiple. So you've massively reduced your number of round trips.

And if it was wrong and it was just a stupid model predicting, not really any harm done. There's no time wasted, just a little bit of compute. So it's very similar to CPU branch prediction in that sense. So as I mentioned before, many frontier models are mixtures of experts. So we can pre calculate what the hot experts are, hot experts in your area, and group them together with a trunk.

That still can be pretty big, but for smaller models, can actually split them up pretty nicely that way. And then you use, well, either sticky session assignment, session affinity, or you do a little bit of processing at the head and go, oh, I think you're talking about cars. You can go to the car one. And then from then on, everything happens inside that node, no latency.

And it works, but the major downside is it can inexplicably get really stupid for like, it just because it doesn't have access to the other experts that it would normally think with full interconnect. And this feels like something you might experience with models day to day because they might be using routing and doing things like this behind the scenes. So it doesn't just fail.

It will just fail in strange ways. It will forget what the capital of France is, for example. So it's not an ideal solution. So a better trick is to, you know, again, leaning on the strength of the mesh is we can have many nodes run standalone, smart, specialized models if you like. Smaller models, so instead of big ones run many smaller ones, but then find a way to combine them into a collective agent intelligence.

And in the literature, it's known as mixture of agents. So this is a diagram I had it draw. This is not hand drawn. This is pure slop. But there is a ingress and gateway, you know, from that little API thing. And then depending on the nature of the crest, is it a tool result because tool results mean different to just a prompt. It'll fan things out to a worker pool.

It might race different models to find who can get an answer quickly or maybe one of the nodes is down. And then it will use arbitration to go, well, I sent out three requests, two came back, they agree, that's enough, we can go ahead. If they disagree, then something else will use a stronger model and form it into a response, basically using a pool of models that are out there that can come and go to give a sum greater than the whole.

And this is less sensitive or not really sensitive to latency in terms of it doesn't have the activations hopping all around. But, yeah, it's it's always trade offs. Some other things we do, which is I I guess other people could do this, but because we've got our hooks deep into the inference engine that we've got.

So we can monitor runtime performance as it's doing prefill or just as it's about to start predicting predicting things or to go loop. And we can there's different signals we look for, like a spike in entropy, which is and signals like that that might indicate that the model is about to, like, hallucinate, just talk nonsense or it's lost. It doesn't know what to do.

But models don't like to not answer, so they just make stuff up. But there's often statistical signals you can use that bits in bit of C plus plus code. We hook into that and it can call out to the network and go, it'll just pause, slows down for a minute and ask for help from someone else. And so can you check my work here?

And that that can incorrect, you know, stop it hallucinating, stop it going into a doom loop of repetition and it can also make it, you know, just get things factual, factually more correct. And this all shows up as a virtual LLM, an API, but just one simple API. You don't necessarily have to configure this to get that.

So some findings we had. We were able to run, you know, sort of a half trillion parameter class model. I guess that would probably be in Frontier a year ago, that's, you know, ages ago. On commodity hardware, just with Ethernet, like not even an exotic Ethernet or anything like that. And their throughput was really great and it also left CPU and GPU to spare. And that in an office network or in a home network, that would be great.

If I stretch that across interstate networks, then the tokens per second drop a lot. You can still do it. And of course, the mixture of agents approach can span as far as you want. So there's some early proof points there, but it's still very much an emerging and experimental project with a bunch of us collaborating from all over different companies.

Part of this is there's a free public mesh, which is really just for fun. And you you log in here. You it's discovered, and you can use it. It's not there's no guarantees. It's really just for demo purposes. You can set up a private one. You can join an existing one, and you get an API. And that's it. So there's no incentives for the public one.

This is not a scam. This is not an attempt or anything. It's really just a brief point. So yeah, that's where we are. So thanks again everyone for having me. This is the technology we use and this is some links you can follow-up. So thanks.

  • Compute power is all around us
  • Just sitting there
  • Can we pool it together to help out with these new workloads?
  • Introducing a project to do just this: mesh-llm
A diagram depicting a distributed network with nodes and connections. On the right, two interconnected boxes are visible. One box is labeled "ELK-K_F-Slack HOST (128) GB". Below it, another box is labeled "build_2-10 only 713 GB". There is also a jellyfish icon next to "mesh-llm".

Compute power is all around us

Just sitting there

Can we pool it together to help out with these new workloads?

Introducing a project to do just this: mesh-llm

A diagram illustrates a network architecture with three nodes. The top node is labeled "GLM-4.7-Flash host (103 GB)", below it on the left is "GLM-4.7-Flash worker (52 GB)", and on the right is "Qwen2.5-3B solo (13 GB)". Each node also lists "llama-server : 19337" and "ACK / IAMP". Lines connect these nodes, labeled with "QUIC - RPC" between the host and worker, "QUIC - RPC" between the host and solo, and "Gossip" between the worker and solo. Next to the project name "mesh-llm" is a blue icon resembling a jellyfish.

Inference is now the bottleneck getting expensive, resource heavy people wary about new data center builds

Tweet by Stratechery (@stratechery)

The Inference Shift

Agentic inference is going to be different than the inference we use today, and it will change compute infrastructure because speed won't matter when humans aren't involved.

Link preview: stratechery.com: The Inference Shift. Agentic inference is going to be different than the inference we use today, and it will change compute infrastructure...

Posted: 8:00 PM - May 11, 2026

Views: 200.6K

Tweet by Clem (@ClementDelangue)

Is that more or less accurate? Bullish for local AI as a solution to the energy & cloud shortages!

Headline numbers

Datacenter AI fleet (the entire global installed base of high-end AI GPUs – H100/H200/B200-class):

  • ~8M AI GPUs installed globally by end of 2025 (1.7M shipped in 2025 alone; ~2M Blackwells deployed by year-end on top of prior generations).
  • Aggregate peak inference throughput at INT8/FP8: ~10-15 ExaOPS (8M × ~1,500 TOPS blended).
Consumer edge fleet (phones + AI PCs in pockets and on desks):
  • ~1.4B AI-capable smartphones in active use, weighted avg ~15 TOPS (flagships now hit 35-50, mid-range 5-15) → ~20 ExaOPS.
  • ~200-300M AI PCs with NPUs (Copilot+ class requires 40+ TOPS) → ~10 ExaOPS.
  • Apple alone has ~2.35B active devices; even at a conservative 10 TOPS on average that’s ~23 ExaOPS just from one vendor.
  • Total edge: ~30+ ExaOPS — roughly 2-3× the entire datacenter AI inference fleet.

Posted: 1:07 AM - May 14, 2026

Views: 5,988

Screenshot of a tweet by Stratechery featuring an article link with a pen-nib logo.

Screenshot of a tweet by Clement Delangue discussing AI fleet numbers.

A cloud-shaped logo with the text "inferenceforce" and a red badge overlayed that says "1800 no data centers".

DATACENTER AI FLEET

(Global Installed Base) H100/H200/B200-class

AI GPUs Installed~8M
(1.7M shipped in 2025; ~2M Blackwells by year-end on top of prior generations)
Peak Inference Throughput~10-15 ExaOps
(INT8/FP8)
(8M × ~1,500 TOPS blended)

CONSUMER EDGE FLEET

(Phones + AI PCs) In Pockets and on Desks

AI Smartphones~1.4B in active useWeighted avg ~15 TOPS
(Flagships 35-50, mid-range 5-15)
~20 ExaOps
AI PCs with NPUs~200-300M(Copilot+ class requires 40+ TOPS)~10 ExaOps
Apple Devices~2.35B active devicesEven at conservative 10 TOPS avg~23 ExaOps
Total Edge~30+ ExaOps

TOTAL INFERENCE THROUGHPUT (PEAK)

  • Datacenter AI Fleet: ~10-15 ExaOps
  • Consumer Edge Fleet (Total): ~30+ ExaOps

Consumer Edge delivers ~2-3x the inference compute of the entire Datacenter AI Fleet

Note: ExaOps = 1018 operations per second

Sources: Industry reports, company data, public disclosures (2024-2025)

An illustration shows three server racks representing the Datacenter AI Fleet, and a smartphone and a laptop representing the Consumer Edge Fleet. Below these, a horizontal bar chart visually compares the total inference throughput, with the Consumer Edge Fleet bar significantly longer, representing ~30+ ExaOps compared to the Datacenter AI Fleet's ~10-15 ExaOps.

Why?

  1. Sovereignty
  2. Zero marginal Cost
  3. Efficiency
  4. Modal choice

Token-maxxing
is fun, until you measure
ROI-per-token.
How Twitter travels in one quarter. Over six hundred million in API calls. One metric: total tokens are not improving.

Screenshot of an underwater robotic arm installing or repairing a submarine cable. Diagram showing the Pacific Fibre submarine cable route connecting Los Angeles, USA, to Sydney, Australia, and Auckland, New Zealand, via SubmarineNetworks.com. Infographic featuring a man with "before" and "after" invoices for AI tokens, showing a cost reduction from $150,000 to $5,000.

But why?

  • the goose project, encountered people with 4gb windows laptop (but curious about open models), unable to run local inference, thought it would be fun if they could borrow a friends...
  • p2p networking tech continues improving, fast networks, unified memory architectures emerging, open models.
  • remember the 90s: compute went from special bespoke hardware to linux and commodity (and birthed... well everything we know)

So what is it...

The Impossibly Simple Developer Experience

$ mesh-llm --auto

Downloads appropriate model, joins the best public mesh, and exposes the API.

Local OpenAI-Compatible API: http://localhost:9337/v1

Web Console: http://localhost:3131

One binary. Zero configuration. Instant distributed inference.

A diagram illustrates the simple developer experience of mesh-llm. It shows a command prompt with "$ mesh-llm --auto", followed by a description of its function. An arrow points to two output URLs: a Local OpenAI-Compatible API and a Web Console. Below this, a concluding statement emphasizes ease of use.

Welcome to the public mesh

A screenshot of the meshLLM.cloud web interface, displaying a network graph of nodes and links in the "Mesh overview" section. On the right, a "Model catalog" lists various large language models with their status and associated nodes. Statistics such as Node ID, Owner, total Nodes, Active Models, Mesh VRAM, and Inflight requests are also visible.

Console is optional but still useful. Designed to be used by developers, via apis, your agents etc, anything you want

Screenshot of the Mesh LLM web-based chat interface, showing a prompt input field labeled "Ask me anything..." and an explanation that "Mesh LLM is a project to let people contribute spare compute, build private personal AI, using open models." The browser URL is meshllm.cloud/chat.

But there are challenges

  • trust
  • efficiency
    (other boring things)
  • Latency!! during (part of) inference!
    (training has other challenges, not enough time here).
  • Commodity hardware - lots of variety (OS, chips, GPUs) - lots to compile for and test!
A black and white meme image of John F. Kennedy speaking at a podium, with text that reads: "we do these things not because they are easy BUT BECAUSE WE THOUGHT THEY WOULD BE EASY".

But there are challenges

  • trust
  • efficiency
    (other boring things)
  • Latency!! during (part of) inference!
    (training has other challenges, not enough time here).
  • Commodity hardware - lots of variety (OS, chips, GPUs) - lots to compile for and test!

we do these things not becuase they are easy

BUT BECAUSE WE THOUGHT THEY WOULD BE EASY

Image: A black and white meme featuring John F. Kennedy at a podium. Text overlays read "we do these things not becuase they are easy" at the top, and "BUT BECAUSE WE THOUGHT THEY WOULD BE EASY" at the bottom.

a quick agent/chat/LLM inference ("test time") refresher

Key components:

  • Hopes and dreams (prompt)
  • Disappointment
  • System prompt
  • Tool schemas
  • Conversation history
  • Tool results (thinking/reasoning)
  • The new thing you just typed/snapped/spoke/video
  • Tokenizing
  • Embedding
  • KV cache (as stateless)
A diagram illustrates the LLM inference process. A stick figure representing a user provides "Hopes and dreams (prompt)" as input. This input is combined with a "System prompt", "Tool schemas", "Conversation history", "tool results (thinking/reasoning)", and "The new thing you just typed/snapped/spoke/video". These combined inputs are then processed through "Tokenizing" and "Embedding" before being sent to an AI robot, which also utilizes a "KV cache (as stateless)". The robot's output then leads back to the user, potentially resulting in "Disappointment".

Quick LLM refresher - terminology:

  • Tokenizing
  • Embedding
  • Prefill
  • Decode
  • KV

===> Inference

Normally inference happens on well interconnected processors (or massive racks full of these in massive datacenters with tons of copper and fibre)

A diagram illustrates a computer architecture for inference. Two large blocks labeled "GPU" are shown, each with a smaller "vram" block connected to it. The two GPUs are interconnected, and both GPUs are also connected to a central "CPU" block, which has a smaller "ram" block connected to it. An arrow points from the general area of the CPU and GPUs to the right side of the slide, with the text "These are fast". The diagram emphasizes the well-interconnected nature of GPUs and CPUs for fast inference.

Normally inference happens on well interconnected processors

Also pretty fast

A diagram illustrates a system architecture. Two 'GPU' blocks are connected to a 'unified ram' block. The 'unified ram' block is also connected to a 'CPU' block. An arrow points from the text "Also pretty fast" towards the connections between the GPUs and the unified RAM.

But for mesh, we want to use the internet.

  • Not known for it's low latency...

IP/UDP/QUIC

A diagram shows several black rectangular devices connected by white lines, forming a network. Text "IP/UDP/QUIC" labels some connections. In the bottom right, an image features the rapper Pitbull next to a globe, with the words "Mr. Worldwide" in the background, implying global reach.

so we need to use tricks to build on the mesh strengths. (lots of compute around, can do many things in parallel)

and avoid weaknesses (latency, hardware, networks)

  • Pipeline parallelism (not tensor parallel)
  • Expert parallelism and distribution
  • Mixture of Agents
  • Embrace high latency but lots of idle compute
    • drafting, speculation, racing

If you want to host a model larger than any one node (remember nodes are commodity):

  • prefill is very parallel friendly
  • do work on disparate nodes in parallel
  • topology: detect low latency peers/nodes automatically
  • split model by pipeline, not tensor
    • pipeline parallel means split up by stages - and smaller per node downloads
    • each node only needs to contribute what it can
  • prediction/drafting (like branch prediction)

we built "skippy" a latency aware inference layer on llama.cpp:

Fetch needed pipeline layers from hugging face (models split into layers ahead of time)

Stage0, Stage1, ..., StageN

gossip (mesh) to agree on how to split, who can take what load

An image in the top left corner shows a young boy in a striped shirt affectionately hugging a kangaroo.

A diagram illustrates a process flow: an initial instruction points down with arrows to a sequence of three rectangular boxes labeled "Stage0", "Stage1", and "StageN", separated by an ellipsis in a fourth box, representing intermediate stages. From these stage boxes, arrows point further down to a final instruction.

Inference starts (localhost:9773 ... which connects you to mesh)

Prefill the pipeline in parallel

Stages in the pipeline are represented as Stage0 Layer0..4, Stage1 Layer5..., and StageN.

The kv cache is re-used/filled as chunks are processed across the stages (nodes).

A diagram illustrates an inference pipeline. A large orange arrow points down from the "Inference starts" text to a junction point. From this junction, parallel processing is indicated by two horizontal orange arrows. One arrow points right, flowing through a sequence of rectangular pipeline stages labeled "Stage0 Layer0..4", "Stage1 Layer5...", an ellipsis representing intermediate stages, and "StageN". Below each stage box is a smaller orange box labeled "kv". The other horizontal orange arrow points left from the junction, passing over "Stage0 Layer0..4". The background features a faint blue network of interconnected nodes. In the top left corner, a photo shows a young person hugging a kangaroo.

After prefill, decode starts (it is now generating new stuff)

each stage contributes activations to the next directly across the network (and latency accumulates)

a single token pops out

the new token gets added to what it started with and the decode loop continues until done

A diagram illustrates a multi-stage decoding process for generating new tokens. It depicts a sequence of interconnected rectangular stages labeled "Stage0 Layer0..4", "Stage1 Layer5..", and "StageN", with an ellipsis indicating intermediate stages. Arrows show the progression between stages, with latency measurements such as "5ms" between Stage0 and Stage1, and "2ms" for another segment. Below each stage box is the label "kv". A circular arrow indicates a feedback loop: "a single token pops out" from StageN and is fed back into the beginning of the process. In the top-left corner, an image shows a person hugging a kangaroo.

Speculation (drafting): instead of just 1 next token, try...? maybe they are ok? (a cheap small model guesses 8)

(validating predicted tokens is maybe extra work, but efficient and means less vulnerable to round trips if right).

A diagram illustrating a multi-stage token generation pipeline for language models. It shows a sequence of rectangular blocks labeled 'Stage0 Layer0..4', 'Stage1 Layer5...', and 'StageN', connected by forward arrows with latency measurements like '5ms' and '2ms' between them. Below each stage is a smaller orange rectangle labeled 'kv'. An orange arrow loops from 'StageN' back to 'Stage0', labeled 'multiple tokens'. Another curved orange arrow beneath the stages is labeled 'fewer round trips, better latency tolerance'. The text 'Speculation (drafting)' points to the initial stages of the pipeline. In the top-left corner is a small image of a person hugging a kangaroo.

Another trick

  • Many models are “mixtures of experts” - only part of it is used at any time
  • If you can pre-digest what are “hot experts”, group them together.
  • Each mesh node can run “trunk” plus a group of experts
  • Use plain old sticky session assignment once it has ground its expert node - and inference stays there.
  • MAJOR downside: model can get inexplicably and strangely stupid if you group wrong, bad luck, prompt etc.

Better trick:

  • Use mesh strength: can have many nodes run stand alone smart models, specialised models
  • Not as large as split models, but combine them into collective intelligence
  • is often known as "Mixture of Agents"

mesh

Virtual LLM • Mixture of Agents

One OpenAI-compatible model name that fans out across reachable models, arbitrates, and returns one answer.

  1. Client / Agent
    POST /v1/chat/completions
    model: "mesh"
  2. mesh-llm ingress

    OpenAI-compatible entrypoint

  3. MoA gateway
    • Fresh user turn → fan out
    • Tool-result turn → reducer only

    Classify the turn

  4. Worker pool
    • Fast: small / fast model
    • Specialist: middle models
    • Strong: best available big-tier model

    Built from mesh gossip + local HTTP or remote HTTP-over-QUIC + requires 2+ distinct reachable models

  5. Arbiter

    Code, not an LLM

    Normalizes outputs:

    • answer
    • tool call
    • uncertainty

    Cheap decisions first:

    • agreement → return
    • conflict → reduce

    if needed

  6. Reducer

    Strongest available candidate, hedged if slow

    Used for conflicts, uncertainty, and tool-result turns

  7. Response

    One OpenAI-compatible answer back to caller

A How mesh differs
  • auto:
    pick one model
  • Skippy split:
    one model across nodes
  • hooks:
    mid-inference consultation

mesh (MoA) is proactive fan-out before answering

A flow diagram titled "mesh" illustrates a Virtual LLM (Mixture of Agents) system. The process starts with a client sending a request (1) to a mesh-LLM ingress (2), then to an MoA gateway (3). From the gateway, new user turns fan out to a Worker pool (4) with Fast (speedometer icon), Specialist (target icon), and Strong (diamond icon) models. Tool-result turns from the gateway bypass the worker pool and go to the Reducer (7). The Worker pool's outputs go to an Arbiter (5), represented by code brackets, which normalizes outputs and makes initial decisions. If needed, the Arbiter sends to the Reducer (7), depicted by a balance scale. Both the Arbiter (for agreed answers/tool calls) and Reducer lead to a final Response (8), shown as a chat bubble. Below the main diagram, section A, "How mesh differs", shows three small diagrams: a person selecting one from many options for "auto: pick one model", interconnected gears for "Skippy split", and a hook icon for "hooks". Section B, "Context packing", lists different context sizes. Section C, "Streaming", has a waveform icon next to its description.

During prefill or decode deep in inference time:

  • We have monitor performance during inference time
  • If model detects (for example) a spike in entropy values (token generation is very probabilistic) - we can pause, and have the model "reach out" to network for a second option
  • Prevent hallucinations, factual mistakes, bad tool calls, from smaller/weaker models (using collective strength of different model families)
  • A "virtual LLM" - but still one simple API

Success!

  • Able to run 480B class (what used to be frontier) model on commodity hardware (ethernet) with great throughput
  • (and left GPU/CPU to spare when machines not needed) on a home network.
  • “Mesh” Mixture of Agents can span internet scale.

A free/fun public mesh(s) (meshllm.cloud - default) - consider it demo-ware

  • discovered via nostr
  • or you can setup private one (no publishing), invite friends/family via single token to pool your compute
  • join an existing (public or private) mesh as client or server (no central servers)
  • What you get: openai/anthropic compatible virtual LLM for any agent to use (or a chat app)

public mesh(s) incentives?

  • you can contribute compute, there are no incentives (not even fair use yet, unlike bittorrent), similar to the old school web, why not!
In terms of money, we have no money
An illustration of the character Gru from the movie Despicable Me, shrugging with his hands clasped.

networking tech:

  • https://en.wikipedia.org/wiki/QUIC
  • QUIC address discovery via relays (no shared info in the clear), upgrade to UDP direct for lowest latency where possible, inside any network

Optional publish via nostr:

  • NIP-89: Kind 31990

Thanks!

https://docs.meshllm.cloud/

@michaelneale

Come join the project! help us stop waste

Mic Neale

A QR code linking to https://docs.meshllm.cloud/

Technologies & Tools

  • Ethernet
  • GitHub
  • Hugging Face
  • Linux
  • llama.cpp
  • NVLink
  • Skippy
  • Solaris
  • SunOS
  • TurboQuan
  • Unix

Standards & Specs

  • IP
  • QUIC
  • UDP

Concepts & Methods

  • Attention
  • Branch Prediction
  • Decode Loop
  • Embedding
  • KV Cache
  • Mixture of Agents
  • Mixture of Experts
  • Pipeline Parallelism
  • Prefill
  • Session Affinity
  • Sovereignty
  • Speculative Decoding
  • Tensor Parallelism
  • Tokenization
  • Zero Marginal Cost

Organisations & Products

  • Anthropic
  • Apple
  • Cerebras
  • Goose
  • Intel
  • Mesh LLM
  • Minecraft
  • OpenAI
  • Starlink