block / block/buzz

buzz-acp channel discovery 404s — relay has no GET /api/channels route, and the harness reports the failure as `discovered 0 channel(s)`

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

Description

buzz-acp channel discovery 404s — relay has no GET /api/channels route, and the harness reports the failure as `discovered 0 channel(s)`

## Summary

**Update:** root cause identified in the comments — `GET /api/channels` returns 404 on the relay; the harness reports this as zero channels rather than an error.

On a self-hosted relay built from `main`, managed agents never subscribe to any
channel. The harness logs `discovered 0 channel(s)` and
`no channel subscriptions resolved — agent will sit idle` on every start, even
though the relay itself confirms the agent is a relay member *and* a member of
the channel. @mentions are therefore silently dropped and no agent ever
responds.

The desktop app shows a non-zero channel count for the same agent, so the UI and
the harness's discovery query disagree.

## Environment

- Host: WSL2, Ubuntu 24.04.3 LTS (kernel 6.6.87.2-microsoft-standard-WSL2)
- Buzz: built from source, `main`, cloned 3 August 2026
- Relay: local, `just dev`, `ws://localhost:3000`
- Community: seeded `localhost:3000` at first start
- Agent: `Fizz` — one of the default Welcome Team agents created by onboarding
- Runtime: `claude-agent-acp` v0.64.2 (Claude Code, installed via the app's
harness setup page)
- Agent pubkey: `d00fe41a4d443c47fe7870f665f19a9c9d1e108c3cc4149c75d3c277f4044464`

## Expected

The harness discovers the channels the agent belongs to, subscribes, and
responds to @mentions from its owner.

## Actual

Every start ends with:

```
INFO buzz_acp: connected to relay at ws://127.0.0.1:3000
INFO buzz_acp: subscribed to membership notifications
INFO buzz_acp: owner resolved from BUZZ_AUTH_TAG: c26482b9…fd97
INFO buzz_acp: agent owner: c26482b9…fd97
INFO buzz_acp: relay observer enabled
INFO buzz_acp: discovered 0 channel(s)
WARN buzz_acp: no channel subscriptions resolved — agent will sit idle
INFO buzz_acp: presence set to online
```

The agent pool initialises cleanly (`agent_pool_ready agents=10`), the ACP
handshake succeeds for all ten subprocesses, the relay connection succeeds, and
the owner resolves. Only discovery returns nothing.

## Evidence that the memberships exist

Channel membership — the agent is present with `role: "bot"`:

```
$ buzz-cli channels members --channel adafd400-706c-5c13-bf02-bc2ebb45b1c7
[{"pubkey":"c26482b9…fd97","role":"owner"},
{"pubkey":"d00fe41a…4464","role":"bot"}]
```

Relay membership — added manually via buzz-admin:

```
$ buzz-admin list-members
pubkey role added_by created_at
d00fe41a…4464 member - 2026-08-03T12:30:11Z
```

Channel announcement events are present:

```
$ buzz-admin reconcile-channels
Reconciled 0 channels (3 already had events, 3 total).
```

Desktop UI: the agent's profile panel shows `Channels 2`.

## Steps to reproduce

1. Clone `main`, `just setup && just build`, `just dev`.
2. Complete onboarding: create identity, install the Claude Code ACP adapter,
join `ws://localhost:3000` via **Join a community**, accept the default
Welcome Team agents.
3. Start Fizz from the Agents panel.
4. Open the Harness Log.

Observed: `discovered 0 channel(s)` on every start.

## Things tried, each followed by a full agent restart

| Action | Result |
|---|---|
| Restart agent alone (×3) | `discovered 0` |
| Add agent to public `#general` via the desktop UI | `discovered 0` |
| `buzz-admin reconcile-channels` | 3 channels already had events; `discovered 0` |
| Set `BUZZ_RELAY_PRIVATE_KEY`, restart relay, `buzz-admin add-member` | `discovered 0` |

Timing was ruled out: relay membership was written at `12:30:11Z` and the
harness restarted at `12:30:54Z`, 43 seconds later, still reporting 0.

## Notes

- `respond_to=owner-only` is the default and the owner resolves correctly from
`BUZZ_AUTH_TAG`, so the author gate is not the cause — discovery fails before
any event reaches it.
- The relay was initially running on the hardcoded dev keypair. Setting a stable
`BUZZ_RELAY_PRIVATE_KEY` was required before `buzz-admin add-member` would run
at all, but did not change the outcome.
- The gap between the UI's channel count and the harness's discovery result
suggests the two read membership from different places.

## Related

Not a duplicate of #2270 (agents deaf to untagged thread replies) or #1743
(mentions lost when the agent is offline) — in both of those the agent has
resolved channel subscriptions. Here it has none.

Contributor guide

Open the contributing guide

Research direction

Start at the relay HTTP API entry point for GET /api/channels and the harness channel-discovery call, then compare them with the desktop app's channel-count path. Done means the relay returns the agent's channel memberships and the harness reports and subscribes to them instead of treating discovery as zero.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.