feat(desktop): use collective mesh routing for Auto - #2825
Conversation
Signed-off-by: Michael Neale <michael.neale@gmail.com>
d7a8a77 to
b196093
Compare
Why this is neededBuzz runs one embedded MeshLLM runtime per machine. A client-only node must join the Buzz-scoped mesh and route through models shared by other members, but it must never enter model election or download a remote member model locally. At the same time, This PR therefore combines:
Validation completedAutomated:
Packaged two-machine checks:
|
Why the MeshLLM hash pin changesThe released MeshLLM line used by Buzz can let a client-only node participate in model election. If that client is elected for a model it only discovered remotely, it may resolve the model locally and begin an unintended download. MeshLLM #1074 fixes that by keeping client-only nodes out of model election while preserving remote discovery and routing. That fix landed beyond the exact released API line Buzz consumes, so the small change was backported onto the v0.73.1-compatible branch and Buzz now pins its immutable commit ( The packaged client-only test confirmed the result: remote inference succeeded, the node hosted no models, and its Hugging Face cache did not change or create a remote-model directory. |
One textual conflict plus two semantic ones, all from main moving under the PR: - managed_agents/runtime.rs (textual): main's #2974 split runtime.rs into submodules; the PR had factored buffer_contains_identifier out into its own runtime/instance_liveness.rs. Main's split already hosts a byte-identical copy in runtime/instance_reaper.rs, so the resolution takes main's structure wholesale and drops the PR's now-redundant instance_liveness.rs. No behavior change. - mesh_llm/recovery.rs (semantic): main's #1968 made the agent definition authoritative for model/provider, deleting relay_mesh_model_id(record) and changing ensure_relay_mesh_for_record to take a resolved model_id: Option<&str> instead of a record. The watchdog re-arm path now resolves each running record through effective_config::resolve_effective_relay_mesh_model_id (definition -> global fallback, same as spawn/restore) and passes the resolved model id; is_running_relay_mesh_agent becomes running_relay_mesh_model_id, and its unit test is adapted to the new shape (the legacy env-preset records it builds still resolve via the definition-less path). Verified: cargo check/clippy -D warnings/fmt (mesh-llm), desktop lib tests 1767/0 with mesh-llm and 1691/0 without, buzz-agent suite green, tsc clean, JS 3522/0. Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
* origin/main: (22 commits) feat(mobile): bring message actions to desktop parity (block#3070) feat(git): use agent display name as git author name (block#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (block#3128) chore(deps): update react monorepo to v19.2.8 (block#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (block#3135) docs(contributing): set PR expectations and require UI screenshots (block#3140) fix(desktop): read the newest pair-scoped harness log (block#3134) fix(security): authorize kind:9000 role changes in both directions (block#3017) feat(desktop): handle project work from Inbox (block#3117) fix(desktop): clarify identity key button when key exists (block#2357) Restore Goose and Buzz Agent to onboarding harness selection (block#2731) fix(mobile): mitigate message-post delay with optimistic rendering (block#3037) fix(desktop): render rich project work item content (block#3100) chore(deps): update radix-ui-primitives monorepo (block#3063) chore(deps): update dependency @tanstack/react-virtual to v3.14.8 (block#3057) feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery (block#2773) feat(desktop): use collective mesh routing for Auto (block#2825) fix(desktop): strip legacy baked team instructions from stored prompts (block#3035) Refine mobile community switching and discovery (block#2967) feat(agents): lower default agent parallelism from 24 to 10 (block#3038) ...
## Buzz Desktop release v0.5.0 ### Changes since v0.4.26: - feat(invites): add use-limited invite links ([#3141](#3141)) ([`d500c2d5c`](d500c2d)) - fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0 floor ([#3218](#3218)) ([`98a7b1334`](98a7b13)) - fix(desktop): preserve thread anchor through layout reflow ([#3212](#3212)) ([`9810d8545`](9810d85)) - feat(search): parse from:/in:/after:/before: and pass them in the filter ([#2871](#2871)) ([`cb2a265b5`](cb2a265)) - fix(desktop): fetch join policies through native networking ([#2862](#2862)) ([`0019f8076`](0019f80)) - fix(desktop): republish agent identity records when a persona rename propagates ([#2607](#2607)) ([`7ca0bbd94`](7ca0bbd)) - fix(desktop): keep project Inbox previews compact ([#3193](#3193)) ([`de1396050`](de13960)) - Inbox refactor ([#2045](#2045)) ([`2bd4c24b7`](2bd4c24)) - Fix composer selection formatting and drop overlay ([#3172](#3172)) ([`99da5b7eb`](99da5b7)) - Refine pending message status ([#3153](#3153)) ([`75588eaff`](75588ea)) - fix(desktop): recover full local storage on startup ([#3182](#3182)) ([`174c38e4b`](174c38e)) - fix(desktop): keep collapsed table separators out of spoilers ([#3169](#3169)) ([`4d8b676bb`](4d8b676)) - feat(desktop): redesign agent runtime settings ([#3093](#3093)) ([`d98da7389`](d98da73)) - fix(desktop): use forward slashes for git credential.helper on Windows ([#3023](#3023)) ([`899531684`](8995316)) - chore(desktop): add AgentCreationPreview file-size override to unblock main CI ([#3154](#3154)) ([`b92a1f4bf`](b92a1f4)) - fix(desktop): make the test loader work on Windows ([#2758](#2758)) ([`8bb43d519`](8bb43d5)) - fix(desktop): make lint and unit-test gates work on Windows ([#2943](#2943)) ([`545bb46b8`](545bb46)) - feat(desktop): add search to agent emoji picker ([#2630](#2630)) ([`313f793c8`](313f793)) - fix(desktop): keep identity key help dialog readable in dark mode ([#2854](#2854)) ([`be275cfc6`](be275cf)) - feat(acp): title agent sessions from the agent and channel name ([#3028](#3028)) ([`f2fe3b63c`](f2fe3b6)) - feat(git): use agent display name as git author name ([#3040](#3040)) ([`18eef633d`](18eef63)) - fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) ([#3135](#3135)) ([`31e2de196`](31e2de1)) - fix(desktop): read the newest pair-scoped harness log ([#3134](#3134)) ([`654f38490`](654f384)) - feat(desktop): handle project work from Inbox ([#3117](#3117)) ([`c5c4f390b`](c5c4f39)) - fix(desktop): clarify identity key button when key exists ([#2357](#2357)) ([`87b3fcd3c`](87b3fcd)) - Restore Goose and Buzz Agent to onboarding harness selection ([#2731](#2731)) ([`7fc0cc82d`](7fc0cc8)) - fix(desktop): render rich project work item content ([#3100](#3100)) ([`afb272bb7`](afb272b)) - feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery ([#2773](#2773)) ([`95fdf9788`](95fdf97)) - feat(desktop): use collective mesh routing for Auto ([#2825](#2825)) ([`16d4ec335`](16d4ec3)) - fix(desktop): strip legacy baked team instructions from stored prompts ([#3035](#3035)) ([`aee631448`](aee6314)) - feat(agents): lower default agent parallelism from 24 to 10 ([#3038](#3038)) ([`5d8ede446`](5d8ede4)) - Polish community rail and mobile pairing ([#2972](#2972)) ([`e6c90bb7c`](e6c90bb)) - fix(desktop): remove bundled libsystemd from AppImage ([#2353](#2353)) ([`a31fc4d2f`](a31fc4d)) - fix(desktop): make agent definition authoritative for model/provider/prompt ([#1968](#1968)) ([`8c0e8cb16`](8c0e8cb)) - chore(desktop): delete dead persona catalog UI cluster ([#2886](#2886)) ([`8e67cf399`](8e67cf3)) - fix(desktop): surface install failures hidden by curl-pipe exit codes ([#2892](#2892)) ([`166c6655e`](166c665)) - Refactor managed-agent runtime into cohesive modules ([#2974](#2974)) ([`74b63e184`](74b63e1)) - fix(desktop): make Linux AppImage GStreamer work on non-Debian distros ([#2176](#2176)) ([`cc6c4d347`](cc6c4d3)) - refactor(desktop): remove Agent directory section from Agents page ([#2290](#2290)) ([`5d1233e84`](5d1233e)) - fix(desktop): enable arboard Wayland backend so Linux copies reach the Wayland clipboard ([#2904](#2904)) ([`ab7aa8b12`](ab7aa8b)) - fix(desktop): supervise and re-arm relay-mesh runtime ([#2823](#2823)) ([`aa51dab9d`](aa51dab)) - fix(agents): run live Databricks discovery instead of the fallback list ([#2890](#2890)) ([`8eb6e3eb6`](8eb6e3e)) - fix(desktop): retire prepend mode on every reader wheel ([#2913](#2913)) ([`07d0265cf`](07d0265)) - fix(desktop): consolidate prepend scroll correction ([#2855](#2855)) ([`25e7864b3`](25e7864)) - fix(desktop): track concurrent agent turns up to the harness maximum ([#2882](#2882)) ([`20bff5910`](20bff59)) - fix(relay): preserve reconnect backoff ([#2759](#2759)) ([`499c5d349`](499c5d3)) - refactor(relay): expose reconnect timing policy ([#2310](#2310)) ([`2f0041595`](2f00415)) - fix(desktop): clear stale working badges on agent stop/restart ([#2803](#2803)) ([`a64cc71f6`](a64cc71)) - fix(desktop): surface agent rename relay profile sync failure as a warning toast ([#2279](#2279)) ([`5e3d2e484`](5e3d2e4)) - fix(discovery): inject PATH into Codex adapter planning ([#2767](#2767)) ([`6ab3835f3`](6ab3835)) **To release:** merge this PR. The tag and build will happen automatically. Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Uses MeshLLM built-in
meshcollective intelligence / Mixture of Agents when Buzz Auto sees two or more distinct physical models. With zero or one model, Auto remains ordinaryauto. This is an alternative way to improve tool responses, accuracy, and resistance to hallucination when a high-latency distributed mesh contains diverse models.Models and members may come and go: collective routing enables only after stable capacity, drops on confirmed contraction, and can recover later. Mesh-specific failures retry once through ordinary Auto.
This update also pins MeshLLM to a v0.73.1-compatible backport of MeshLLM #1074, so client-only Buzz nodes cannot enter model election or download a remote provider model. Buzz preserves the selected local sharing model and switches an existing client to sharing across a controlled app restart, retaining one runtime and one
:9337/:3131pair per machine.Validation:
just cipasses on the cleaned branch.mesh-llm: 1,721 passed, 0 failed; strict feature Clippy passes.is_client=true,is_host=false, hosted no models, and created no Gemma cache.Builds on the recovery work merged in #2823; this PR does not duplicate it.