🔧 Open Source · Apache-2.0 · Rust + TypeScript

Mesh LLM

รวม GPU และ Memory จากหลายเครื่องเป็นหนึ่งเดียว แล้วเปิดเป็น OpenAI-compatible API เหมือนเรียก ChatGPT — เริ่มที่เครื่องเดียว เพิ่มเครื่องได้ภายหลัง Mesh ตัดสินใจเองว่าโมเดลจะรัน local, route ไป peer, หรือแบ่ง stage

🚀 เริ่มต้นใช้งาน 📖 ดูสถาปัตยกรรม
🌐

Mesh LLM คืออะไร?

ทำความเข้าใจแนวคิดหลักก่อนเริ่มใช้งาน

🔗 รวมหลายเครื่องเป็น Mesh

Mesh LLM รวม GPU และ Memory จากเครื่องหลายเครื่องเข้าด้วยกัน ทุกเครื่องที่ join เข้า mesh จะแชร์ทรัพยากรและโมเดล ผู้ใช้เรียก API ที่เดียวก็ได้ผลลัพธ์จากเครื่องที่เหมาะสมที่สุด

Distributed QUIC/iroh P2P

🔌 OpenAI-compatible API

Mesh เปิด API ที่ http://localhost:9337/v1 — เหมือนเรียก OpenAI ทุกประการ เครื่องมือที่รองรับ OpenAI (เช่น Goose, Claude Code, OpenCode) ใช้ได้ทันทีโดยไม่ต้องแก้โค้ด

/v1/chat/completions /v1/models Streaming

🧠 Skippy Stage Splits

โมเดลใหญ่เกินเครื่องเดียว? Skippy จะแบ่งโมเดลเป็น "stage" แต่ละ stage รันบนเครื่องคนละเครื่อง ส่ง activation ต่อกันผ่านเครือข่าย ผู้ใช้เรียก API เหมือนเดิมไม่ต้องรู้ว่ามีกี่ stage

Layer Packages GGUF Fragments

🤖 Mixture-of-Agents (MoA)

ส่ง "model": "mesh" แล้ว Mesh จะ fan-out ไปทุกโมเดลใน mesh พร้อมกัน แล้วใช้ arbiter หาคำตอบที่ดีที่สุดรวมกลับมาในคำตอบเดียว

Experimental Parallel
72+
Model Families (P0/P1)
89
Certified Rows
5
SDK Languages
10+
Platform Bundles
💡 หลักการสำคัญ: ทุก node ใน mesh เปิด API ที่เหมือนกัน (/v1) การ routing อิงจาก "ชื่อโมเดล" ไม่ใช่ชื่อเครื่อง — ผู้ใช้ไม่ต้องรู้ว่าโมเดลอยู่เครื่องไหน
📦

การติดตั้ง

ติดตั้ง Mesh LLM บน macOS, Linux และ Windows

🍎 macOS

curl -fsSL https://meshllm.cloud/install.sh | bash

หรือติดตั้งผ่าน Homebrew:

brew install mesh-llm/tap/mesh-llm

เหมาะกับ Apple Silicon (Metal backend)

🐧 Linux

curl -fsSL https://meshllm.cloud/install.sh | bash

รองรับ CUDA, ROCm, Vulkan, และ CPU

x86_64 ARM64 CUDA

🪟 Windows

irm https://meshllm.cloud/install.ps1 | iex

ใช้ PowerShell รองรับ CUDA, ROCm, Vulkan, และ CPU

⚙️ หลังติดตั้ง — รัน setup

หลังติดตั้ง executable แล้ว ต้องรัน setup เพื่อดาวน์โหลด native runtime และกำหนดค่า:

mesh-llm setup
setup จะดาวน์โหลด native runtime (Metal/CUDA/CPU), เสนอติดตั้ง background service, และกำหนดค่า identity

ตัวเลือกเพิ่มเติม:

mesh-llm setup --service # ติดตั้ง background service
mesh-llm setup --no-service # ข้าม service
mesh-llm setup --yes # auto-yes ทุก prompt
mesh-llm setup --verbose # รายละเอียดเต็ม

🖥️ เลือก Backend Flavor

เครื่องFlavor แนะนำหมายเหตุ
Apple Silicon MacmetalSetup เลือกอัตโนมัติ
Linux NVIDIAcudaครอบคลุมทุกสถาปัตยกรรม NVIDIA
Linux AMDrocmต้องติดตั้ง ROCm/HIP
Linux Vulkan GPUvulkanใช้เมื่อ CUDA/ROCm ไม่พร้อม
Linux ARM64 (Jetson)cuda/cpuNVIDIA Jetson/Orin
Windows NVIDIAcudaSetup เลือกอัตโนมัติ
ทุก OScpuช้าที่สุด แต่ใช้ทดสอบได้
⚠️ cudPT-blackwell: เดิมใช้ CUDA 12.8 แยก ตอนนี้ cudPT-blackwell และ blackwell เป็น alias ของ cuda — ให้ใช้ cuda แทน
🚀

เริ่มต้นใช้งานใน 7 ขั้นตอน

ตั้งแต่ติดตั้งจนถึงเพิ่มเครื่องที่สองเข้า mesh

1️⃣ ติดตั้ง executable

เลือก platform แล้วรันคำสั่งติดตั้ง (ดูวิธีด้านบน)

2️⃣ รัน setup

mesh-llm setup

ดาวน์โหลด native runtime + ตั้งค่า identity

3️⃣ เริ่ม serve โมเดลแรก

mesh-llm serve --discover my-private-mesh \
  --model unsloth/gemma-4-E4B-it-GGUF:UD-Q4_K_XL

โมเดลนี้เหมาะกับเครื่อง 12GB+ VRAM — ปล่อย terminal เปิดไว้

4️⃣ เปิด Web Console

เปิดเบราว์เซอร์ที่ http://localhost:3131 — ลองส่งข้อความ "Say hello in one sentence."

5️⃣ ตรวจสอบ API

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

ควรเห็นอย่างน้อยหนึ่ง model id

6️⃣ ลองใช้ Agent

mesh-llm goose

หรือ mesh-llm claude, mesh-llm opencode, mesh-llm pi

7️⃣ เพิ่มเครื่องที่สอง

ติดตั้ง Mesh บนอีกเครื่องแล้วรันคำสั่งเดียวกันด้วย mesh name เดียวกัน:

mesh-llm serve --discover my-private-mesh --model <model-ref>

ทั้งสองเครื่องจะหากันเจอและแชร์โมเดลผ่าน API เดียว

🎯 ทางลัด — Public Mesh

อยากลองเลยโดยไม่ตั้งชื่อ mesh? ใช้คำสั่งเดียว:

mesh-llm serve --auto

Mesh จะเลือก backend flavor ดาวน์โหลดโมเดลที่เหมาะสม, join public mesh, เปิด API ที่ port 9337 และ console ที่ port 3131 อัตโนมัติ

⚠️ Headless mode: สำหรับ server ใช้ --headless เพื่อปิด web UI แต่ยังใช้ management API ได้

💻 Client-only (ไม่ serve โมเดล)

แล็ปท็อปที่ต้องการแค่ส่ง request ไม่ serve โมเดล:

mesh-llm client --auto

หรือเข้า private mesh:

mesh-llm client --discover my-private-mesh

📋 เลือกโมเดลตาม VRAM

VRAMโมเดลแนะนำขนาด
8 GBunsloth/gemma-4-E2B-it-GGUF:UD-Q4_K_XLเล็ก
12 GBunsloth/gemma-4-E4B-it-GGUF:UD-Q4_K_XLกลาง
16 GBunsloth/gemma-4-26B-A4B-it-GGUF:UD-Q3_K_XLใหญ่
24 GBunsloth/gemma-4-26B-A4B-it-GGUF:UD-Q4_K_Mใหญ่
64 GB+unsloth/gemma-4-31B-it-GGUF:UD-Q4_K_XLใหญ่มาก
💡 ถ้าโหลดไม่ได้ ให้ลองโมเดลเล็กลง — โมเดลที่โหลดได้และตอบได้ดีกว่าโมเดลใหญ่ที่ crash
🛤️

เลือก Workflow ตามการใช้งาน

แต่ละเป้าหมายมีคำสั่งที่เหมาะสม

เป้าหมายคำสั่ง
🎯 ลอง public meshmesh-llm serve --auto
🔒 สร้าง private meshmesh-llm serve --model Qwen3-8B-Q4_K_M
📢 Publish mesh ของตัวเองmesh-llm serve --model Qwen3-8B-Q4_K_M --publish
🔑 Join ด้วย invite tokenmesh-llm serve --join <token>
💻 Client-only (API เท่านั้น)mesh-llm client --auto
🧩 รันโมเดลใหญ่ด้วย splitsmesh-llm serve --model hf://meshllm/<repo>@<rev> --split
🔌 Flash-MoE SSD backendmesh-llm serve + plugin config flash-moe
🤖 Mixture-of-Agentsส่ง "model":"mesh" ใน API request
🦢 Goose / Claude / OpenCode / Pimesh-llm goose, mesh-llm claude, ฯลฯ
🏗️

สถาปัตยกรรม

ทำความเข้าใจว่า Mesh ทำงานอย่างไรภายใน

🧠 Mental Model ใน 1 นาที

Application
OpenAI client · SDK · Console · Plugin
Node APIs
:9337 /v1 · :3131 /api
Mesh Host Runtime
identity · discovery · gossip
routing · models · lifecycle
Local Execution
one Skippy stage
Split Execution
Skippy stage pipeline
Artifacts
GGUF · Layer Packages · Native Runtimes
💡 ขอบเขตสำคัญ: mesh-llm เป็นเจ้าของ "product และ network behavior" ส่วน Skippy เป็นเจ้าของ "model execution" — API เหมือนเดิมไม่ว่า request จะถูกจัดการ local, โดย peer, หรือผ่าน multi-stage pipeline

📡 Request ผ่านอะไรบ้าง?

  1. App ส่ง OpenAI-compatible request ไป /v1
  2. Node อ่าน model, capability, routing signals
  3. Router เลือก: local target, peer host, หรือ stage-0
  4. ถ้า remote → QUIC transport + tunnel
  5. ถ้า split → stage 0 ส่ง activations ต่อ
  6. ผลกลับมาเป็น SSE หรือ JSON response

🎭 Node Roles

Roleหน้าที่
Clientส่ง inference request โดยไม่ serve โมเดล
Hostมี routable model + เปิด inference API
Workerให้ compute หรือ stage สำหรับ split model
Standbyมี capacity พร้อม promote เมื่อต้องการ

🔗 Discovery, Transport & Routing

🔍 Discovery

  • 🌐 Public mesh: ใช้ Nostr discovery — publish ผ่าน managed relays
  • 🔑 Private mesh: invite-token based — เข้าด้วยชื่อ mesh
  • 📡 LAN: mDNS discovery (เฉพาะ local network)

🚚 Transport

  • QUIC/iroh — multiplexed streams
  • 🔀 Control, gossip, route, tunnel, lifecycle streams
  • 📜 ALPN mesh-llm/1 (protobuf) + mesh-llm/0 (legacy JSON)

🧭 Routing

  • 🎯 อิงจาก model identity ไม่ใช่ machine
  • 🏆 Per-model election เลือก node ที่ authoritative
  • 🔄 Request affinity — reuse target สำหรับ shared prefix cache

📐 Operating Shapes

รูปแบบใช้เมื่อPath
Single Nodeโมเดลพอลงเครื่องเดียวAPI → local Skippy stage
Private Meshคุมเครื่องเอง, invite-tokenAPI → QUIC peer routing
Public Meshต้องการ discovery + shared capacityAPI → public discovery → target
Client-onlyApp ไม่ serve โมเดลSDK → mesh transport
Split Servingไม่มีเครื่องเดียวที่พอAPI → stage 0 → pipeline
SDK-embeddedApp อื่นเป็นเจ้าของ lifecycleApp → SDK → embedded node
🧩

Skippy Stage Splits

รันโมเดลใหญ่เกินเครื่องเดียว โดยแบ่งเป็น stages

💡 หลักการ

เมื่อโมเดลใหญ่เกินที่จะลงบนเครื่องเดียว Skippy จะแบ่งโมเดลเป็น contiguous layer ranges แต่ละ range รันบนเครื่องคนละเครื่อง (stage) แล้วส่ง activation ต่อกัน:

Stage 0
embeddings + layers 0..N
OpenAI driver
Stage 1
layers N+1..M
Stage 2
layers M+1..end
Layer Package
model-package.json
GGUF fragments + checksums
↗↘ feeds all stages

📦 Layer Package คืออะไร?

  • 📄 model-package.json — manifest + metadata
  • 🧱 Shared GGUF fragments — tokenizer, config
  • 📚 Layer GGUFs — แยกตาม layer groups
  • 🔍 Checksums — ตรวจสอบ integrity
  • 🎯 Optional projectors — สำหรับ multimodal models

⚙️ ใช้เมื่อไหร่?

  • 📏 โมเดลใหญ่เกินเครื่องเดียว
  • 🗂️ Catalog ระบุว่ามี package พร้อม
  • 🌐 เครื่องอยู่บน low-latency network
💡 ผู้ใช้ยังส่ง request ไป http://localhost:9337/v1 เหมือนเดิม — ไม่ต้องรู้ว่ามีกี่ stages

🔄 Coordinator Pipeline

Plan

Coordinator เลือก stage boundaries จาก model metadata, available memory, backend capability, topology policy

Download

แต่ละ node ดาวน์โหลดเฉพาะ stage files ที่ตัวเองต้องใช้จาก package repository

Start downstream first

Stage สุดท้าย start ก่อน → รอ readiness → ขึ้นไป stage ก่อนหน้า → ถึง stage 0

Publish route

Stage 0 route ถูก publish เมื่อทุก stage ready — request เริ่มไหลผ่าน pipeline

🏆 Certified Model Families (Split Multimodal)

Qwen2-VL Qwen3-VL Qwen3-VL-MoE HunyuanOCR / Hunyuan-VL DeepSeek-OCR DeepSeek3 (MoE) EXAONE-MoE
💡 72+ P0/P1 families: Qwen, Llama, Gemma, Mistral, DeepSeek, GLM, MiniMax, Phi, Granite, Hunyuan, EXAONE, Cohere, Falcon, RWKV และอีกมาก
🔌

OpenAI-Compatible API

เรียกใช้เหมือน OpenAI API ทุกประการ

🌐 Base URL

Inference APIhttp://localhost:9337/v1
Management APIhttp://localhost:3131

API Key: ใส่อะไรก็ได้ เช่น dummy

📋 ตัวอย่าง: List Models

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

ผลลัพธ์ตัวอย่าง:

"unsloth/gemma-4-E4B-it-GGUF:UD-Q4_K_XL"
"Qwen3-8B-Q4_K_M"

💬 ตัวอย่าง: Chat Completion

curl http://localhost:9337/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model":"unsloth/gemma-4-E4B-it-GGUF:UD-Q4_K_XL",
    "messages":[{"role":"user","content":"What is the capital of Japan?"}]
  }'

🤖 ตัวอย่าง: Mixture-of-Agents (model: "mesh")

ส่ง "model": "mesh" → fan-out ไปทุกโมเดลใน mesh → arbiter เลือกคำตอบที่ดีที่สุด:

curl http://localhost:9337/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model":"mesh",
    "messages":[{"role":"user","content":"What is the capital of Japan?"}]
  }'
⚠️ Experimental: MoA gateway เป็น preview feature — behavior อาจเปลี่ยนระหว่าง versions ต้องมีอย่างน้อย 2 โมเดลใน mesh

📊 API Endpoints Summary

EndpointPortใช้สำหรับ
/v1/chat/completions9337Chat (streaming + non-streaming)
/v1/models9337ดูโมเดลที่ใช้ได้
/v1/completions9337Text completion
/v1/responses9337OpenAI Responses API
/api/status3131Node status, peers, models
🤖

Coding Agents

เชื่อม Mesh LLM กับเครื่องมือพัฒนายอดนิยม

🚀 Built-in Launchers

Mesh มี launcher สำหรับ coding agents ยอดนิยม — เรียกคำสั่งเดียวก็เชื่อมต่ออัตโนมัติ:

mesh-llm goose
# Goose — AI agent สำหรับ coding
mesh-llm claude
# Claude Code — coding assistant
mesh-llm opencode --host 127.0.0.1:9337
# OpenCode — open source coding agent
mesh-llm pi --host 127.0.0.1:9337
# Pi — lightweight coding tool
✅ Launcher เหล่านี้ inject base URL + API key ให้อัตโนมัติ ไม่ต้องตั้งค่าเอง

🔧 Manual Setup — เครื่องมืออื่น ๆ

สำหรับเครื่องมือที่ไม่มี launcher ให้ตั้งค่า OpenAI-compatible provider:

SettingValue
Base URLhttp://localhost:9337/v1
API Keydummy
Modelเลือกจาก /v1/models
⚠️ ถ้า agent ไม่ทำงาน: ตรวจสอบก่อนว่า console chat ทำงาน แล้วเช็ค curl -s http://localhost:9337/v1/models — ถ้าไม่มีโมเดล ให้ restart ด้วยโมเดลที่เล็กลง
🔌

Plugins

เพิ่มความสามารถให้ Mesh LLM ผ่าน plugin system

📦 Official Plugins

Pluginใช้สำหรับติดตั้ง
blackboardแชร์ status, findings, questions, tips ข้าม meshmesh-llm plugins install blackboard
openai-endpointเพิ่ม OpenAI-compatible server ที่รันอยู่ (vLLM, Ollama, TGI)mesh-llm plugins install openai-endpoint
flash-moeFlash-MoE SSD expert streaming backendmesh-llm plugins install flash-moe
metricsOpenTelemetry metrics exportmesh-llm plugins install metrics
agentsMesh-native A2A agents + MCP toolsmesh-llm plugins install agents

⚙️ การตั้งค่า Plugin

เพิ่มใน ~/.mesh-llm/config.toml:

[[plugin]]
name = "openai-endpoint"
url = "http://127.0.0.1:8000/v1"

Plugin ที่ไม่ต้องการ endpoint:

[[plugin]]
name = "blackboard"

[[plugin]]
name = "metrics"

[telemetry]
enabled = true
endpoint = "https://otel.example.com"

🏗️ Plugin Architecture

Host เป็นเจ้าของ

  • Plugin lifecycle
  • 🌐 HTTP serving
  • 🔌 MCP serving
  • 🧭 Capability routing
  • 🔗 Mesh participation

Plugin เป็นเจ้าของ

  • 🧠 Feature logic
  • 💾 Local state
  • ⚙️ Operation handlers
  • 📄 Resource handlers
  • 💬 Prompt handlers

Core Principle

💡 1 Control Connection + Many Data Streams — control connection สำหรับ RPC, health, manifest; ข้อมูลใหญ่ใช้ side streams แยกเพื่อหลีก head-of-line blocking

📋 Plugin Commands

mesh-llm plugins install <name> # ติดตั้ง
mesh-llm plugins list # ดูที่ติดตั้งแล้ว
mesh-llm plugins info <name> # รายละเอียด
mesh-llm plugins update <name> # อัปเดต
mesh-llm plugins enable <name> # เปิดใช้งาน
mesh-llm plugins disable <name> # ปิดใช้งาน
mesh-llm plugins delete <name> # ลบ
mesh-llm plugins search [query] # ค้นหา
📚

SDKs — Embed Mesh ใน App

ฝัง Mesh node หรือ client ลงในแอปพลิเคชันของคุณ

🎭 2 Roles

Client

Join mesh + รัน inference โดยไม่ serve โมเดล

ต้องการ: SDK package + owner keypair + invite token

Node

รวม Client + search/download/serve models + optional console

ต้องการ: SDK package + compatible native runtime

🌐 Platform Support

SDKInferenceModel MgmtLocal Serving
Rust macOS/Linux✅ with native runtime
Node.js macOS/Linux/Win✅ with native runtime
JVM/Kotlin macOS/Linux✅ with runtime lib
Android❌ not advertised
Swift macOS/iOS✅ (macOS) / ❌ (iOS)

🔄 Common Lifecycle

Client-only

load owner keypair
create Client(invite_token)
start()
list models
stream chat
stop()

Serving Node

resolve native runtime
create Node
start()
download/locate model
load model → serve
run inference
unload model
stop()
⚠️ Important: เก็บ owner keypair ใน secure storage ของแอป — อย่า generate ใหม่ทุกครั้งเพราะจะสร้าง mesh identity ใหม่
⚙️

Configuration

ไฟล์ config ของ Mesh LLM

📄 ไฟล์ config: ~/.mesh-llm/config.toml

ใช้ TOML syntax — override path ได้ด้วย MESH_LLM_CONFIG env var

GPU Configuration
[gpu]
assignment = "auto" # "auto" หรือ "pinned"
parallel = 2 # total parallel inference slots
Owner Control
[owner_control]
bind = "[::]:7447"
advertise_addr = "" # NAT/Docker override
Telemetry (OpenTelemetry)
[telemetry]
enabled = false
service_name = "mesh-llm"
endpoint = "http://localhost:4318"
export_interval_secs = 10
Models Configuration
[[models]]
model = "meta-llama/Llama-3.1-8B-Instruct-GGUF"

[models.model_fit]
ctx_size = 8192

[models.throughput]
parallel = 4

[models.request_defaults]
max_tokens = 2048
temperature = 0.7
Plugin Configuration
[[plugin]]
name = "my-plugin"
enabled = true
command = "python3"
args = ["-m", "my_plugin"]

[plugin.startup]
timeout_secs = 30
restart_delay = 2
max_restarts = 3
Mesh Requirements
[mesh_requirements]
min_protocol_version = 0
max_protocol_version = 0
require_release_attestation = false
release_signer_keys = []
💻

CLI Command Reference

คำสั่งหลักของ mesh-llm CLI

🚀 Core Commands

Commandคำอธิบายตัวอย่าง
setupตั้งค่าหลังติดตั้งmesh-llm setup
serveเริ่ม serve โมเดล + join meshmesh-llm serve --auto
clientClient-only (ไม่ serve)mesh-llm client --auto
stopหยุด runtimemesh-llm stop
doctorวินิจฉัยปัญหาmesh-llm doctor
uninstallลบ Meshmesh-llm uninstall --yes

📦 Models Subcommands

Commandคำอธิบายตัวอย่าง
models recommendedโมเดลแนะนำmesh-llm models recommended
models searchค้นหา GGUF/MLXmesh-llm models search gemma --gguf
models showดูรายละเอียดก่อนโหลดmesh-llm models show unsloth/gemma-4-E4B-it-GGUF
models downloadดาวน์โหลดโมเดลmesh-llm models download Qwen3-8B-Q4_K_M
models installedดูที่ติดตั้งแล้วmesh-llm models installed
models packageสร้าง layer packagemesh-llm models package unsloth/Qwen3-8B-GGUF:Q4_K_M --dry-run
models certifyCertify package/endpointmesh-llm models certify <ref> --package-only
models cleanupล้าง stale cachemesh-llm models cleanup --unused-since 30d --yes
models pruneล้าง stale stage artifactsmesh-llm models prune --yes
models updatesเช็คอัปเดตmesh-llm models updates --check

🔧 Serve Options

FlagคำอธิบายDefault
--model <M>โมเดลที่จะ serve
--autoAuto-join best mesh
--discover [name]Discover + join mesh ตามชื่อ
--join <token>Join ด้วย invite token
--port <P>API port9337
--console <P>Console/management port3131
--headlessปิด web UI, ใช้ management APIfalse
--publishPublish mesh สำหรับ discoveryfalse
--clientAPI-only modefalse
--max-vram <V>Cap VRAMauto
--llama-flavor <F>Force backend (cpu/cuda/rocm/vulkan/metal)auto

📊 Benchmark & Runtime

mesh-llm benchmark tune --model Qwen3-0.6B-Q4_K_M
mesh-llm benchmark tune --model Qwen3-0.6B-Q4_K_M --apply
mesh-llm benchmark import-prompts --source mt-bench --output ./corpus.jsonl
mesh-llm runtime list
mesh-llm runtime install cuda13
mesh-llm gpus

🔐 Auth Commands

mesh-llm auth init # สร้าง owner keypair
mesh-llm auth status # ดู identity status
⚖️

Mesh LLM vs Exo

เปรียบเทียบสองโปรเจกต์ distributed LLM inference

AreaExoMesh LLM
LanguagePython, Svelte, SwiftRust, TypeScript/React
InferenceMLX, MLX distributedSkippy/llama.cpp stages
SplittingTensor + Pipeline parallelismContiguous layer ranges
HardwareApple Silicon focusCross-platform (CUDA, ROCm, Vulkan, Metal, CPU)
Networkinglibp2p, mDNSQUIC/iroh, Nostr discovery
ArchitectureEvent sourcing (Master/Worker)Decentralized mesh + gossip
APIOpenAI, Claude, OllamaOpenAI-compatible /v1
Dashboard:52415 + macOS app:3131 console + :9337 API
Model artifactsFull MLX modelsLayer packages + GGUF fragments
Community45k+ stars1.1k stars (newer)

✅ ใช้ Mesh เมื่อ

  • 🌐 ต้องการ cross-platform (CUDA, ROCm, Vulkan, Metal)
  • 📦 ต้องการ layer packages สำหรับโมเดลใหญ่มาก
  • 🤖 ต้องการ agent integrations (Goose, Claude Code, ฯลฯ)
  • 🔀 ต้องการ Mixture-of-Agents
  • 🏗️ ต้องการ plugin system + SDK

✅ ใช้ Exo เมื่อ

  • 🍎 environment เป็น Apple Silicon ล้วน
  • ต้องการ RDMA ผ่าน Thunderbolt 5
  • 🔀 ต้องการ tensor parallelism
  • 🖼️ ต้องการ image generation (FLUX)
  • 🐍 ต้องการ Python-based project

FAQ — คำถามที่พบบ่อย

Mesh LLM เป็น model provider หรือไม่?
ไม่ — Mesh รันโมเดลผ่านเครื่องที่คุณควบคุม แล้วเปิดเป็น local OpenAI-compatible API
ต้องมีหลายเครื่องไหม?
ไม่ — เริ่มที่เครื่องเดียวได้ เพิ่มเครื่องภายหลังเมื่อต้องการ capacity, โมเดลเพิ่มเติม หรือ API-only client
URL อะไรสำหรับเครื่องมือ?
Inference: http://localhost:9337/v1 · Console: http://localhost:3131
ควรเริ่มกับโมเดลไหน?
เริ่มเล็กก่อน — ดูตาราง VRAM ในส่วน Quickstart โมเดลที่โหลดได้และตอบได้ดีกว่าโมเดลใหญ่ที่ crash
Layer package คืออะไร?
เป็น artifact สำหรับ multi-machine serving — ไม่จำเป็นต้องใช้ในการรันครั้งแรก
ควรใช้ public mesh ก่อนหรือไม่?
ใช้ private mesh ก่อนเพื่อทดสอบ ใช้ public mesh เมื่อต้องการ public discovery
ใช้กับ agent tools ที่มีอยู่แล้วได้ไหม?
ได้ — ดูส่วน Coding Agents สำหรับ Goose, Claude Code, OpenCode, Pi
🗂️

Source Map

โครงสร้าง repository ของ Mesh LLM

ConcernSource
Binary + CLIcrates/mesh-llm/, crates/mesh-llm-cli/
Host orchestrationcrates/mesh-llm-host-runtime/src/runtime/
Mesh, gossip, peerscrates/mesh-llm-host-runtime/src/mesh/
Routing, proxying, tunnelscrates/mesh-llm-host-runtime/src/network/
Model resolutioncrates/mesh-llm-host-runtime/src/models/
React consolecrates/mesh-llm-ui/, crates/mesh-llm-console-server/
SDK facade + embedded nodecrates/mesh-llm-sdk/, crates/mesh-llm-node/
FFI + language packagescrates/mesh-llm-ffi/, sdk/
Skippy runtimecrates/skippy-*
Protocol definitionscrates/mesh-llm-protocol/, proto/