Skip to content

Add the two hosted gRPC-web proxies for verdict runs to the endpoint table - #4

Merged
danielgorgonha merged 2 commits into
mainfrom
feat/hosted-proxy-endpoints
Nov 11, 2026
Merged

danielgorgonha merged 2 commits into
mainfrom
feat/hosted-proxy-endpoints

Conversation

@danielgorgonha

Copy link
Copy Markdown
Member

What this changes and why:

  • Adds the two hosted gRPC-web proxies for verdict runs to the endpoint table: https://m1-rocks.konclave.xyz forwards to zec.rocks:443, and https://m1-global.konclave.xyz to zec.global:443. Both run on Railway, with TLS at the edge, and use the Traefik image of proxy/compose.yml pinned by digest.
  • The deployed files are committed byte for byte in proxy/hosted/{rocks,global}/ (Dockerfile, traefik.yml, conf/dynamic.yml), with no SPDX line, so the sha256 in web/endpoints.mjs is the sha256 of what runs.
  • verdictReady is true for these two entries only. A live row through them is judged on its range and key. The range heights are still null, so no live row has a verdict yet.
  • The built image digest is not recorded yet; the table's image_digest is the base image the Dockerfile pins.
  • Docs: the hosted proxies keep no access log. The Railway edge's own request log is quoted as the host's operators described it, and the rate limit is keyed on the client address the edge forwards (trusted range 100.64.0.0/10). The pipeline proxy started from proxy/ logs each caller's address on that machine.

Tests run (see CONTRIBUTING.md):

node --test tests/node.test.mjs tests/charts.test.mjs: 199 pass. A test derives each hosted config property from the committed files: the pinned image, two COPY lines, no access log, the trusted range, header aliases deleted, the rate limit (20/s, burst 40, keyed on X-Real-IP), the four-call router and an https upstream. The sha256 test covers the hosted entries. Each new test was checked to fail without its change.

For a result under community-results/: commit built, device, browser:

Not applicable.

AI disclosure: no AI assistance / AI-assisted (tool and what it did):

AI-assisted: Claude Code wrote the change, the tests and the docs; a separate AI review pass audited them.

🤖 Generated with Claude Code

danielgorgonha and others added 2 commits November 11, 2026 15:56
The files in proxy/hosted/ are the files deployed, byte for byte, with no
SPDX line, so the hash in the table is the hash of what runs. A test derives
upstream, pinned image, trusted edge range and rate-limit key from them.
The docs state what the platform logs and what the rate limit is keyed on.

Co-Authored-By: Claude <noreply@anthropic.com>
…e hosted rate values

The pipeline proxy logs each caller's address. The rate-limit measurement
reads as about the same share, the query-string check names its staging
service, and the method page no longer says the hosted proxy has no host name.
deriveHosted now requires average 20, period 1s, burst 40.

Co-Authored-By: Claude <noreply@anthropic.com>
@danielgorgonha
danielgorgonha merged commit 5082087 into main Nov 11, 2026
2 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.

1 participant