Skip to content
This repository was archived by the owner on Aug 17, 2026. It is now read-only.

docs: define evaOS Teams Buzz and Hermes architecture - #16

Closed
100yenadmin wants to merge 1 commit into
electric/mainfrom
docs/evaos-teams-architecture-20260723
Closed

docs: define evaOS Teams Buzz and Hermes architecture#16
100yenadmin wants to merge 1 commit into
electric/mainfrom
docs/evaos-teams-architecture-20260723

Conversation

@100yenadmin

Copy link
Copy Markdown
Member

Summary

  • define the thin-fork architecture for a branded evaOS Teams client on Buzz
  • keep Supabase as business authority and VM-hosted Hermes as agent runtime
  • specify identity/key custody, derived room grants, relay policy, ACP
    continuity, revocation, Mac Access reuse, packaging, rollout, and rollback
  • link three milestones, 15 Buzz issues, and the dashboard/Golden/support-control
    work packets
  • include a durable successor contract and issue-by-issue execution protocol

Review

Three bounded planning reviews were completed:

  1. architecture/source-of-truth consistency;
  2. security/failure/tenancy/secret/license/rollback;
  3. successor executability and tracker completeness.

Material corrections from review include:

  • customer business owners are relay members, not native relay owners;
  • a separate Electric Sheep control identity is the sole managed relay owner;
  • the agent bridge requires both derived channel and author allowlists;
  • managed communities require relay-enforced control-plane room membership;
  • Buzz cannot override Hermes memory/model/provider/permission authority;
  • reconciliation uses Supabase Vault plus the existing pg_net/Edge Function
    pattern and a maximum-10-second recovery sweep.

Validation

  • git diff --cached --check
  • source seams inspected in Buzz v0.4.23
  • live GitHub milestone/issue graph verified
  • issue bodies checked for outcome, acceptance, and stop conditions

Proof boundary

This is an approximately 95%-confidence planning and handoff artifact. It does
not implement or prove a relay, customer login, Hermes continuity, signed
artifact, canary, multi-tenant isolation, or rollout.

Closes no implementation issue.

Parent: #1

Signed-off-by: Eva <eva@100yen.org>
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 28bcec24-92c7-4e14-be0a-4a6e9dd0c3ce

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/evaos-teams-architecture-20260723

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ff11efa8cc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +522 to +523
BUZZ_ACP_CHANNELS=<derived comma-separated approved channel UUIDs>
BUZZ_ACP_RESPOND_TO=allowlist

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make private agent rooms subscribe beyond mentions

If the assigned-agent rooms are implemented as Buzz private channels rather than DM-typed channels, this required env leaves buzz-acp on its default BUZZ_ACP_SUBSCRIBE=mentions; the matcher then drops messages without a p tag, and the desktop client only auto-adds participant p tags for channelType === "dm". That means ordinary messages in the one-human/one-agent private room can be accepted by the relay but never wake Hermes, so the canary's “member can talk to assigned agent” path should either explicitly require DM rooms or set a no-mention/all subscription policy for these private rooms.

Useful? React with 👍 / 👎.


- Repository: `electricsheephq/buzz`
- Base: exact integrated release head.
- Dependency: WP4, WP7, security disposition.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require branding packet before signing

This packet signs the internal canary artifact but its explicit dependency list omits WP8, even though the roadmap has branding/managed endpoints feeding the signed artifact and WP8 is what removes upstream endpoints and fixes package identity. If a successor follows the packet text instead of the graph, they can start signing after WP4/WP7 and produce a candidate that still has upstream updater/Builderlab surfaces or incomplete product identity; add WP8 here as a hard dependency.

Useful? React with 👍 / 👎.

Comment on lines +400 to +402
Every owner mutation that affects Buzz access increments
`customer_buzz_communities.access_revision` and inserts an outbox row in the
same database transaction.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make every access mutation enqueue reconciliation

This is the only blanket rule tying Supabase changes to Buzz reconciliation, but it narrows the outbox requirement to “owner mutation” while the revocation contract above also depends on identity rotation, role loss, assignment changes, session revocation, and backend/support actions. If implementers follow this literally, a non-owner key rotation or automated revocation can commit without an access revision/outbox row, leaving relay memberships and bridge allowlists stale until manual repair; make this apply to every authorization, identity, or assignment change that affects Buzz access.

Useful? React with 👍 / 👎.

|---|---|
| `id` | UUID primary key |
| `customer_agent_instance_id` | foreign key; one active identity |
| `public_key` | canonical hex public key |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Enforce uniqueness for agent public keys

The human identity table explicitly makes public_key unique while active, but the agent identity table only says “canonical hex public key” even though the contract requires an agent identity not be shared across customer accounts. Without the same active uniqueness constraint here, a duplicated VM/agent key can be projected into two accounts or communities and break the cross-account isolation guarantees; add an active unique constraint for agent public keys as well.

Useful? React with 👍 / 👎.

Comment on lines +849 to +851
Q --> K
R --> K
V --> K

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Gate canary on remote agent discovery

The normative dependency graph lets the canary proceed from the VM bridge to K without the remote-agent discovery packet, even though the Milestone 1 issue list includes that fix and the canary has separate members who need to see and address VM-hosted agents they do not own locally. Following this graph can produce a signed three-user canary where assigned agents are connected but secondary clients cannot discover or mention them, so add the remote-discovery node as a blocker before K.

Useful? React with 👍 / 👎.

@100yenadmin

Copy link
Copy Markdown
Member Author

This pre-reset staging PR is closed as superseded by merged upstream-first reset PR #37 and the current thin-adapter tracker #1/#36.

No code is being deleted. The branch and review history remain available. Retained behavior was replayed narrowly in #37; dropped managed brokers, blanket guards, duplicate UI, and control-signed routine collaboration must not be revived from this PR.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant