Skip to content

Gateway allowlist of trusted remote gateways #156

Description

@Mearman

The machine-boundary trust layer of the cross-machine mesh epic.

The gateway advertises local agents to, and accepts forwarded traffic from, only allowlisted remote gateways, keyed by remote gateway device-id. This is the successor to v1's fedTrust/fedTrustedFingerprints (retired with federation.ts): the same pre-declared trust of remote endpoints, moved to the machine boundary, which is where cross-machine traffic actually enters.

Deliberately out of scope: gating the hub itself. mesh.exadev.io stays open; requiring relay:use tokens before the hub pairs a connection (wire-mesh's createGatedRelayFrameHandler already provides the mechanism) is a recorded option for if the hub ever carries untrusted machines.

The default posture before any remote gateway is allowlisted (deny-all, vs allow-all with a denylist) is settled while implementing, against the two-machines-one-owner deployment this is being built for.

Per-agent cryptographic gating, recorded as the follow-on direction for finer control beyond visibility: DM delivery today is gated only by recipient visibility (no blocklist, allowlist, or pairwise rule exists anywhere in the shipped code; control is exercised entirely receiver-side or at room admission, never outbound). A dm:send-style capability checked receiver-side needs no new wire mechanism, since receiver refusal via manage-error already works, and peers can advertise accept/refuse policies through the peer-advert gossip extension so a sender can check before attempting. Neither is wired; both compose with the gateway boundary rather than compete with it, and both are deliberately outside this epic.

The user-principal form of this gating (a user principal as the issuer of communication capabilities, with delegation policy and bubble-up along the issuer chain) is the sibling epic #159.

Long-term upgrade path: once the user-principal layer exists (#159), the allowlist keys on remote principals (user/group device-ids) rather than bare gateway device-ids, turning the machine trust boundary into a principal trust boundary.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions