Repository navigation
test(mesh): verify remote-only inference in CPU smoke - #1237
Merged
Merged
Conversation
Co-authored-by: Michael Neale <[email protected]> Signed-off-by: JimCodey <fab731feb32f528977dec0f8e40b557d552d1c795ae5c8d75e7dc071c2b05aa0@meshllm.communities.buzz.xyz>
Co-authored-by: Michael Neale <[email protected]> Signed-off-by: JimCodey <fab731feb32f528977dec0f8e40b557d552d1c795ae5c8d75e7dc071c2b05aa0@meshllm.communities.buzz.xyz>
micspiral
pushed a commit
that referenced
this pull request
Oct 16, 2026
Signed-off-by: Brody <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz>
thomaspblock
added a commit
that referenced
this pull request
Nov 6, 2026
## Summary This adds the Community Mesh plugin to Buzz: shared compute plus Mesh helper agents. The plugin is on by default. Sharing your machine's compute is opt-in. Signing keys stay in the host. The goal is parity with block/buzz desktop. Anything more is a bonus. Originating Buzz channel: buzz://channel/53a55c4d-2b96-40b1-a6d4-8de855b2a328 <img width="341" height="340" alt="image" src="https://github.com/user-attachments/assets/2804d969-8a78-4271-a449-7a5bfd518f98" /> <img width="326" height="304" alt="image" src="https://github.com/user-attachments/assets/9c1bad6f-1a9d-407c-a57e-68a6408c582b" /> <img width="1132" height="742" alt="image" src="https://github.com/user-attachments/assets/421fc20b-ce3f-42af-b89c-fc1a63596ce8" /> <img width="882" height="708" alt="image" src="https://github.com/user-attachments/assets/9e3f58ff-45ba-4bea-96c7-098be325ebf7" /> ## What's in it - **Shared compute:** a Settings page, model controls, the floating Compute widget, the native mesh lifecycle, and authenticated community discovery. - **Auto model pick:** the memory cap is ¼ of RAM. Discrete GPUs are rated by their own VRAM. Auto picks the largest Gemma 4 that fits. - **Mesh agent type:** runs on the app's bundled goose through the Goose plugin (`meshGoose.ts`), pointed at the mesh lease route. There is no second agent runtime. - **Chat mode:** answers only, no tools. - **Agent mode:** shell, skills and Buzz tools. The serving member's model directs those tools on the owner's machine. - Only the owner can trigger a turn. Messages from others can still appear as context. - **Windows:** the workspace path is resolved through `host.files`, with no `pwd` or `base64`. The Media converter preset has Windows steps. - Replaces #580 and includes #1237 (cross-node inference test). ## Build and trust model (same as block/buzz desktop) - Mesh is compiled into every build, including release. There is no cargo feature. - The runtime is not bundled. The SDK downloads it from the Mesh-LLM release and checks the manifest's SHA-256. - The macOS `disable-library-validation` entitlement matches classic Buzz. - The owner key is mesh-llm's default keystore, the same one block/buzz uses. - Loopback ports 19337/13131 are the same defaults as block/buzz. They can be overridden by env var. - The Compute widget is an opaque window. Mesh does not enable Tauri `unstable` or `macos-private-api`. - `rusqlite` is 0.40 app-wide, forced by the SDK's log store. ## Dependencies - The SDK is pinned to the 0.78.1 bridge revision `5d19ca69403f5d3e46ddb82ce83164495fa88383`, including the virtual-chat routing and peer-forwarding fixes. Swap it for an upstream release when one includes both. ## Latest UI adjustments - Activity values use the same body text size as the hardware value. - Nested compute cards have smaller, proportional corners. - The sharing switch inherits the standard theme colors; the local green override is removed. Focused component checks and design guards passed. The exact UI patch was visually checked in the installed macOS Provider on its existing source baseline; this does not replace packaged acceptance of the complete current PR head. ## Open - What to do when another mesh-llm already holds the ports: readiness can adopt the other node's listener. We need a design that Jimmy signs off on. - Xet redirect (`missing X-Repo-Commit`) needs Mesh-LLM/mesh-llm#2579 plus an SDK `mesh-llm-hf-hub` bump. - Slow agent turns on Windows/CUDA (about 4 tok/s vs 17 tok/s in chat) haven't been measured yet. - Packaged-app and human acceptance at the final head. Draft. Detailed validation history is in the PR comments. --------- Signed-off-by: Darioz <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz> Signed-off-by: Virgile-pct <[email protected]> Signed-off-by: Thomas Petersen <[email protected]> Signed-off-by: JimCodey <fab731feb32f528977dec0f8e40b557d552d1c795ae5c8d75e7dc071c2b05aa0@meshllm.communities.buzz.xyz> Signed-off-by: Brody <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz> Signed-off-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz> Signed-off-by: Codex <[email protected]> Signed-off-by: Wario <dfbe041fec697424249363266ca53a7bdc62402afcd7ce994528f78720ae05b3@meshllm.communities.buzz.xyz> Signed-off-by: Michael Neale <[email protected]> Co-authored-by: Darioz <0c30d6330cb88c7b0519e2630b057ef0c584ad3f0be0157d9d2fdf0c913780bd@meshllm.communities.buzz.xyz> Co-authored-by: Jimmy <1fe240cd1a8cf775f6f3060f115e5a303181f3abf28ad4cb0c2515f4a02b36a8@meshllm.communities.buzz.xyz> Co-authored-by: Alessandro Joabar <[email protected]> Co-authored-by: Thinker <75d8a808fa21bb8d1812e080cf471db601c6e8e6a62dcd516d37531e83a7bb77@meshllm.communities.buzz.xyz> Co-authored-by: JimCodey <fab731feb32f528977dec0f8e40b557d552d1c795ae5c8d75e7dc071c2b05aa0@meshllm.communities.buzz.xyz> Co-authored-by: DrCode <37819e35160e30daeb63700e9e6d660aff8e60a98807f0f50eb2611707e6e649@meshllm.communities.buzz.xyz> Co-authored-by: Virgile-pct <[email protected]> Co-authored-by: Thomas Petersen <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]> Co-authored-by: scammed <02dea9c912230dcd8882fe78a4a16a51a3384898ca3166e23cd89fbd92d39ef6@meshllm.communities.buzz.xyz> Co-authored-by: Michael Neale <[email protected]> Co-authored-by: Michael Neale <[email protected]> Co-authored-by: Codex <[email protected]> Co-authored-by: Wario <dfbe041fec697424249363266ca53a7bdc62402afcd7ce994528f78720ae05b3@meshllm.communities.buzz.xyz> Co-authored-by: Gu <28ffe54566d89ac40a9306adac7fdf81e713c2aa7c3bda4fd16977365f27c196@buzz.block.builderlab.xyz> Co-authored-by: Deutsch <28ff7d62bb7dafcd3cda8a3291ca9096df9ed3176dcb810880d16224f71777a5@buzz.block.builderlab.xyz>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on #941 (
mesh-tool-relay), with no production routing changes. Test-only remote inference coverage using two real isolated processes and Buzz's Lifecycle/config owners. The provider alone receives a checksum-pinned SmolLM2-135M GGUF. The consumer has an empty isolated home, no hosted model, private discovery and explicit owner allowlists.Checks: exact peer model visibility; nonempty
model=meshcompletion via consumer; provider locally served request count increases; consumer remains model-less with zero locally served requests; a fresh completion fails after provider shutdown. Omit-join negative control fails readiness rather than falsely passing.Originating conversation:
buzz://message?channel=53a55c4d-2b96-40b1-a6d4-8de855b2a328&id=f8cf59f766a929af44a5b38d6b7a0227ca469a066d5d7a8f0c5beaa55c747af6
Ownership and invocation
Worker, Python driver and instructions are colocated under
crates/mesh-compute/tests/cross_node/. Explicit Cargo test targetcross_node_workerhasharness = false,test = false, and requiresmesh. Ordinary crate tests do not execute the interactive worker. The driver explicitly builds it withcargo test --test cross_node_worker --no-run --message-format=jsonand resolves the executable from Cargo JSON, not a guessed hashed path. No public example or shipped binary added. Root scripts retains only a thin Linux runtime/CI entry point.Run
scripts/ci-mesh-cross-node.shon Linux x86-64, or the manual native command incrates/mesh-compute/tests/cross_node/README.md. Working means a nonempty completion, provider serving evidence, failed post-shutdown request and normal child exits.Verified evidence
Head: 20f3245.
Actual added CI overhead
Single separate Ubuntu job, path-filtered, 20-minute job limit; smoke has 10-minute outer bound. No required-check policy change.
Current run had no Rust cache hit (PR jobs do not save that cache). Expect 7–10 added runner-minutes on matching PR runs based on these samples, not only the 20–30s smoke cost. This is two samples, not a latency guarantee; warm Rust-cache performance is unmeasured. Existing CI runs in parallel, so added runner minutes are not necessarily added PR critical-path time. No existing suites/engines/assertions removed to achieve these figures.
Old block/buzz baseline run 38819428902: 25m05s total, 23m24s builds, ~46s live smoke with six sequential checkpoints. Previous successful baseline job:24m23s. This is a cost comparison of different coverage, not an apples-to-apples speedup. Old baseline built relay/admin and started Postgres/Redis/MinIO; this job does not.
Coverage boundaries / readiness
This restores the old serve/client remote inference proof, not full relay-lifecycle parity. It does not prove signed relay discovery, membership-driven joining, stranger denial, the plugin's leased gateway/GDK agent loop, desktop packaging or cross-host NAT/firewall behavior. Real QUIC peers are separate processes on one runner.
Initial read-only agent review completed; follow-up target/driver review requested. Separate self-review verified current hosted ordinary-test exclusion and explicit target resolution via successful execution. Broad repository CI still pending at latest inspection; human acceptance not yet performed, so retain draft. No
buzz-review-completedattestation.Cleanup: owned native children gone, temporary homes removed; task-local cargo clean reclaimed 7.6GiB after final local checks. Unmerged worktree retained. No live app/node was stopped.