• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 29948162085
69%

Build:
DEFAULT BRANCH: main
Ran 22 Jul 2026 06:53PM UTC
Jobs 1
Files 814
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jul 2026 06:46PM UTC coverage: 69.096% (+0.1%) from 68.999%
29948162085

push

github

web-flow
Add Envoy network-proxy backend behind TOOLHIVE_NETWORK_PROXY=envoy (#5907)

* Add Envoy network proxy backend behind TOOLHIVE_NETWORK_PROXY=envoy

Introduces envoyProxy, which consolidates egress (forward proxy :3128)
and ingress (reverse proxy) into a single container, reducing auxiliary
container count from 3 (Squid: egress + ingress + dns) to 2 (Envoy
combined + dns). Selected via TOOLHIVE_NETWORK_PROXY=envoy; Squid
remains the default.

The gateway block uses two layers: a gateway-deny filter carrying the
resolved GatewayIP (L3) and Docker-internal hostnames (L7), prepended
before the HTTP RBAC allowlist filter. Admin API binds to 127.0.0.1
loopback only. Bootstrap temp files are written at mode 0600.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

* Fix Envoy config correctness and add architecture doc

Rewrites the Envoy bootstrap generation to produce valid protobuf-JSON:
every typed_config field now carries the required @type URL. Adds the
CONNECT route matcher so HTTPS tunnelling works, fixes ingress listener
to bind 0.0.0.0 inside the container (Docker port forwarding targets the
bridge IP, not the container loopback), switches gateway hostname deny to
prefix matching so host.docker.internal:443 is caught in HTTPS CONNECT,
and adds stdout access logging to both listeners.

Also adds docs/arch/14-envoy-network-proxy.md describing the design,
the comparison with Squid, and known limitations.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

* Match Squid dstdomain semantics for Envoy egress allowlist

The Envoy allowlist translated AllowHost entries with exact/suffix string
matchers keyed off a "*." prefix, which diverged from the Squid backend in
two ways: Squid uses a leading-dot convention (.example.com) for subdomain
matching, and its dstdomain matches the apex domain too. The prior code
mistranslated .example.com into a useless exact match (silently denying
traffic Squid would allow) and co... (continued)

403 of 435 new or added lines in 2 files covered. (92.64%)

285 existing lines in 4 files now uncovered.

76853 of 111227 relevant lines covered (69.1%)

74.8 hits per line

Uncovered Changes

Lines Coverage ∆ File
32
92.59
pkg/container/docker/envoy.go

Coverage Regressions

Lines Coverage ∆ File
254
57.12
1.46% pkg/container/docker/client.go
26
72.44
-6.11% pkg/container/docker/squid.go
3
96.36
-0.47% pkg/authz/authorizers/cedar/core.go
2
93.94
-6.06% pkg/foreach/foreach.go
Jobs
ID Job ID Ran Files Coverage
1 29948162085.1 22 Jul 2026 06:53PM UTC 814
69.1
GitHub Action Run
Source Files on build 29948162085
  • Tree
  • List 814
  • Changed 6
  • Source Changed 2
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #29948162085
  • d8bf3b29 on github
  • Prev Build on main (#29830473015)
  • Next Build on main (#29955906614)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc