9dfa06ffee
Docker image / Build (linux/amd64) (push) Has been cancelled
Docker image / Build (linux/arm64) (push) Has been cancelled
Docker image / Merge release multi-arch manifest (push) Has been cancelled
Docker image / Merge debug multi-arch manifest (push) Has been cancelled
Docker image / Build public push gateway (linux/amd64) (push) Has been cancelled
Docker image / Build public push gateway (linux/arm64) (push) Has been cancelled
Docker image / Publish public push gateway image (push) Has been cancelled
Sprig image / Build (linux/amd64) (push) Has been cancelled
Sprig image / Build (linux/arm64) (push) Has been cancelled
Sprig image / Merge multi-arch manifest (push) Has been cancelled
Harbor Buzz Orchestra / Python tests and lint (push) Has been cancelled
CI / Detect Changed Paths (push) Has been cancelled
CI / Rust Lint (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Desktop Core (push) Has been cancelled
CI / Desktop Smoke E2E (1) (push) Has been cancelled
CI / Desktop Smoke E2E (2) (push) Has been cancelled
CI / Desktop Smoke E2E (3) (push) Has been cancelled
CI / Desktop Smoke E2E (4) (push) Has been cancelled
CI / Desktop (push) Has been cancelled
CI / Desktop E2E Relay (push) Has been cancelled
CI / Desktop E2E Integration (1/2) (push) Has been cancelled
CI / Desktop E2E Integration (2/2) (push) Has been cancelled
CI / Desktop E2E Integration (push) Has been cancelled
CI / Backend Integration (relay e2e) (push) Has been cancelled
CI / Relay E2E (push) Has been cancelled
CI / Web (push) Has been cancelled
CI / Mobile (push) Has been cancelled
CI / Security (push) Has been cancelled
CI / Dead Token Reference Guard (push) Has been cancelled
CI / Server Cross-Compile (aarch64-unknown-linux-musl) (push) Has been cancelled
CI / Server Cross-Compile (x86_64-unknown-linux-musl) (push) Has been cancelled
CI / Windows Rust (x86_64-pc-windows-msvc) (push) Has been cancelled
CI / Desktop Build (macOS) (push) Has been cancelled
helm chart / lint + unittest + render matrix (push) Has been cancelled
helm chart / install on kind (gated) (push) Has been cancelled
helm chart / publish chart to GHCR (push) Has been cancelled
Mesh Lifecycle / Relay-Driven Mesh Lifecycle Smoke (push) Has been cancelled
Sprig / Build (aarch64-unknown-linux-musl) (push) Has been cancelled
Sprig / Build (x86_64-unknown-linux-musl) (push) Has been cancelled
Sprig / Publish rolling release (push) Has been cancelled
Sprig / Publish tagged release (push) Has been cancelled
Signed-off-by: cls_宁波本机 <908705107@qq.com>
168 lines
6.7 KiB
Markdown
168 lines
6.7 KiB
Markdown
# Buzz shared compute: local GUI verification
|
|
|
|
This runbook verifies the actual desktop path used by the built-in **Fizz** agent:
|
|
|
|
`Buzz Desktop → buzz-acp → buzz-agent → MeshLLM SDK → local/remote compute`
|
|
|
|
It does not use a substitute agent harness.
|
|
|
|
## Before starting
|
|
|
|
Run from the `block/buzz` repository root on the mesh-enabled branch.
|
|
|
|
For a completely fresh, deterministic local state, use:
|
|
|
|
```bash
|
|
. ./bin/activate-hermit
|
|
just mesh-dev-fresh
|
|
```
|
|
|
|
This removes development app data, the development keyring entry,
|
|
`~/.buzz-dev`, and local Docker volumes; it preserves the installed Buzz app's
|
|
data, production keyring, and `~/.buzz`. The first dev page load also clears
|
|
only that dev server origin's WebKit storage, so saved fields from an earlier
|
|
run cannot leak into the fresh state. It then seeds local channels and starts
|
|
the mesh-enabled desktop with the repository's public Tyler test identity.
|
|
That identity is a fixture and must never be pointed at staging or production.
|
|
|
|
If using `mesh-dev-fresh`, the clean window opens at **Welcome to Buzz**. Join
|
|
the seeded local community before continuing:
|
|
|
|
1. Click **Join a community**.
|
|
2. Use any local name, such as **Local Buzz**.
|
|
3. Set **Community URL** to `ws://localhost:3000` and join.
|
|
4. Complete the short profile setup if it appears.
|
|
|
|
The recipe already supplied the repository's public test identity and seeded
|
|
the local channels. Do not import or generate another key. Continue at **Share
|
|
this machine** below.
|
|
|
|
Free the development ports if a previous run was interrupted:
|
|
|
|
```bash
|
|
lsof -nP -iTCP:3000 -iTCP:8080 -iTCP:9102 -iTCP:9337 -iTCP:3131
|
|
```
|
|
|
|
Stop only stale Buzz/MeshLLM processes shown by that command. Do not leave a
|
|
standalone `mesh-llm` process using `9337` or `3131`; the desktop owns those
|
|
ports during this test.
|
|
|
|
## 1. Launch the mesh-enabled desktop
|
|
|
|
```bash
|
|
. ./bin/activate-hermit
|
|
just mesh=1 dev
|
|
```
|
|
|
|
Keep that terminal open. The first run may build/install the native runtime and
|
|
take several minutes. Wait for the Buzz window to open and for the terminal to
|
|
stop printing build progress.
|
|
|
|
Using plain `just dev` is not sufficient: the Compute UI and embedded MeshLLM
|
|
runtime are behind the `mesh-llm` feature.
|
|
|
|
## 2. Share this machine
|
|
|
|
1. Open **Settings**.
|
|
2. Select **Compute**.
|
|
3. Under **Share compute**, choose a suggested model.
|
|
- On a 16 GB Apple Silicon machine, use a suggested Qwen3.5 4B quantized
|
|
model when available.
|
|
- `unsloth/Qwen3.5-4B-GGUF:Q4_K_M` is the model used by the hardware proof.
|
|
- Do not use a sub-1B model for the channel-reply proof. It can prove that
|
|
inference is reachable while still failing the agent's long prompt and
|
|
required message-send tool call.
|
|
4. Turn on **Share this machine**.
|
|
5. Wait until the card says it is sharing/running. Do not start Fizz while the
|
|
card says downloading, preparing, or starting.
|
|
|
|
Buzz may download the model on first use. The model picker ranks models for the
|
|
current hardware; avoid entering a model the card marks too large.
|
|
|
|
## 3. Make shared compute the agent default
|
|
|
|
1. Open **Agents** from the left sidebar.
|
|
2. In **Agent defaults**, set **Default LLM provider** to
|
|
**Buzz shared compute**.
|
|
3. Set **Default model** to **Default (auto)**.
|
|
4. Click **Save defaults** and wait for **Saved**.
|
|
|
|
Fizz has no pinned runtime/provider/model, so it inherits these defaults and
|
|
resolves to the bundled `buzz-agent`. No API key is required.
|
|
|
|
## 4. Start the real Fizz path
|
|
|
|
1. Find the **Fizz** card on the Agents screen.
|
|
2. If Fizz is stopped, click the small play badge over its avatar. If it is
|
|
running, the badge is a green status dot instead of a stop control.
|
|
3. Wait for its runtime indicator to become active.
|
|
4. Add Fizz to a channel if it is not already a channel member.
|
|
5. In that channel, send:
|
|
|
|
```text
|
|
@Fizz Reply exactly: FIZZ_MESH_OK
|
|
```
|
|
|
|
6. Confirm that Fizz replies `FIZZ_MESH_OK` in the channel.
|
|
|
|
That channel response is the end-to-end proof. A green Compute card alone proves
|
|
only model serving; it does not prove the Fizz harness and provider inheritance.
|
|
|
|
To stop a running agent, click the body/name of its card to open its profile,
|
|
then click **Stop** near the top. The green avatar badge is status-only while the
|
|
agent is running. Once stopped, the profile action becomes **Respawn** and the
|
|
avatar badge becomes a play button.
|
|
|
|
To create a separate test agent, choose **New agent → New agent**, use
|
|
**buzz-agent** as the runtime, **Buzz shared compute** as the LLM provider,
|
|
**Default (auto)** as the model, and **This computer** under **Run on**. Shared
|
|
compute is an LLM provider; do not select a remote compute backend as the run
|
|
location merely because its name mentions mesh.
|
|
|
|
## 5. Optional diagnostics
|
|
|
|
While Buzz is running:
|
|
|
|
```bash
|
|
# The desktop should own both ports.
|
|
lsof -nP -iTCP:9337 -iTCP:3131
|
|
|
|
# The embedded OpenAI-compatible ingress should advertise the model.
|
|
curl -sS http://127.0.0.1:9337/v1/models | jq '.data[].id'
|
|
|
|
# Fizz should resolve through the real managed-agent subprocesses.
|
|
ps -eo pid,ppid,command | grep -E '[b]uzz-(desktop|acp|agent)'
|
|
```
|
|
|
|
If Fizz fails, open its runtime details from the Agents screen first. Common
|
|
causes are:
|
|
|
|
- launched with `just dev` instead of `just mesh=1 dev`;
|
|
- a stale process owns `9337`/`3131`;
|
|
- the model is still downloading or preparing;
|
|
- Fizz is not a member of the channel;
|
|
- defaults were changed but not saved;
|
|
- no current Buzz membership snapshot is available (admission fails closed).
|
|
|
|
## Security boundary
|
|
|
|
Buzz publishes member-signed discovery notes through an ordinary relay-supported
|
|
NIP-51 event. The note includes a MeshLLM-key signature binding the member to the
|
|
advertised MeshLLM node identity, plus a second signature over the exact endpoint
|
|
tokens in the note. Current Buzz membership controls which node identities are
|
|
admitted. A serving target is selectable only when its endpoint signature is
|
|
valid, its invite token decodes as a bounded Iroh endpoint, and every advertised
|
|
relay URL matches this machine's locally configured Iroh relay policy.
|
|
|
|
`BUZZ_MESH_IROH_RELAYS` defaults to Iroh's production relay set. Set it to `0`
|
|
for direct QUIC only, or to a comma-separated HTTPS allowlist for custom relays.
|
|
Plain HTTP is accepted only for loopback development relays. Remote status notes
|
|
cannot expand this local allowlist.
|
|
|
|
MeshLLM—not the Buzz relay—carries inference over direct QUIC or its encrypted
|
|
iroh relays and enforces the owner allowlist. The dependency is pinned to the
|
|
post-v0.72.2 admission fix that prevents a non-member with a leaked invite token
|
|
from using passive inference streams. MeshLLM v0.73.1 still performs its owner
|
|
check during gossip after transport connection; authenticating before any gossip
|
|
is an upstream protocol change and is not claimed by the Buzz-side checks above.
|