Skip to content

docs: fix the boundaries page - #784

Merged
aojea merged 3 commits into
google:mainfrom
kaisoz:kaisoz/fix-docs-boundaries
Oct 20, 2026
Merged

aojea merged 3 commits into
google:mainfrom
kaisoz:kaisoz/fix-docs-boundaries

Conversation

@kaisoz

@kaisoz kaisoz commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Why

The boundaries page tells an operator what each party in a mesh controls and what happens when something goes wrong. Three statements there disagree with the code: who supplies the signing keys, when a ban takes effect, and what a node does with a provider that fails the label check.

What changed

  • The signing keys: by default the control plane generates and rotates them. With --signing-key-path the operator supplies them in a PEM file. The control plane then does not rotate them and re-reads the file every 30 seconds. The page says how to rotate a supplied key.
  • Revocation: nodes and routers enforce a ban at once from the mesh event, and also pull the ban set on every sync, every 15 minutes on a node and every 5 minutes on a router.
  • The label gate: a request that names the provider is refused when the provider lacks a required label. The node skips such a provider only where it picks the provider itself, on /v1 and on a CONNECT tunnel. The authorization page said the same and is corrected in the same commit.

Scope

  • One commit per corrected claim, docs only.

Verification

  • Each claim was checked against the control plane's key handling, the node and router sync loops and the label gate. An independent review confirmed the new text against the code, and its corrections are in.
  • The site builds with Hugo 0.147.5 and adds no broken link.

The boundaries page said the control plane generates its signing keys,
stores them in its database and rotates them on the schedule you set.
That is the default only. With --signing-key-path the operator supplies
the keys in a PEM file and the control plane runs no rotation loop
(cmd/agentmesh-control-plane/main.go:208,
internal/controlplane/server.go:355-376). A rotation is then a new first
key in the file, which the control plane re-reads every 30 seconds
(internal/controlplane/signingkeys.go:258-280). The previous key stays
in the file until every credential it signed has expired
(internal/controlplane/signingkeys.go:46-48).
The boundaries page said a ban takes effect on the next credential
refresh and, through the mesh event, at once on every connected node.
The event is one path. Every node also pulls the ban set from
/revocations on each control plane sync, every 15 minutes by default
(internal/node/controlplane_sync.go:92-113, internal/node/node.go:93).
Every router pulls the ban set from /info on each of its syncs, every 5
minutes by default (internal/router/router.go:1105-1133, 1456,
internal/router/config.go:44).
The boundaries and authorization pages said a provider that cannot show
the required labels is skipped. They also said a provider whose
credential cannot be fetched is treated as if it lacked the label. The
node skips a provider only where it picks the provider itself, on the
/v1 inference facade and on a CONNECT tunnel
(internal/node/openai_facade.go:413-425,
internal/node/egress_tunnel.go:427-446). On a request that names the
provider the node refuses the request instead. A /mesh/<peer>/... route
and a proxied A2A request answer 403 (internal/node/sidecar.go:828-839,
internal/node/a2a_service.go:118-123), and call_remote_tool fails with
an error (internal/node/mcp.go:350). A provider whose credential does
not verify, or that does not answer, gets no request.
@kaisoz
kaisoz requested a review from aojea as a code owner October 20, 2026 07:52

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request updates the documentation for authorization and boundaries concepts. Specifically, it clarifies how required labels are verified and handled when a request names a provider versus when the node picks the provider itself (such as on /v1 inference endpoints and CONNECT tunnels). It also documents the --signing-key-path option for supplying signing keys via a PEM file, explains the immediate and pull-based revocation mechanisms for banned nodes and routers, and refines the description of how the system fails closed when a provider's credential fails verification or does not answer. There are no review comments provided, and I have no feedback to provide on these documentation updates.

@aojea
aojea merged commit 6abfaea into google:main Oct 20, 2026
21 checks passed
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