Skip to content

feat(mesh): upgrade to mesh-llm 0.76.0-rc4 and recommend Qwen3.8 27B - #6189

Open
micspiral wants to merge 4 commits into
mainfrom
micspiral/mesh-0.76.0-rc3
Open

feat(mesh): upgrade to mesh-llm 0.76.0-rc4 and recommend Qwen3.8 27B#6189
micspiral wants to merge 4 commits into
mainfrom
micspiral/mesh-0.76.0-rc3

Conversation

@micspiral

@micspiral micspiral commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Upgrades Buzz's mesh-llm dependencies from v0.76.0-rc3 to the released v0.76.0-rc4 tag, rebased onto buzz origin/main (9c2f0534).

Also keeps the Qwen3.8-27B-Q4_K_M curated large pick (desktop/src-tauri/src/mesh_llm/catalog.rs).

Resolver note: bumping the mesh tag alone fails — mesh log-store needs rusqlite 0.37 -> libsqlite3-sys 0.35 while buzz-admin's sqlx pins 0.30.1, and only one package may link sqlite3. Updating libsqlite3-sys in the same cargo update resolves it (same shape as the rc3 bump).

Verification (local, M5 Metal)

cargo check clean for buzz-relay and buzz-desktop --features mesh-llm; desktop debug binary builds.

Mesh SDK serve path exercised with the repo's existing harness (examples/mesh_agent_e2e.rs, MESH_E2E_MODEL=unsloth/Qwen3.8-27B-GGUF:Q4_K_M):

perm result
P1 explicit-model chat PASS
P2 auto/virtual-mesh chat PASS
P3 oversized-budget must fail "FAIL" — stale harness constant, see below
P4 agentic tool use (buzz-agent + buzz-dev-mcp) PASS

P3 asserts a 150k output budget must be refused, targeting <=128k-context models. Qwen3.8-27B reports qwen35.context_length = 262144, so 150k x the 1.25 router margin (187.5k) genuinely fits and the router correctly accepted it. Stale constant in the example, not a mesh or rc4 defect; left unchanged here.

Perf on M5 Metal, Qwen3.8-27B-Q4_K_M: TTFT 0.22-0.32 s, ~25 tok/s streaming; agent-shaped turns ~1 s to first token after the first (prefix cache), disk KV tier on by default.

@micspiral
micspiral requested a review from a team as a code owner August 18, 2026 02:26
Bump every mesh-llm git dependency in buzz-relay and buzz-desktop from
v0.75.1 to v0.76.0-rc3, and make Qwen3.8 27B Q4_K_M the curated pick for
64GB-class machines.

The rc carries the two changes that make Qwen3.8 safe to recommend:
Mesh-LLM/mesh-llm#1283 routes Qwen3.8 identities to the qwen35 recurrent
family (without it the identity compacts to a string matching neither
qwen35 nor qwen36, so a hybrid recurrent model is classified as dense
attention-KV), and #1342 restores recurrent shared prefixes. #1343 adds
Qwen3.8-27B-Q4_K_M to the compiled MODEL_CATALOG.

Because the large pick now exists in MODEL_CATALOG, the synthesized
catalog entry Buzz carried for the gemma-4-26B pick is removed along with
its size/file/description constants; the entry is canonicalized from the
upstream catalog instead. The retired gemma-4-26B alias is kept in
canonical_curated_model_id so machines that already selected it keep
resolving to a model id Mesh's OpenAI ingress accepts.

Dependency resolution notes: iroh moves 1.0.2 -> 1.0.3 to match the rc's
requirement, and libsqlite3-sys moves 0.30.1 -> 0.35.0 because the rc's
mesh-llm-log-store requires rusqlite 0.37 (only one package may link
sqlite3).

Verification: cargo check passes for buzz-relay and for buzz-desktop with
--features mesh-llm; 2611 buzz-desktop tests pass; cargo fmt --check is
clean. Two failures predate this change and reproduce on unmodified
origin/main: the global_config
inherited_shared_compute_translates_to_supported_agent_transport
assertion (expects "auto", gets "mesh") and an items-after-test-module
clippy lint in managed_agents/restore.rs. Not runtime-verified against a
live Qwen3.8 mesh node from this branch.

Co-authored-by: Michael Neale <michael.neale@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
buzz-agent's `BUZZ_AGENT_LLM_TIMEOUT_SECS` defaults to 240s. MeshLLM's
OpenAI frontend gives a backend call 600s
(`OpenAiFrontendConfig::DEFAULT_BACKEND_TIMEOUT`), so on shared compute the
client aborts work the server is still legitimately doing.

Requests to a local mesh are `stream: false`, so a cold multi-ten-thousand
token prefill is one silent request. Measured on an M5 Max serving
Qwen3.8-27B Q4_K_M: an 88,318-token cold prompt returns HTTP 200 after
503s at 176 tok/s prefill. At the 240s default the client gives up at
four minutes, then retries with an escalated budget (240 -> 480 -> 960),
piling load onto a box that is already prefilling the first attempt.

Seat the mesh client budget at 660s, just above the frontend's 600s, so
the mesh's own error surfaces rather than a client abort racing it.
Remote providers are untouched and keep buzz-agent's 240s default. Like
the other mesh seeds this is a default, not policy: an explicit user
value survives via `insert_default_if_unset` plus the copy-forward list
in `relay_mesh_process_env`.

Co-authored-by: Michael Neale <michael.neale@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
Bump every mesh-llm git dependency in buzz-relay and buzz-desktop from
the v0.76.0-rc3 tag to v0.76.0-rc4.

rc4 is a low-risk move from rc3: git diff v0.76.0-rc3..v0.76.0-rc4 in
Mesh-LLM/mesh-llm touches only generated console web assets and the
release version bump, so the runtime behaviour Buzz depends on is the
same code we already validated. It is the first release tag carrying the
Qwen3.8 fixes as a downloadable artifact for every platform, which means
nodes no longer need a source build to serve the curated large pick.

The Qwen3.8 27B curated recommendation from the rc3 commit is unchanged.

Verification: cargo check passes for buzz-relay and for buzz-desktop
with --features mesh-llm. The one warning emitted (unreachable statement
in commands/workspace.rs) predates this change.

Co-authored-by: Michael Neale <michael.neale@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
@micspiral
micspiral force-pushed the micspiral/mesh-0.76.0-rc3 branch from 777426b to 0cd224c Compare August 20, 2026 02:08
@micspiral micspiral changed the title feat(mesh): upgrade to mesh-llm 0.76.0-rc3 and recommend Qwen3.8 27B feat(mesh): upgrade to mesh-llm 0.76.0-rc4 and recommend Qwen3.8 27B Aug 20, 2026
desktop-standalone was the only launch recipe that ignored the `mesh`
variable. dev, staging and production all build FEATURES=(--features
mesh-llm) when it is set; desktop-standalone invoked `tauri dev` with no
features, so `just mesh=1 desktop-standalone` silently produced a
non-mesh build and the app reported "mesh-llm feature not enabled" from
desktop/src-tauri/src/mesh_llm_stubs.rs.

Wire it up the same way as the other three recipes.

Co-authored-by: Michael Neale <michael.neale@gmail.com>
Signed-off-by: Michael Neale <michael.neale@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants