mesh-join
Skill3.8k starsChanged 20 days agoApache-2.0View on GitHub
Use this skill when creating, joining, publishing, or connecting mesh-llm nodes into a mesh — private meshes with invite tokens, the public mesh via --auto, named/published meshes, client-only nodes, NAT/firewall/bind issues, or verifying multi-node setups.
- Reads credentials
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
Use this when wiring two or more mesh-llm nodes together, or attaching a client-only node to an existing mesh.
- Very specific: line 27
Every node exposes the same OpenAI API on :9337.
- Distinctive: line 108
Default Nostr mode uses managed iroh relays when direct UDP paths fail — usually no port forwarding is needed.
- Very specific: line 140
When one node cannot fit the model, use Skippy layer splits — same mesh mechanics plus --split and a layer-package model on every serving …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
mesh-join
Use this when wiring two or more mesh-llm nodes together, or attaching a
client-only node to an existing mesh. Per-platform install/serve steps live in
deploy-macos and deploy-linux-gpu; this skill covers the mesh topology
itself. Full reference: mesh/docs/MESHES.md.
Mental model
- A node can serve models (
serve), be an API-only client (client), or both at once. - Starting
servewithout join sources or discovery creates an unpublished mesh and emits a join token (unless--publishis requested). --autodiscovers published meshes (Nostr by default) and joins the best one — the public community mesh in practice.--publishmakes your mesh discoverable; not publishing is not admission control. The default join token supplies connectivity information, not bearer authorization. Use explicit owner/trust policy for controlled membership (seedocs/MESHES.md).- Every node exposes the same OpenAI API on
:9337;/v1/modelsreturns the union of local + peer models and requests route by themodelfield.
Public mesh (the easy path)
mesh-llm serve --auto # serve hardware + join the public mesh
mesh-llm serve --model <ref> --auto # serve a specific model + join
mesh-llm client --auto # API-only client, no GPU neededConfirm joining via discovery_joined in the log (use --log-format json for
machine-readable events) or peers in /api/status.
Unpublished mesh: create + join
# Node A — creates the mesh, prints an invite token
mesh-llm serve --model Qwen3-8B-Q4_K_MGrab the token: with --log-format json it is the invite_token event
(token field). In pretty mode it is printed to the terminal at startup.
# Node B — another serving node
mesh-llm serve --join <token>
# Or an API-only client
mesh-llm client --join <token>--join is repeatable. Requirement-aware meshes (version/attestation policy)
use signed bootstrap tokens; unrestricted meshes can use the default unsigned
endpoint token. Neither token delivery nor publication defines owner admission.
--join-file and the join environment variables are alternative token sources
for both published and unpublished meshes. Either way, the flow above is the same.
Service joins
setup --service installs a service whose command is a bare serve; do not
hand-edit the generated unit. Put the invite token in an operator-owned file
with mode 0600. The default is ~/.mesh-llm/invite.token, or set
MESH_LLM_JOIN_FILE in ~/.config/mesh-llm/service.env to name another path.
For a foreground process, the equivalent is serve --join-file <PATH>.
The token file is re-read for every rejoin attempt, so replace its contents to rotate the token without editing or restarting the service. An empty or unreadable token file is a startup error, never a silent standalone run. Do not put an invite token in argv or a unit file; both are visible in process or service inspection. Requirement-aware meshes use expiring signed tokens, so their operating procedure must include rotation.
Published / named meshes
# Publish for discovery, with a friendly name
mesh-llm serve --model Qwen3-8B-Q4_K_M --publish --mesh-name "lab-a"
# Join by name from anywhere
mesh-llm serve --discover=lab-a
mesh-llm client --discover=lab-a
# Browse what's out there
mesh-llm discover
mesh-llm discover --name "lab-a"
mesh-llm discover --model qwen --min-vram 24
mesh-llm discover --auto # prints the best invite token (script-friendly)--mesh-name without --publish is only a local label — the name does not
publish the mesh.
LAN-only discovery
--mesh-discovery-mode mdns keeps discovery and transport startup LAN-only:
no Nostr relays, no public iroh relays, no public STUN. Joins still require a
supplied matching invite token (mDNS advertisements only carry fingerprints).
NAT, firewalls, multi-interface hosts
- Default Nostr mode uses managed iroh relays when direct UDP paths fail — usually no port forwarding is needed.
- For direct connectivity, pin QUIC with
--bind-port <UDP_PORT>on the mesh-creating node and forward that UDP port. Only the creator side needs forwarding; joiners don't. - On multi-interface Linux/Docker hosts (
--network host), iroh may advertise bridge addresses like172.17.0.1that collide across machines. Pin the real interface:--bind-ip <host-ip> --bind-port <port>. --listen-allonly affects the local HTTP API/console listener, not mesh QUIC.
Verify a multi-node mesh
# Peers on each node (expect N-1)
curl -s http://localhost:3131/api/status
# Union of models across the mesh
curl -s http://localhost:9337/v1/models
# Route to a specific peer's model — the response "model" field
# confirms which node answered
curl -s http://localhost:9337/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"<peer-model-id>","messages":[{"role":"user","content":"hi"}],"max_tokens":16}'/api/status also reports the publication state (private, public,
publish_failed).
Splitting big models across nodes
When one node cannot fit the model, use Skippy layer splits — same mesh
mechanics plus --split and a layer-package model on every serving node. See
skippy/docs/SKIPPY_SPLITS.md; diagnose readiness with mesh-llm doctor split.
Ownership / trust (private deployments)
For owner-attested meshes: mesh-llm auth init, then start nodes with
--owner-key, --node-label, --trust-policy, --trust-owner. Details in
mesh/docs/MESHES.md ("Ownership and admission control").
Gotchas
- Two instances on one machine need distinct ports:
--port(API, default 9337) and--console(management, default 3131). - Model load after join takes time — poll
/v1/models, don't assume failure. - Clients are zero-state on the host side: a
clientnode doesn't appear in the host's peer list. That's expected, not a bug. --headlessonly hides the web UI; the management API stays on--console.
Trending
Quiet since April.about the whole repository
Who's talking about michaelneale/mesh-llm
- A Hacker News story“Pool spare GPU capacity to run LLMs at larger scale”Hacker News · Mar 24, 2026 · 11 points
- @rusttrending.bsky.social“michaelneale / mesh-llm: reference impl with llama.cpp compiled to distributed inference across machines, …”Bluesky · Apr 11, 2026 · 2 likes
- @yug1224.com“複数のLLMを連携させてタスクをこなすための分散型エージェントフレームワークらしい 複雑なワークフローを構築する際に役立ちそうかな yug1224 starred michaelneale/mesh-llm…”Bluesky · Apr 8, 2026 · 1 likes
- Mesh-LLM/mesh-llm“Add mesh-llm MoE planning, analysis, and ranking contribution commands”GitHub · Apr 11, 2026
- Mesh-LLM/mesh-llm“Simplify model for node states”GitHub · Apr 10, 2026
The biggest 5 of 18 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 18
Talked about on GitHub, Bluesky and Hacker News (18 times).
On GitHub · 15
- Apr 11, 2026Add mesh-llm MoE planning, analysis, and ranking contribution commands — Mesh-LLM/mesh-llm0 reactions · 1 comment
- Apr 10, 2026Simplify model for node states — Mesh-LLM/mesh-llm0 reactions · 2 comments
- Apr 10, 2026revise mesh publication rules — Mesh-LLM/mesh-llm0 reactions · 1 comment
- Apr 5, 2026Roll out config as local node config first, then reconcile mesh-wide desired state — Mesh-LLM/mesh-llm0 reactions · 2 comments
- Apr 3, 2026CommitLLM sumi capture: working on Apple Silicon Q8_0 — michaelneale/llama.cpp0 reactions
10 more on GitHub
- Apr 2, 2026Add hardware runtime status enrichment without changing model metadata sources — Mesh-LLM/mesh-llm0 reactions
- Apr 2, 2026Design owner identity propagation and direct verification — Mesh-LLM/mesh-llm0 reactions · 4 comments
- Apr 2, 2026Design owner keystore and Rust signed+encrypted message primitives — Mesh-LLM/mesh-llm0 reactions
- Apr 2, 2026Track splitting PR #130 into smaller rollout PRs — Mesh-LLM/mesh-llm0 reactions · 2 comments
- Apr 2, 2026research: mesh-llm integration — p2p inference mesh + model sharding under obol-stack economic layer — ObolNetwork/obol-stack0 reactions
- Apr 2, 2026[WIP] Make PR 103 mergable on top of PR 127 — Mesh-LLM/mesh-llm0 reactions
- Apr 2, 2026refactor: decompose mesh.rs and app/mod.rs into focused submodules — Mesh-LLM/mesh-llm0 reactions · 1 comment
- Mar 28, 2026Autoupdater — Mesh-LLM/mesh-llm0 reactions
- Mar 27, 2026Add a staged auto-updater for release bundles — Mesh-LLM/mesh-llm0 reactions
- Mar 27, 2026Add generic bulk transfer support to mesh plugins — Mesh-LLM/mesh-llm0 reactions
On Bluesky · 2
- Apr 11, 2026michaelneale / mesh-llm: reference impl with llama.cpp compiled to distributed inference across machines, with real end to end demo ★720… — @rusttrending.bsky.social2 likes and reposts
- Apr 8, 2026複数のLLMを連携させてタスクをこなすための分散型エージェントフレームワークらしい 複雑なワークフローを構築する際に役立ちそうかな yug1224 starred michaelneale/mesh-llm… — @yug1224.com1 likes and repost
On Hacker News · 1
- Mar 24, 2026Pool spare GPU capacity to run LLMs at larger scale11 points · 3 comments
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- Mesh-LLM/mesh-llm★ 3.5k100% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- mesh/AGENTS.mdAGENTS.md
- skippy/AGENTS.mdAGENTS.md
- benchmark-tuneSkill
- config-settings-managementSkill
- connect-agentsSkill
- deploy-linux-gpuSkill
- deploy-macosSkill
- deploy-windowsSkill
- hf-bf16-gguf-conversion-jobsSkill
- hf-gguf-quant-jobsSkill
- hf-layer-package-jobsSkill
- hf-quant-and-layer-package-jobsSkill
- kv-tool-loop-stabilitySkill
- llama-patch-changesSkill
- llama-stage-patch-changesSkill
- manage-ciSkill
- metrics-serverSkill
- plugin-web-ui-extensionSkill
- release-notesSkill
- release-validationSkill
- remote-observable-processSkill
- skippy-cache-family-benchSkill
- skippy-correctnessSkill
- skippy-family-certificationSkill
- skippy-metricsSkill
- skippy-model-packageSkill
- skippy-promptSkill
- skippy-servingSkill
- skippy-spec-benchSkill
- telemetry-privacy-reviewSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

