Skip to content

Add a minimal local IFC broker - #7593

Draft
jmecom wants to merge 1 commit into
jm/buzz-ifc-session-apifrom
jm/buzz-local-broker
Draft

Add a minimal local IFC broker#7593
jmecom wants to merge 1 commit into
jm/buzz-ifc-session-apifrom
jm/buzz-local-broker

Conversation

@jmecom

@jmecom jmecom commented Sep 11, 2026

Copy link
Copy Markdown
Collaborator

Adds buzz broker serve, read, and reply: an opt-in Unix-socket broker for one public or private stream channel. The operator fixes the relay, channel, community, and requester at startup. Keyless clients can read recent messages or post plain text; they cannot select another destination or request arbitrary signatures.

The broker owns the key and one IfcSession, verifies relay-signed metadata and membership, validates incoming message signatures and scope, and sends the exact event bytes authorized by IFC. An observed policy change permanently blocks further publication. Requests, responses, and connection time are bounded; publications are never automatically retried.

This is a prototype, not same-user OS isolation. There is no hardened helper or protected Keychain custody, and existing Desktop/ACP launch paths are unchanged. Membership checking and relay publication are separate requests, so the remaining race is also explicit. Setup and limits describe the fresh-agent-state requirement.

Stacked on #7497 (jm/buzz-ifc-session-api), after #7349. No changes to the earlier PRs.

Checked: 487 CLI unit tests, 31 IFC unit tests, 7 IFC doctests, formatting, strict CLI Clippy, and the file-size gate. The 14 broker tests cover socket/HTTP boundaries with a signed mock relay. A separate real-binary smoke test passed on macOS: broker startup, keyless clients with empty environments, read/reply, and Ctrl-C cleanup. No deployed relay or user account was used.

Signed-off-by: Jordan Mecom <jm@squareup.com>
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.

1 participant