mesh-llm / skippy
AGENTS.md3.8k starsChanged 20 days agoApache-2.0View on GitHub
These instructions apply under skippy/ in addition to the root AGENTS.md. Paths and just commands below are relative to the workspace root. Skippy owns standalone inference and native runtimes; it must not depend on Mesh crates or plugin hosts. If a native build fails with CMake Error: ... generator : Ninja / Does not match the generator used previously: Unix Makefiles, the build directory still holds a CMake cache from a build configured with a different generator. That happens when…
We split this AGENTS.md into the rules it gives an agent
23 rules. About 0 are common, 10 are distinctive, and 13 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 52
Do not branch on a model-family name or LLM_ARCH_* in shared Skippy stage planning, realization, proof, input ownership, or serving logic …
- Very specific: line 57
Put genuinely family-specific graph construction and annotations in that model's implementation and its owning model_support/ patch.
- Distinctive: line 59
Before adding a shared-runtime exception, audit the same capability across other families and test the general contract.
- Distinctive: line 64
When touching one, replace it with a semantic contract or record the blocker and a migration plan.
- Very specific: line 77
Do not reintroduce an external llama-server / rpc-server runtime lane.
- Very specific: line 78
If you need to update upstream llama.cpp, use scripts/prepare-llama.sh, scripts/build-llama.sh, scripts/update-llama-pin.sh, and …
- Distinctive: line 81
Keep the queue ordered by functional ownership, with unique contiguous patch numbers.
- Distinctive: line 85
Before adding a patch, find the existing patch that introduces or owns the affected source, test, or fixture.
- Distinctive: line 99
When deliberately changing queue boundaries, recreate the affected series from the pinned upstream and prove that the rebuilt series …
- Distinctive: line 105
Treat the public Skippy ABI surface and model lifecycle/loading as distinct patch boundaries.
- Distinctive: line 112
Treat the patched Skippy C ABI as a set of capability-owned modules, not as one implementation file.
- Very specific: line 115
Keep include/skippy.h as an umbrella header only.
- Very specific: line 119
Keep capability implementations in src/skippy/<capability>.cpp.
- Very specific: line 122
Put new behavior in its owning module.
- Very specific: line 126
Use snake_case filenames and preserve the skippy_ prefix for exported C symbols.
- Distinctive: line 128
Keep new implementation files below 1,000 lines.
- Very specific: line 140
Treat Doxygen-style comments in include/skippy.h and include/skippy/*.h as the source of truth for the public native API reference.
- Distinctive: line 144
After changing a public Skippy header or exported function, prepare the patched native checkout and regenerate the website page:
- Very specific: line 153
Commit the regenerated mesh/website/src/docs/pages/skippy-api.md with the native queue change.
- Very specific: line 218
When changing the staged-runtime ABI in the patch queue, bump SKIPPY_ABI_VERSION_PATCH (or MINOR/MAJOR) in skippy/common.h AND keep the …
- Distinctive: line 220
Treat the staged-runtime ABI the same as the mesh wire protocol: additive changes preferred, breaking changes need explicit acknowledgement.
- Very specific: line 224
If skippy-ffi ABI constants change, run cargo test -p skippy-ffi --lib and cargo test -p skippy-runtime --lib in addition to the …
- Very specific: line 228
Do not reintroduce an external llama-server or rpc-server runtime lane.
≈ “Common” is an estimate: at least 1 in 5 of the 36,368 AGENTS.md 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
Skippy Agent Notes
These instructions apply under skippy/ in addition to the root AGENTS.md. Paths and just commands below are relative to the workspace root. Skippy owns standalone inference and native runtimes; it must not depend on Mesh crates or plugin hosts.
Key docs
| Doc | What it covers |
skippy/docs/ARCHITECTURE.md | Current product and API boundaries |
skippy/docs/SKIPPY.md | Historical Mesh integration plan |
skippy/docs/SKIPPY_SPLITS.md | Running large models with split serving |
skippy/docs/LAYER_PACKAGE_REPOS.md | Layer-package publishing |
skippy/docs/design/LLAMA_STAGE_INTEGRATION_PLAN.md | llama.cpp staged-runtime plan and patch-queue background |
Building and native runtimes
just skippybuilds the standaloneskippyCLI and one locally packaged native runtime; it does not build MeshLLM. The CLI discoverstarget/debug/native-runtimesbeside the executable automatically. Use--runtime-bundleonly to select a different bundle explicitly.just skippy-cli-buildbuilds only the debug CLI.just skippy-cli-release-buildbuilds only the release CLI. Those commands do not package a runtime.just skippy-releasebuilds the release CLI and selected native runtime without MeshLLM.just release-runtime-build <backend>builds one packageable native runtime underdist/native-runtimes/.just release-buildbuilds Skippy before MeshLLM. Release CI publishes one backend-neutral Skippy CLI archive per platform and native runtimes per backend. Static backend linkage is not a release or packaging lane.- For branch-local Skippy ABI, llama.cpp patch, MAS hidden-state, or native tensor changes, use the local packaged runtime; do not test new ABI symbols against a downloaded release runtime.
llama.cpp "generator does not match" error
If a native build fails with CMake Error: ... generator : Ninja / Does not match the generator used previously: Unix Makefiles, the build directory still holds a CMake cache from a build configured with a different generator. That happens when ninja appears on or leaves PATH between builds, because scripts/build-llama.sh picks the generator from PATH at configure time. The script detects the mismatch and clears the stale .deps/llama-build/... directory by itself before reconfiguring. On a checkout that predates the guard, remove the build directory named in the error and rebuild.
See CONTRIBUTING.md for full dev workflow.
llama.cpp ABI Patch Queue
Live graph stage realization
Ordinary model builders supply the graph at the actual runtime shape; the generic partitioner validates and realizes the admitted stage. Context graph reuse remains guarded by its normal input and computation-generation checks. Extracted stage programs, geometry recipes, installation, replay, and the experimental selector have been deleted. Do not restore a compatibility path. See the cutover qualification ledger. Certify independent builds at multiple shapes, numerical parity, persistent state, and every MTP head. Never weaken frontier/dependency equality or skip live contracts because a retired replay implementation is absent.
Graph state and cache representation are runtime facts, not operator settings.
Derive complete cache capabilities from the loaded context's reserved/live
graphs and native memory exporters. Do not restore config fields, environment
overrides, family-name selection rules, or handmade smoke admission labels.
Serving smoke tests should start the normal skippy serve --model-path path;
split tests should consume planner-produced contracts.
No model-family special cases in shared Skippy machinery
- Do not branch on a model-family name or
LLM_ARCH_*in shared Skippy stage planning, realization, proof, input ownership, or serving logic to make a family pass. This is a hard rule for new code and repairs. - Express a difference through the graph, an explicit capability or input
contract, or runtime metadata supplied by the owning model builder.
Put genuinely family-specific graph construction and annotations in that
model's implementation and its owning
model_support/patch. - Before adding a shared-runtime exception, audit the same capability across other families and test the general contract. If the capability cannot yet be expressed generally, report the gap instead of adding an architecture allowlist or a family-named fallback.
- Existing family checks in shared Skippy paths are audit debt, not precedent. When touching one, replace it with a semantic contract or record the blocker and a migration plan; do not copy the pattern into another path.
mesh-llm embeds the stage runtime and links patched llama.cpp static ABI
libraries. The only durable llama.cpp patch queue is
skippy/llama_cpp/patches, pinned by skippy/llama_cpp/upstream.txt.
just buildpackages the selected native runtime and builds the standalone Skippy CLI, then builds the UI and dynamic MeshLLM host. The hosts never link a backend library.- Static llama.cpp compilation is the explicitly named native-runtime primitive
(
just release-runtime-build/scripts/package-native-runtime.sh --build), used when changing the Skippy ABI or patch queue. It is not a host build path. - Do not reintroduce an external
llama-server/rpc-serverruntime lane. - If you need to update upstream llama.cpp, use
scripts/prepare-llama.sh,scripts/build-llama.sh,scripts/update-llama-pin.sh, andscripts/summarize-llama-upstream.sh. - Keep the queue ordered by functional ownership, with unique contiguous patch numbers. A source-layout change must be folded into the patches that own the affected capabilities; do not append a terminal "split", "move", or "cleanup" patch that reorganizes code introduced by earlier patches.
- Before adding a patch, find the existing patch that introduces or owns the affected source, test, or fixture. Prefer updating that patch for fixes and extensions of its capability, including test-only changes. Rework any later patches that depend on it, update queue metadata, and validate a cold replay from the pinned upstream. Add a new patch only for a genuinely separate capability without an existing owner; explain that boundary in the change.
- Apply the queue in three lanes: numbered core patches directly under
patches/, numbered family-enablement patches listed bypatches/model_support/series, then generated graph-semantics shards listed bypatches/generated/series. Numbering is contiguous within each lane. - New model-family implementations and their family-specific conversion,
template, multimodal, runtime, and tests belong in one focused
model_support/patch. Keep reusable Skippy machinery in the core lane and mechanically generated graph annotations in the generated lane. - When deliberately changing queue boundaries, recreate the affected series from the pinned upstream and prove that the rebuilt series produces the intended final tree. Once a capability has an owning module, every patch in the recreated series must edit that module directly rather than introducing code in an obsolete monolith and moving it later.
- Treat the public Skippy ABI surface and model lifecycle/loading as distinct patch boundaries. Public declarations may precede their implementation, but a patch should not combine ABI definition with independently reviewable model loading or package behavior.
Skippy Native Source Layout
Treat the patched Skippy C ABI as a set of capability-owned modules, not as one implementation file.
- Keep
include/skippy.has an umbrella header only. Public declarations belong in standalone C-compatible headers underinclude/skippy/, named for their capability: for examplesampling.h,speculative_decoding.h,state.h, andmodel_package.h. - Keep capability implementations in
src/skippy/<capability>.cpp. Private C++ declarations belong beside them in narrowly named headers undersrc/skippy/; they are not part of the installed ABI. - Put new behavior in its owning module.
src/skippy.cppis retired; do not recreate it. Runtime lifecycle, sessions, activation framing, execution, verification, sampling, state, tokenization, and model packaging each belong to their existing capability-owned source files. - Use
snake_casefilenames and preserve theskippy_prefix for exported C symbols. Avoid generichelpers,utils, or expandedcommonbuckets. - Keep new implementation files below 1,000 lines. If a capability approaches that size, split it by a narrower responsibility before adding more code.
- Public headers must compile independently as C11 and C++17 headers. Declare
each implementation source explicitly in CMake and install the complete
include/skippy/header tree. - Source include compatibility is not assumed. Do not add forwarding headers for retired paths unless a task explicitly requires them. Binary ABI changes still require the normal Skippy ABI version bump and synchronized Rust FFI constants.
Skippy native API documentation
- Treat Doxygen-style comments in
include/skippy.handinclude/skippy/*.has the source of truth for the public native API reference. Document every public header and exportedskippy_*function beside its declaration with an@briefdescribing the capability it owns. After changing a public Skippy header or exported function, prepare the patched native checkout and regenerate the website page:
scripts/prepare-llama.sh pinned cargo xtool automation native-generator contracts api-doc cargo xtool automation native-generator contracts api-doc --check- Commit the regenerated
mesh/website/src/docs/pages/skippy-api.mdwith the native queue change. Do not hand-edit the generated page or let a native API PR merge without updating the website reference.
Workspace Crates
Product crates live under skippy/crates/. The most important crates:
skippy-cli/— standaloneskippycommand.
Shared foundations:
skippy-guardrails/— guardrail and compaction primitives for OpenAI-compatible paths.skippy-hardware-profile/,skippy-native-runtime/,skippy-runtime-install/— hardware profile detection, native runtime manifest/selection, runtime download/install/cache.
OpenAI-compatible API:
skippy-inference-api/— OpenAI-compatible HTTP frontend (chat, completions, responses, models).
Models:
skippy-model-artifact/,skippy-model-hf/,skippy-model-package/,skippy-model-ref/,skippy-model-resolver/— model catalog, HuggingFace download, packaging, reference resolution.
Embedded staged runtime (skippy):
skippy-ffi/— Rust ABI bindings to the patched llama.cpp staged runtime.skippy-runtime/— Rust-side staged runtime, package materialization, model info.skippy-serving/— embedded staged-runtime serving (frontend, binary transport, runtime state, embedded HTTP).skippy-protocol/,skippy-topology/,skippy-coordinator/,skippy-cache/,skippy-metrics/,skippy-correctness/,skippy-package-builder/— supporting skippy infrastructure.
Tools and benchmarks:
metrics-server/— standalone metrics collector binary.skippy-gpu-bench/,llama-spec-bench/— benchmarking binaries.
This list covers the crates you are most likely to touch; check skippy/crates/ and each crate's Cargo.toml description for anything not listed.
Other product directories:
skippy/docs/design/— Skippy architecture and native-runtime plans.skippy/docs/— family certification, configuration, benchmarks, parity, and split serving.skippy/evals/— Skippy benchmarking and evaluation scripts.skippy/scripts/tools/,skippy/scripts/recipes/— Clang rewriter and quantization recipes.skippy/scripts/tests/— product-owned script tests.skippy/llama_cpp/patches/— durable llama.cpp patch queue, pinned byskippy/llama_cpp/upstream.txt.
Key Source Files
Embedded staged runtime (skippy/crates/skippy-*):
skippy-ffi/src/lib.rs— Rust ABI mirror of the patched llama.cpp staged runtime;ABI_VERSION_*constants must stay in sync withskippy/common.hin the patch queue.skippy-runtime/src/package.rs— layer-package materialization, identity-bound cache.skippy-runtime/src/devices.rs— backend device enumeration.skippy-serving/src/frontend.rs,skippy-serving/src/frontend/— embedded chat/generation frontend.skippy-serving/src/runtime_state.rs— KV-slot, lane, session state machine.skippy-serving/src/binary_transport.rs,binary_transport/— binary transport to embedded server.
OpenAI-compatible HTTP frontend (skippy/crates/skippy-inference-api/src/):
router.rs,chat.rs,completions.rs,responses.rs,models.rs,sse.rs,backend.rs— OpenAI surface.
Skippy ABI Compatibility
The patched llama.cpp staged runtime has its own ABI version, tracked in skippy/common.h (inside the patch queue) and mirrored by SKIPPY_ABI_VERSION_* constants in skippy/crates/skippy-ffi/src/lib.rs.
- When changing the staged-runtime ABI in the patch queue, bump
SKIPPY_ABI_VERSION_PATCH(or MINOR/MAJOR) inskippy/common.hAND keep the Rust constants inskippy-ffi/src/lib.rsin sync in the same change. skippy-runtimeconsumes the ABI version for package loading and feature probing; an out-of-sync mirror will silently advertise the wrong version.- Treat the staged-runtime ABI the same as the mesh wire protocol: additive changes preferred, breaking changes need explicit acknowledgement.
ABI validation
If skippy-ffi ABI constants change, run cargo test -p skippy-ffi --lib and cargo test -p skippy-runtime --lib in addition to the workspace's normal checks. Do not stop at a build-only validation.
What NOT to add
Do not reintroduce an external llama-server or rpc-server runtime lane. The embedded staged runtime via patched llama.cpp is the supported path.
Trending
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
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 · 1
- Mesh-LLM/mesh-llm★ 3.5k100% same
Edited · 0
None found.
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.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 28,693 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository32 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- mesh/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
- mesh-joinSkill
- 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.
Reviews can't be read right now.
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.

