No description
Find a file
2026-05-13 15:49:18 +10:00
.agents/skills feat: huggingface split job for skippy individually downloadable layers (#455) 2026-05-08 16:13:43 +10:00
.cargo feature: add embedded SDK support 2026-04-09 21:59:58 -04:00
.github fix(ci): fix node cache action incompatability 2026-05-13 01:18:52 -04:00
.skills/deploy move knowledge skill to mesh-llm/skills/ (not .skills/ which agents auto-pick up) 2026-03-23 14:17:03 +11:00
ci Improve context planning, admission, and coordinator fencing (#513) 2026-05-12 18:03:58 +10:00
contrib/windows Fix Windows mesh startup compatibility (#448) 2026-05-06 21:43:52 +10:00
crates Enable async prefill forwarding by default (#531) 2026-05-13 12:39:05 +10:00
dist Load startup models from config.toml 2026-04-06 10:08:01 +10:00
docker Add Skippy WAN Docker lab (#528) 2026-05-13 07:10:20 +10:00
docs chore(docs): update docs to match planned updates 2026-05-12 17:52:17 -04:00
evals Certify additional split-serving families (#439) 2026-05-07 21:33:59 +10:00
fly need to have this for fly console 2026-05-13 15:49:18 +10:00
scripts Add Skippy WAN Docker lab (#528) 2026-05-13 07:10:20 +10:00
sdk Use GGUF metadata for context and parallel defaults (#449) 2026-05-07 05:05:19 +10:00
third_party/llama.cpp Report backend GPUs and bundle GPU benchmarks (#509) 2026-05-12 21:19:41 +10:00
tools chore(docs): update docs to match planned updates 2026-05-12 17:52:17 -04:00
.dockerignore docker: multi-stage images for most architectures, CI, and fly rewrite (#220) 2026-04-12 16:17:59 -04:00
.gitignore mesh-llm crate decomposition (#459) 2026-05-08 12:11:14 +10:00
.nvmrc Upgrade GitHub Actions and enforce Node 24 2026-03-30 10:35:30 +11:00
AGENTS.md chore(docs): update docs to match planned updates 2026-05-12 17:52:17 -04:00
Cargo.lock Report backend GPUs and bundle GPU benchmarks (#509) 2026-05-12 21:19:41 +10:00
Cargo.toml Report backend GPUs and bundle GPU benchmarks (#509) 2026-05-12 21:19:41 +10:00
CONTRIBUTING.md Report backend GPUs and bundle GPU benchmarks (#509) 2026-05-12 21:19:41 +10:00
fix-summary.md Report backend GPUs and bundle GPU benchmarks (#509) 2026-05-12 21:19:41 +10:00
install.sh ci: dual-lane CUDA releases (cuda on 12.6.3, cuda-blackwell on 12.8) (#355) 2026-05-06 21:34:02 +10:00
Justfile Add Skippy WAN Docker lab (#528) 2026-05-13 07:10:20 +10:00
LICENSE Add Apache 2.0 license 2026-04-07 10:52:27 +10:00
mesh.png chore(docs): update docs to match planned updates 2026-05-12 17:52:17 -04:00
Package.swift chore: reset swift package manifest after v0.65.1 2026-05-05 01:49:23 +00:00
playwright.config.js mesh-llm crate decomposition (#459) 2026-05-08 12:11:14 +10:00
README.md chore(docs): update docs to match planned updates 2026-05-12 17:52:17 -04:00
RELEASE.md chore(windows-ci): restore Windows release and CI lanes 2026-05-10 18:01:29 -04:00
ROADMAP.md chore(docs): update docs to match planned updates 2026-05-12 17:52:17 -04:00
SKIPPY_PROTOCOL_TODO.md Add Skippy WAN Docker lab (#528) 2026-05-13 07:10:20 +10:00

Mesh LLM

Mesh LLM web console

Mesh LLM pools GPUs and memory across machines and exposes the result as one OpenAI-compatible API at http://localhost:9337/v1. Start one node, add more nodes later, and let the mesh decide whether a model runs locally, routes to a peer, or uses Skippy stage splits for models that are too large for one box.

Quick start

Install the latest release:

curl -fsSL https://raw.githubusercontent.com/Mesh-LLM/mesh-llm/main/install.sh | bash

Join the public mesh and start serving:

mesh-llm serve --auto

That command chooses a backend flavor, downloads a suitable model if needed, joins the best discovered public mesh, starts the local API on port 9337, and starts the web console on port 3131.

Check available models:

curl -s http://localhost:9337/v1/models | jq '.data[].id'

Send an OpenAI-compatible request:

curl http://localhost:9337/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"GLM-4.7-Flash-Q4_K_M","messages":[{"role":"user","content":"hello"}]}'

For server deployments, add --headless to hide the web UI while keeping the management API on the --console port:

mesh-llm serve --auto --headless

Pick the workflow you need

Goal Command Full guide
Try the public mesh mesh-llm serve --auto docs/MESHES.md
Start a private mesh mesh-llm serve --model Qwen3-8B-Q4_K_M docs/MESHES.md
Publish your own mesh mesh-llm serve --model Qwen3-8B-Q4_K_M --publish docs/MESHES.md
Join by invite token mesh-llm serve --join <token> docs/MESHES.md
Run an API-only client mesh-llm client --auto docs/MESHES.md
Run a big model with splits mesh-llm serve --model hf://meshllm/<repo>@<rev> --split docs/SKIPPY_SPLITS.md
Use Goose, OpenCode, Claude Code, or Pi mesh-llm goose, mesh-llm opencode, mesh-llm claude, mesh-llm pi docs/AGENTS.md
Build or contribute just build CONTRIBUTING.md

How the mesh works

  • Single-machine fit first. If one node can host the full model, it serves the model locally without stage traffic.
  • Mesh routing. Every node exposes the same /v1 API. Requests are routed by the model field to the peer that can serve that model.
  • Skippy stage splits. Large dense models can load as package-backed layer stages. The coordinator plans contiguous layer ranges, starts downstream stages first, waits for readiness, then publishes the stage-0 route.
  • Layer packages. Package repositories contain model-package.json plus GGUF fragments so peers fetch only the pieces needed for their assigned stage.
  • Public discovery. Published meshes advertise through Nostr discovery; private meshes stay invite-token based.

For a deeper operator guide, see docs/USAGE.md. For every CLI command and switch, see docs/CLI.md.

Supported model families

Mesh LLM's Skippy runtime tracks llama.cpp family parity with reviewed GGUF representatives. The current reviewed support set covers 72 P0/P1 family rows, with 89 certified rows in the full parity inventory, including Qwen, Llama, Gemma, Mistral, DeepSeek, GLM, MiniMax, Phi, Granite, Hunyuan, EXAONE, Cohere, Falcon, RWKV, and many others.

Split multimodal serving is certified for Qwen2-VL, Qwen3-VL, Qwen3-VL-MoE, HunyuanOCR/Hunyuan-VL, and DeepSeek-OCR using real GGUF plus projector fixtures. DeepSeek3 and EXAONE-MoE use package-backed stages because the full GGUFs are too large for the cheap local baseline.

See docs/skippy/FAMILY_STATUS.md for the full artifact, split, wire dtype, cache policy, and exception matrix. See docs/skippy/LLAMA_PARITY.md for the remaining llama.cpp parity queue.

Install and build notes

Tagged releases publish macOS bundles plus Linux CPU, Linux ARM64 CPU, Linux CUDA, Linux CUDA Blackwell, Linux ROCm, Linux Vulkan, Windows CPU, Windows CUDA, Windows ROCm, and Windows Vulkan bundles. Metal is macOS-only. The Linux ARM64 artifact is mesh-llm-aarch64-unknown-linux-gnu.tar.gz; in install and release contexts, arm64 and aarch64 mean the same 64-bit ARM target.

Build from source with just:

git clone https://github.com/Mesh-LLM/mesh-llm
cd mesh-llm
just build

Source builds require just, cmake, Rust, and Node.js 24 + npm. CUDA builds need nvcc, ROCm builds need ROCm/HIP, and Vulkan builds need Vulkan dev files plus glslc.

Documentation hub

Doc Use it for
docs/MESHES.md Private meshes, public discovery, publishing, invite tokens, API-only clients
docs/SKIPPY_SPLITS.md Running big models with package-backed Skippy stage splits
docs/LAYER_PACKAGE_REPOS.md Contributing and publishing layer package repositories
docs/AGENTS.md Goose, Claude Code, OpenCode, Pi, curl, and blackboard
docs/EXO_COMPARISON.md Balanced comparison with Exo
docs/CLI.md Command reference and JSON automation
docs/USAGE.md Longer operational usage guide
docs/skippy/FAMILY_STATUS.md Certified Skippy model-family status
docs/specs/layer-package-repos.md Manifest and artifact format spec

Community

Mesh LLM is experimental distributed-systems software. When you report bugs, include the command you ran, platform/backend flavor, /api/status output if available, and whether the node was private, published, or joined with --auto.