Skip to content

fix(desktop): ingest remote-owned channel agents - #4964

Open
cmyk wants to merge 5 commits into
block:mainfrom
Peakhunter:fix/remote-owned-channel-agent-ingestion-current
Open

fix(desktop): ingest remote-owned channel agents#4964
cmyk wants to merge 5 commits into
block:mainfrom
Peakhunter:fix/remote-owned-channel-agent-ingestion-current

Conversation

@cmyk

@cmyk cmyk commented Aug 5, 2026

Copy link
Copy Markdown

What this fixes

Hermes supports Buzz through its documented integration option 3: the native Buzz Gateway platform. In that setup Hermes runs remotely as a normal Hermes Gateway — not as a process launched or managed by Buzz Desktop. This keeps Hermes's full tools, memory, sessions, skills, approvals, and cron behaviour while letting people talk to it from Buzz.

That remote architecture exposed a gap in Buzz Desktop. The Gateway identity could join a channel, exchange messages, and publish encrypted Activity, but Desktop primarily recognized agents from its local managed-agent list or relay directory. A remote-owned Gateway agent could therefore work in the channel while still being omitted from observer ingestion and its profile Channels section, and completed tray activity could fall back to Agent .

This PR is the Buzz Desktop part of the end-to-end integration. It discovers agent candidates from authoritative channel membership, but trusts them only when their relay profile says they are an agent and names the current Buzz user as owner. It then includes that verified remote-owned agent in Activity ingestion, profile channel projection, and tray-name hydration—without pretending that Desktop manages the remote Hermes process.

Hermes native Buzz Gateway (option 3)
  ├─ ordinary signed Buzz messages
  └─ encrypted owner-only Activity events
                    │
                    ▼
              Buzz relay
                    │
                    ▼
              Buzz Desktop
       Activity · profile Channels · tray Recent

Companion work

The complete path spans three components:

Related but not a dependency of this ingestion fix: merged #4913, allow shared agent mentions, supplies the channel-authorized @Hermes autocomplete/mention path used during live acceptance. The older competing mention implementation #4602 is superseded by #4913.

The native Gateway's broader messaging reliability work is tracked separately in Hermes PRs NousResearch/hermes-agent#74823 (newly joined channel discovery) and NousResearch/hermes-agent#75049 (active-thread mention policy). Those improve option-3 operation but are not code dependencies of this Desktop patch.

Summary

  • ingest observer events from remote-owned agents discovered through authoritative channel membership, while requiring an agent profile owned by the current user
  • batch and cache profile hydration so large member sets stay within relay query limits
  • show authoritative channel membership in remote-agent profiles and hydrate human-readable names in the macOS tray's Recent section
  • keep the native tray payload narrow by removing the agent pubkey after the frontend resolves the display label
  • cover ownership filtering, query chunking, channel projection, tray hydration, and the live profile flow with regression tests

Related Issue

N/A — no matching open issue found.

Before & After Screenshots

Before: a remote-owned channel agent could be absent from observer ingestion and its profile Channels section; completed tray activity could retain an Agent <pubkey> fallback.

After — remote-owned Hermes profile lists its authoritative channels:
Screenshot 2026-08-05 at 21 43 18 Remote-owned-agent ingestion:tray PR profile pane hermes channles

After — authoritative Channel Members shows the human owner and Hermes:
Screenshot 2026-08-05 at 21 47 01 Remote-owned-agent ingestion:tray PR Channel members

After — Hermes activity reaches the Activity pane and executes the terminal tool:
Screenshot 2026-08-05 at 22 07 11 Remote-owned-agent ingestion:tray PR activity

After — the channel receives the exact terminal result:
Screenshot 2026-08-05 at 22 14 41 Remote-owned-agent ingestion:tray PR channel response

After — the macOS menu-bar Recent section shows Hermes rather than a pubkey fallback:
Remote-owned-agent ingestion:tray PR Menu bar showing recent Hermes

Validation

Current-upstream candidate: a847f38886e9db0829470847ab593a39ddb87d33

  • pnpm --dir desktop test — 4,363 passed
  • pnpm --dir desktop typecheck
  • Biome check on all changed Desktop files
  • pnpm --dir desktop check:file-sizes
  • pnpm --dir desktop build:e2e
  • focused Playwright profile regression — 1 passed
  • git diff --check origin/main...HEAD
  • DCO trailers present on all five commits
  • added-line credential scan — clean

Manual UI acceptance used acceptance-only SHA 2508b4f3, which combined the then-current version of this patch with the separate mention-autocomplete candidate. The screenshots above exercise only this PR's remote-agent ingestion, profile, Activity, channel-response, and tray behavior. This candidate was rebased through current main at ccdaa161; its stable aggregate patch ID exactly matches the reviewed candidate, and upstream changed none of this patch's ten touched paths. After the docs-only rebase, the 21 focused unit tests, typecheck, Biome, file-size gate, diff check, and focused Playwright regression were rerun successfully.

cmyk and others added 5 commits August 5, 2026 20:55
Signed-off-by: Schrödinger’s Cat <62413+cmyk@users.noreply.github.com>
Signed-off-by: Reinhold <310554180+reinhold-ph@users.noreply.github.com>
Signed-off-by: Reinhold <310554180+reinhold-ph@users.noreply.github.com>
Signed-off-by: Reinhold <310554180+reinhold-ph@users.noreply.github.com>
Signed-off-by: Reinhold <310554180+reinhold-ph@users.noreply.github.com>
@cmyk

cmyk commented Aug 6, 2026

Copy link
Copy Markdown
Author

Cross-component release coordination needed

This PR is independently reviewable, but the complete remote Hermes experience is release-coupled across Hermes, the Buzz relay, and Buzz Desktop:

User-visible capability Required change Current status
Mention an externally hosted Hermes agent #4913 included in the shipped Desktop build Merged; inclusion in the currently distributed 0.5.5 build is not identifiable from the version
Preserve owner authorization for direct-member Activity #4616 deployed on the relay Open
Emit native remote-turn Activity NousResearch/hermes-agent#80217 Open
Render remote Activity, profile Channels, and tray identity This PR, #4964 Open
Discover channels joined after Gateway startup NousResearch/hermes-agent#74823 Open
Apply thread-aware mention policy NousResearch/hermes-agent#75049 Open

These are mostly not source-level merge dependencies: each change can be reviewed and merged independently. They are, however, end-to-end release dependencies. A user cannot verify the complete feature until compatible revisions are shipped together.

Could maintainers please help establish a coordinated acceptance target by confirming:

  1. the exact Desktop build commit that contains merged fix(desktop): allow shared agent mentions #4913;
  2. review/merge disposition for relay fix(auth): preserve NIP-OA owner for direct members #4616 and Desktop fix(desktop): ingest remote-owned channel agents #4964;
  3. when fix(auth): preserve NIP-OA owner for direct members #4616 reaches the hosted relay;
  4. the first uniquely identifiable Desktop build containing fix(desktop): allow shared agent mentions #4913 and, once merged, fix(desktop): ingest remote-owned channel agents #4964;
  5. an end-to-end hosted-service acceptance run after those deployments.

The PR description already documents the architecture and contains UI evidence from the integrated acceptance candidate. What is missing now is release provenance and coordinated rollout, not another implementation branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants