block / block/buzz

Agents tab is not community-scoped: card, profile name and public key belong to three different entities — and per-agent settings land on the wrong instance

Open
#5,128 9 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

**Environment:** Buzz Desktop on macOS (a Windows machine is paired under the same owner identity). Two self-hosted communities: `leevia.communities.buzz.xyz` and `knowhow.communities.buzz.xyz`. Builtin agents Fizz / Honey / Bumble, custom agents Nemo and Oracle.

Relay-side state is correct throughout (`buzz channels members` and `buzz users presence` agree with expectations). Everything below is local to the desktop client.

## Identity model observed

On this Mac each **builtin** agent has one identity **per community**, created at different times:

| Persona | Mac · leevia | Mac · knowhow |
|---|---|---|
| Fizz | `bf667ab3…` (created 2026-07-30T22:23Z) | `9dd15fbb…` (created 2026-08-03T20:42Z) |
| Honey | `612eeaae…` | `56769d9e…` |
| Bumble | `f74495db…` | `0bb9f108…` |

Custom agents (Nemo, Oracle) instead reuse **one** key across both communities.

## 1. The Agents tab renders the same list in every community

Screenshots taken minutes apart, switching only the active community: the agent cards are identical (`Fizz PC`, `Honey PC`, `Bumble PC`). Only the channel list in the sidebar changes. There is no visual cue anywhere that these cards belong to a specific community.

## 2. Card name, profile name and public key are three different entities

Opening the card labelled **`Fizz PC`**:

- profile heading shows **`Fizz Mac`**
- `Public key` shows **`9dd15fbb…9dd8`** — the **knowhow** instance
- and it shows **the same `9dd15fbb…9dd8` while the active community is `leevia`**, where this persona's instance is `bf667ab3…` and its `buzz-acp` process is running.

Same defect on a custom agent: the card labelled **`Wally PC`** opens a profile titled **`Nemo Mac`** with key `758f820f…44b0`. (`Wally` is an agent created on the *Windows* machine; `Nemo Mac` is a different agent that only exists on the Mac. The two got merged into one persona record — see block/buzz#3204 for the sync side of this.)

The `PC` suffix comes from the local store: **persona** records (no `pubkey`) are named `Fizz PC` / `Honey PC` / `Bumble PC` / `Wally PC`, while **instance** records are named `Fizz Mac` / `Honey Mac` / `Bumble Mac` / `Nemo Mac`. The card renders the persona name, the profile renders the instance name.

## 3. `Instances (2)` is the only place both identities appear — and it does not distinguish them

The profile has an `Instances 2` row whose two entries are labelled **identically** and differ only by `Current` / `Stopped`. No community, no machine, no key fragment. This is the only control from which the owner can act on a specific instance, and it gives him nothing to choose by.

## 4. Consequence, reproduced today: a per-agent setting landed on the wrong instance

The owner set "start on app launch" for the three agents he actually works with (the **leevia** ones). Reading `managed-agents.json` right after:

```
Fizz · knowhow 9dd15fbb start_on_app_launch=True updated 2026-08-07T00:49:15Z
Honey · knowhow 56769d9e start_on_app_launch=True updated 2026-08-07T00:49:10Z
Bumble· knowhow 0bb9f108 start_on_app_launch=True updated 2026-08-07T00:49:02Z
Fizz · leevia bf667ab3 start_on_app_launch=False (untouched)
Honey · leevia 612eeaae start_on_app_launch=False (untouched)
Bumble· leevia f74495db start_on_app_launch=False (untouched)
```

The flag was written to the three **knowhow** instances. The owner had no way to notice: the UI showed him the cards he expected.

Net effect if unnoticed: on the next app launch the client starts the three agents that are **not** members of any working channel, and leaves the three that are — which is exactly the incident that started this: on 2026-08-06 two agents silently failed to come back and no surface reported it.

## What we need

1. **Scope the Agents tab to the active community** (or label each card with its community/machine). Requested previously on 2026-08-03; this issue is the visual evidence.
2. **Make the profile show the instance of the active context** — heading, public key and settings must refer to the same entity.
3. **Label instances** in the `Instances` list with community and machine, not just `Current` / `Stopped`.
4. **Apply per-agent settings to the instance the user is looking at**, and show which one was written.
5. Product-level: let an agent be **bound to a machine + community** so the client does not create or display cross-community instances. Desired setup here: knowhow agents live on the Windows machine, leevia agents on the Mac.

## 5. The `Auto-start` toggle lives at profile level and is bound to the wrong key

The agent's overflow menu offers: `Auto-start` (toggle), `Duplicate`, `Export`, `Archive agent`, `Delete agent`. There is no per-instance control in that menu, and the profile it belongs to is the one showing `9dd15fbb…9dd8` — the knowhow instance. That is why the flag in section 4 landed where it did: the toggle applies to whichever instance the profile decided to show, which is not the one bound to the active community.

The `Instances (2)` list shows both entries labelled identically (`Fizz Mac`), tagged `Current` and `Running` in one screenshot and `Current` and `Stopped` in another taken minutes earlier — with both `buzz-acp` processes alive in `ps` the whole time. Neither tag identifies the community or the machine.

Also worth noting for a user with two machines: the only destructive-sounding options offered are `Archive agent` and `Delete agent`, both worded at **agent** level while the entity actually being displayed is an **instance**. It is not discoverable whether archiving would remove one identity or both.

## Evidence

Four screenshots of the Agents tab (same session, switching only the active community) will be attached to this issue by the reporter. All identity/state claims above were cross-checked against the local store `~/Library/Application Support/xyz.block.buzz.app/agents/managed-agents.json`, the runtime receipts in `agents/agent-pids/`, live `ps` output, and the relay itself via `buzz channels members` / `buzz users presence`.

Related: #3204 (mention picker built from the local agent registry instead of channel members) — same underlying assumption that the local agent list is the source of truth for a community-scoped view.

Contributor guide

Open the contributing guide

Research direction

Start with the Agents tab and its Instances (2) list, then compare the displayed context with managed-agents.json and agents/agent-pids/. Reproduce the issue while switching between the two communities and verify which instance receives the Auto-start change. Done means cards, profiles, labels, and settings consistently identify and target the active community and machine instance.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.