Commit graph

2053 commits

Author SHA1 Message Date
James Dumay
63e04c42a4
Add direct quant layer package tooling (#1031)
* Add direct quant layer package tooling

* Address quant tooling review feedback
2026-07-22 14:44:22 +10:00
James Dumay
c67c519909
Lock split topology placement (#1050)
* Lock split topology placement

* Document locked split topology

* Address locked topology review feedback
2026-07-22 14:04:25 +10:00
Nick DiZazzo
2804e1f078 fix nightly stability Qwen thinking 2026-07-21 22:56:49 -04:00
Nick DiZazzo
a1649daaa0
ui(data-mode): migrate legacy harness storage to v2 (#1040)
* centralize E2E data mode storage key
* use E2E alias for shared data mode key
2026-07-21 22:54:56 -04:00
Nick DiZazzo
cf2d6addad
fix: Windows Vulkan runtime dependencies (#1046)
* Fix Windows Vulkan runtime dependencies

* Fix Windows dependency test path

* Address Windows GPU routing review

* Normalize verifier path on Windows

* Use Git Bash in Windows verifier test
2026-07-21 21:21:52 -04:00
Nick DiZazzo
ce0222c0da
test: validate MI300 runtime selection and placement (#1045)
* test: validate MI300 runtime selection and placement

* test: avoid global env mutation in ROCm coverage
2026-07-21 21:21:51 -04:00
Nick DiZazzo
7172eec813
fix: support ROCm RDNA APU kernels safely (#1044)
* fix: make ROCm APU runtime selection safe

* test: reject ROCm runtimes without arch metadata
2026-07-21 21:21:51 -04:00
Nick DiZazzo
24915ecb6b
fix: ROCm GPU enumeration (#1039)
* Fix ROCm GPU enumeration

* Preserve unmatched AMD fallback adapters

* Use KFD topology for ROCm bootstrap

* Accept ROCm and HIP device aliases
2026-07-21 21:21:50 -04:00
Nick DiZazzo
a6c7ddb7fd
Document public packaging installation channels
Closes #971. Replace the nonexistent Homebrew tap instructions, document public packages and images, and route release dispatches to Mesh-LLM/mesh-packaging.
2026-07-21 14:04:24 -04:00
Michael Neale
ac0ea92c39
Fix Windows autoupdate import (#1030) 2026-07-21 12:10:06 -04:00
github-actions[bot]
e997c41137 Update llama.cpp upstream pin 2026-07-21 06:23:09 +00:00
github-actions[bot]
efcae3e027 Update llama.cpp upstream pin 2026-07-20 06:40:02 +00:00
Michael Neale
f73ab388ab
Compact public-mesh consultation progress in chat (#1024)
* ui: compact mesh consultation progress

* ui: handle legacy chat model status

---------

Co-authored-by: Michael Neale <14976+michaelneale@users.noreply.github.com>
2026-07-20 12:09:39 +10:00
Nick DiZazzo
f4f7f04950
chore: refactor Rust modules below 2,000 lines (#1019)
* in preparation for a strict linter rule
* complete owner trust CLI reference
* preserve MTP coverage after file splits
2026-07-19 09:09:48 -04:00
James Dumay
2c5dacf212
Pipeline MTP-anchored n-gram verify windows (#938)
* Replace Skippy verify span with verify windows

* Add verify window reply metadata

* Pipeline direct-return n-gram verify windows

* Pipeline MTP-anchored n-gram verify windows

* Support static release builds without features

* Fix split MTP activation-frame serving

* Replace native MTP batched verifier with verify windows

* Restore native MTP verify window batching

* Replace native MTP anchor extension with composite proposals

* Keep composite decode branch on development version

* Expose decode timings for all generation modes

* Retry transient staged lane readiness

* Bound persistent lane readiness handshake

* Keep pure N-gram decode free of MTP drafts

* Report composite proposal totals in decode timings

* Gate composite decode pipeline by candidate depth

* Account direct GGUF MTP weights in split planning

* Avoid MTP cooldown after N-gram tail rejection

* Improve hybrid MTP verification telemetry

* Pipeline native MTP verification replies

* Require useful N-gram tails for hybrid MTP

* Adapt N-gram MTP extensions to tail acceptance

* Fix direct GGUF planning fallback

* Gate N-gram tails on MTP prefix agreement

* Widen initial async verify windows

* Restore anchored N-gram MTP extensions

* Retain ready stages across transient refresh failures

* Document pipelined VerifyWindow decode

* Use llama.cpp N-gram proposer for Skippy

* Add cache-based N-gram proposer

* Add declarative speculative proposer package schema

* Productize Skippy speculative decode plans

* Productize Skippy speculative decode plans

* Support direct N-gram Skippy plans

* Validate speculative package strategy plans

* Add coding agent loop benchmark corpus

* Expose Skippy speculative benchmark counters

* Validate cache N-gram proposer limits

* Document speculative decode configuration

* Fix native MTP proposals and fused restore routing

* Honor configured N-gram extension width

* Document speculative runtime overrides

* Refresh speculative config schema contracts

* Keep N-gram tail rejects from penalizing MTP

* Preserve MTP state after serial tail rejects

* Report adaptive verify width changes accurately

* Fix short simple N-gram extension budgets

* Make VerifyWindow pipelining cost-aware

* Profile prospective VerifyWindow widths

* docs: WAN split performance model + measured latency/compute decomposition

Adds docs/skippy/WAN_SPLIT_PERF.md: the single-stream per-token cost model
(TPOT ~= C_total + (S-1)*2*RTT + (S-1)*P), compute-bound vs latency-bound
criteria, when adding a stage helps (memory, concurrency/pipeline overlap,
dense compute-bound models), and speculation as the WAN amortization lever.

Backed by 2026-07-18 Sydney<->Melbourne 2-node measurements: solo 12.9 ms/tok
compute, split 57.8 ms/tok, decomposing to 12.9 compute + 40 (2xRTT) + 4.9
protocol. Workload was latency-bound (~78% network).

* docs: plan for fast-fail on new requests routed to a dead split stage

Documents the measured ~30s hang when a new request routes to a killed
split stage, the confirmed root cause (60s heartbeat / lenient failure
threshold + slow lane-open timeouts), and a two-layer fix (short
steady-state lane-open deadline; feed lane failures into target_health
cooldown) plus an explicit validation gate. Mesh-timing changes are out
of scope pending live multi-node validation.

* Fast-fail lane reconnects so new requests don't hang on a dead split stage

When a downstream split stage dies, a new request would open a fresh lane
and wait the full ~20s warmup ready-deadline before erroring (observed as a
~30s hang in the Sydney<->Melbourne kill test). The 20s deadline is only
needed during pool warmup, when the downstream may still be loading its
model.

Split the deadline: pool warmup keeps LANE_READY_READ_TIMEOUT (20s); mid-life
reconnects from checkout()/replace_lane() on an already-serving mesh use a
new LANE_STEADY_CONNECT_TIMEOUT (3s). A healthy peer answers in milliseconds,
so a dead stage now fails in ~3s instead of ~30s.

Restores receive_persistent_lane_ready as the shared bounded-handshake helper
(dropped during the main merge) and removes a now-obsolete retry test that
covered pre-#1011 retry behavior. Adds tests asserting the steady-state
deadline stays well under the warmup deadline and that the handshake read
fails fast on a silent downstream.

* docs: latency-aware placement — current behaviour and many-node gaps

Records verified planner behaviour (skippy-coordinator/topology.rs,
skippy-topology, host-runtime call site):
- latency is a placement cost (rtt_ms penalty), not just relay-only exclusion
- planner selects a node subset; does not have to use every eligible node
- stage count is gated on a decode-TPOT target (shallower-that-meets beats
  deeper-that-does-not)

And the gaps that matter at many-node scale:
- no peer-to-peer RTT matrix in production (edge_signals never wired; only
  coordinator-RTT is used) -> co-located nodes cannot be exploited
- network estimate is max(coordinator RTT) x node_count, a worst-case proxy
- no first-class prefer-fewer/never-place-above-Y policy beyond the TPOT gate

* docs: measured speculative recovery cost over WAN (why ngram hurts a latency-bound split)

* Discard dead pooled stage lanes before reuse (fast-fail improvement)

A pooled downstream lane whose stage died while checked in was a dead TCP
stream; reusing it blocked the next generation read forever (handshake
read-timeout is cleared for pooled lanes so long generations don't truncate).
checkout() now probes lane liveness with a nonblocking peek and discards a
dead lane so it reconnects with the short steady-state deadline instead of
hanging.

Validated on a loopback 2-node split with a mid-flight worker kill: new
request now fails faster than main (60s vs main's 90s baseline). Does not
fully solve the recovered-local routing path, tracked as follow-up.

---------

Co-authored-by: Michael Neale <14976+michaelneale@users.noreply.github.com>
2026-07-19 20:14:59 +10:00
github-actions[bot]
6e0ee2e485 Update llama.cpp upstream pin 2026-07-19 06:20:41 +00:00
Nick DiZazzo
5104495551
feat: add extensible owned-node command system (#1002)
* split node transport responsibilities
* harden lifecycle and add inventory result
* expose coalesced scan outcomes
* dispatch typed scan refresh commands
* expose typed owner-control scan refresh
* document scan refresh compatibility
* enforce command deadlines
2026-07-18 15:01:16 -04:00
Eric Wendland
3567b7ea74
fix: Windows installer null architecture probe (#968)
* Avoid calling ToString() on a null RuntimeInformation OSArchitecture value under Windows PowerShell 5.1. 
* Fall back to PROCESSOR_ARCHITECTURE while retaining the x64-only installation guard, and add a regression test for the unsafe probe.
2026-07-18 13:23:39 -04:00
github-actions[bot]
fcbc81e9db Update llama.cpp upstream pin 2026-07-18 06:02:19 +00:00
Michael Neale
d7dfa6c976
Make split serving resilient to memory pressure and network jitter (#1011) 2026-07-18 08:26:41 +10:00
Nick DiZazzo
23377b5783
chore: dispatch completed releases to packaging (#1008) 2026-07-17 15:55:18 -04:00
Nick DiZazzo
1f130bc4eb
fix: partial layer packages in models installed list (#1006)
* Isolate installed model cache tests
2026-07-17 11:54:31 -04:00
Michael Neale
d982c3f194
docs: add agent-guided mesh installation runbook (#1003)
* publish install runbook at meshllm.cloud/setup-mesh
* add setup-mesh self-reference and absolute doc links in install runbook
* add goal routing, filter installed-model noise, trim issue links

- Add a goal->section routing table so single-machine goals (e.g. local coding
  agent) take a short path instead of the full multi-node mesh runbook.
- Instruct assistants to filter `models installed` output down to runnable
  models, excluding layer-package internals and split shards, and show at most
  three candidates. Workaround for Mesh-LLM/mesh-llm#1004.
- Collapse the GitHub issue reference list into inline pointers; the operational
  lessons are already folded into the relevant sections.
2026-07-17 11:30:22 -04:00
Nick DiZazzo
b84dd14b08
chore: harden management access and release integrity (#1007)
* Address security hardening review feedback
* Redact manifest URLs from reqwest errors
2026-07-17 07:17:14 -04:00
github-actions[bot]
a342f85813 Update llama.cpp upstream pin 2026-07-17 06:14:56 +00:00
Michael Neale
b662a4ebff
Fix misleading agentic descriptions in model catalog (#1013)
The catalog described sub-4B models (Llama-3.2-3B, Hermes-2-Pro) as strong
tool-calling / goose defaults, but they fall apart in real agentic harnesses
(goose, Fizz): wrong paths, repeated failing calls, hallucinated tools, and
leaked raw tool-call text. Meanwhile the Gemma 4 family survives the same
harness cleanly and stays snappy.

Update descriptions to reflect observed harness behavior: temper the sub-4B
agentic claims and mark Gemma-4-E4B as a good non-reasoning mini-class agent
default. Descriptions are mirrored in both embedded catalogs.

Co-authored-by: Michael Neale <14976+michaelneale@users.noreply.github.com>
2026-07-17 12:55:38 +10:00
James Dumay
8e5bb12de7
Update llama.cpp patch queue (#1014) 2026-07-17 10:20:45 +10:00
Nick DiZazzo
f13c9dc38b
feat: add plugin web UI extensions (#991)
* Complete plugin web UI host surface
* Align plugin web UI contract and docs
* Harden plugin web UI release path
* Fix plugin navigation and settings UX
* Align local and CI repo consistency gates
* Run publish consistency in test-all
* Simplify native log test module wiring
2026-07-16 16:05:03 -04:00
Michael Neale
1f38ae5339
Fix staged reasoning controls and MoA tool continuations (#1000)
* Fix staged reasoning and agent tool continuations

* Bump Skippy ABI for staged chat fixes

* Narrow agent continuation fix to proven paths
2026-07-16 09:13:23 +10:00
James Dumay
2c2e808be1
Keep active split stages through membership updates (#997) 2026-07-15 13:39:14 +10:00
Abhishek
6b4105aa01
perf: skip re-hashing unchanged GGUF sources on model load (#962)
* Skip re-hashing unchanged GGUF sources with a sidecar hash cache

* Harden sidecar hash cache against malformed records and path edge cases(review addressed)

* Validate ctime in the sidecar hash cache to catch same-size replacements that restore mtime(review addressed)

* Clean up temp files when sidecar cache writes fail(coderabbit review addressed)

---------

Co-authored-by: James Dumay <jameswdumay@gmail.com>
2026-07-15 13:37:18 +10:00
James Dumay
8cbb70fc67
Improve Skippy downstream readiness and decode batching (#993) 2026-07-15 13:12:09 +10:00
James Dumay
fe3b9e3a03
Plan split topology with exact layer weights (#994) 2026-07-15 12:54:41 +10:00
James Dumay
6182437f53
Make quantized layer-package builds resumable (#995) 2026-07-15 12:54:12 +10:00
Michael Neale
7f56a0386a
Recognize thinking field in chat auto-parser (#988)
Co-authored-by: michaelneale <michaelneale@michaelealesmbp.lan>
Co-authored-by: James Dumay <jameswdumay@gmail.com>
2026-07-15 12:48:03 +10:00
James Dumay
bb0b0f7d51
Fix SkippyBench eval reproducibility (#992)
* Fix SkippyBench eval reproducibility

* Address SkippyBench review feedback
2026-07-15 09:02:57 +10:00
Andrew Barnes
95bbb355d3
fix: use GGUF file stems as display names for synthetic local-gguf refs (#969)
* fix: use GGUF file stems as display names for synthetic local-gguf refs

Synthetic local-gguf/sha256-... refs leaked into user-facing model
names on the dashboard and in model target views. Preserve a
filename-derived label in the local inventory snapshot for synthetic
keys and resolve display names as catalog name, then local label, then
raw ref. The canonical model key is unchanged. Fixes #882

* test: cover synthetic model display-name wiring

* test: cover Windows synthetic GGUF labels

---------

Co-authored-by: James Dumay <jameswdumay@gmail.com>
2026-07-15 08:46:48 +10:00
James Dumay
e45a5a0f90
Fix release version staging (#996) 2026-07-15 08:45:16 +10:00
Michael Neale
f8e15e7907
Fix publish preflight consistency check (#990)
Co-authored-by: michaelneale <michaelneale@michaelealesmbp.lan>
2026-07-15 06:58:22 +10:00
James Dumay
4f25060ca0
Add SkippyBench external eval pack (#865)
* Add SkippyBench external eval pack

* Support structured eval requests in skippy OpenAI serving

* Update skippy smoke structured output expectation

* Guard external eval harness execution

* Strengthen Docker eval preflight

* Preflight external eval runs

* Add external eval harness orchestration
2026-07-15 06:06:23 +10:00
James Dumay
c39cb3b06c
Remove non-plugin catalog note (#985)
Remove the non-plugin repository note from the plugin documentation.
2026-07-14 12:16:56 +10:00
James Dumay
edc8cc8cb8
Fix website documentation links (#982) 2026-07-14 08:24:56 +10:00
James Dumay
7580e6294b
Document SDK embedding (#973)
* Document SDK embedding

* Fix SDK embedding review feedback
2026-07-14 08:08:20 +10:00
James Dumay
5936a42f80
Fix crates.io release checkout ref (#981) 2026-07-14 08:03:10 +10:00
James Dumay
df2b7db82f
Improve plugin documentation (#972)
* Improve plugin documentation

* Address plugin documentation review feedback
2026-07-14 07:57:53 +10:00
James Dumay
f00b002b7c
Document architecture, Skippy diagrams, and model packages (#974)
* Document architecture and model packages

* docs: address architecture docs review feedback
2026-07-14 07:56:59 +10:00
James Dumay
14ecf6a859
stream emulated tool prose incrementally (#955) 2026-07-14 07:53:02 +10:00
James Dumay
a55e81a067
remove emulated response content logging (#954) 2026-07-14 07:52:03 +10:00
James Dumay
7d6b945205
bound transformed upstream responses (#956) 2026-07-14 07:51:54 +10:00
James Dumay
4bfb2345cf
Refresh general documentation (#976) 2026-07-14 07:50:07 +10:00