Skip to content

TOOLS-135: Support proxy-independent remote Gateway serving - #165

Merged
averycrespi merged 2 commits into
mainfrom
avery/tools-135-remote-serving
Oct 13, 2026
Merged

averycrespi merged 2 commits into
mainfrom
avery/tools-135-remote-serving

Conversation

@averycrespi

@averycrespi averycrespi commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

Context

TOOLS-135 is the first PR in the remote Gateway stack, targeting main from creation base f7e90963de2b740b5a22102874da706e12d6f421. It enables a generic operator-owned HTTPS reverse proxy without changing local-only defaults.

Changes

  • Accept explicit numeric IPv4 non-loopback and wildcard main/HTTP-proxy binds; require a canonical HTTPS --external-origin for non-loopback administration.
  • Separate public Host/Origin and Secure-cookie policy from the internal bind. Preserve CSRF, administrator/agent separation, no CORS, and forwarding-header rejection.
  • Keep internal aliases and local health/bearer CLI access narrow and cookieless. Preserve wildcard self-proxy exclusion at policy and dial boundaries.
  • Add HTTPS session/event, SDK-host, wildcard proxy-composition and real-binary/local-CLI regressions; update help, normative design and operator guidance.

Review Notes

Independent pre-publication review covered all 30 changed files and AC1–6 at 27b4a4d81a45db39125d2768543a974480d71f50: complete, no material findings or blocking evidence gaps. A focused independent confirmation also found no material findings in the test-only fixture-permission repair at a2c70776b2c85838ffea3bb28460a6b77be48f6f.

Public Host is exact and port-sensitive; --allowed-host cannot add browser trust. The proxy must preserve Host/Origin, strip Forwarded and X-Forwarded-*, disable buffering/caching, and never replay mutations. A wildcard listener conservatively reserves its outbound destination port; use a specific bind if that outbound port is needed.

External OAuth callbacks, upstream private-network policy, container packaging and container CI qualification are later tickets. Docker is unavailable locally: no container or live Debian/provider qualification is claimed. No merge, deployment or registry publication is included.

Test Plan

Passed local checks (race/count-one, five-minute package bounds, command-local umask 077):

  • make -C agent-gateway verify
  • Focused go -C agent-gateway test -race -tags=integration -count=1 -timeout=5m coverage for internal/httpboundary, internal/api, internal/mcpingress, internal/httppolicy, internal/remote and CLI behavior; updated CLI help/contract snapshots independently reconfirmed.
  • go -C agent-gateway test -race -tags=integration -count=1 -timeout=5m ./internal/composition -run '^TestOptionalHTTPProxyCompositionAndDynamicListenerExclusion$'
  • go -C agent-gateway test -race -tags=e2e -count=1 -timeout=5m ./test/e2e -run '^TestGatewayRemoteWildcardServingAndLocalCLI$'
  • Contract documentation/link checks, make -C agent-gateway test-harness, and npm run format:check

The initial CI fixture failure (temporary directory mode 0755 instead of required 0700) was reproduced and repaired without changing production permission checks. The HTTPS regression passes under both umask 022 and umask 002; make -C agent-gateway verify also passes after the repair.

All 16 selected checks, including Required, pass on exact head a2c70776b2c85838ffea3bb28460a6b77be48f6f: CI run 38313114362. This includes Linux/macOS integration and harness coverage, E2E, frontend browser, demo runners and the blocking vulnerability scan. Full outgoing history and exact PR metadata pass secret scanning.

@averycrespi
averycrespi marked this pull request as ready for review October 12, 2026 22:07
@averycrespi
averycrespi added this pull request to stack #170 October 13, 2026 19:06
@averycrespi
averycrespi merged commit 1dbd91f into main Oct 13, 2026
16 checks passed
@averycrespi
averycrespi deleted the avery/tools-135-remote-serving branch October 13, 2026 19:06
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