• v2.4.1+rs.1 8913edcae9

    portal-tunnel-rs v2.4.1+rs.1
    Some checks failed
    Rust CI / Format, lint, and test (push) Successful in 3m52s
    Rust CI / Build and start linux/arm64 image (no push) (push) Successful in 16s
    Build and publish container image / Build linux/arm64 image (push) Failing after 12s
    Stable

    ada released this 2026-09-12 10:25:17 +00:00 | 0 commits to master since this release

    portal-tunnel-rs v2.4.1+rs.1

    Rust relay-server compatibility release targeting upstream gosuda/portal-tunnel v2.4.1 at commit c644d4b37b0a70c2e7b045ca92ce0de3b42e4299.

    Highlights

    • Protocol-9 discovery and IVNP gateway/ingress interoperability for the v2.4.1 relay contract.
    • Exact upstream application connection-selection semantics retained.
    • Fail-closed deterministic native ARM64 Axis-B gate with signed RouterInfo mesh, active runtime semantic parity, Rust marker correlation, bounded cleanup, and secret-safe evidence.
    • Official upstream v2.4.1 client compatibility; v2.4.0 retained end-to-end because both use protocol 9. The v2.3.8 window remains wire-scoped as documented in docs/unsupported-features.md.

    Provenance and validation

    • Revision: 8913edcae9b10fa54e6e5849a22c1a8924b73c2a
    • Verified dev tag: v2.4.1+rs.1-dev.5
    • Production tag: v2.4.1+rs.1 at the same revision
    • Exact-head CI and native Linux ARM64 IVNP_AXIS_B_PASS
    • Deployed-image public HTTP E2E with official v2.4.1 and v2.4.0 clients
    • Production /healthz and /sdk/domain verified
    • Preserved raw bearer count: zero

    See PR #91 for the upstream retarget and PRs #92/#93 for the deterministic Axis-B release gate and connection-semantics correction.

    Downloads
  • v2.3.8+rs.1 3217a6a3e1

    v2.3.8+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 1m33s
    Build and publish container image / Build linux/arm64 image (push) Successful in 4m56s
    Stable

    gofix released this 2026-08-25 14:11:29 +00:00 | 3 commits to master since this release

    Rust relay release retargeted to upstream portal-tunnel v2.3.8 (f73614e2fd51481e62fd7cbcb928d349e45eb6f0).

    Changes:

    • Isolates unverified discovery candidates until direct authoritative target verification, caps candidates per signing identity, and evicts candidates before verified relays.
    • Shares the upstream-compatible per-source announce budget across discovery announces and hop-route POSTs.
    • Matches the v2.3.8 /sdk/domain ENS provider response shape and explicitly rejects the unsupported embedded authoritative DNS provider.
    • Retargets version metadata, compatibility documentation, fixtures, and official-client/API/JWT smoke defaults to v2.3.8 and Go 1.27.
    • Preserves tunnel/discovery protocol 8 and legacy v2.1.8/v2.1.9 hop-route signature acceptance.

    Artifacts:

    • Git tag: v2.3.8+rs.1
    • OCI image: code.rly.best/gofix/portal-tunnel-rs:v2.3.8-rs.1
    • OCI digest: sha256:a57b2eaf6c84614927f34be4b67a0715f9570cd4d1c23bf4c16607199e01e171
    • Revision: 3217a6a3e179a305b3c29ec2c9a28e932cb081cc
    • Verified dev image: v2.3.8-rs.1-dev.1 at sha256:60f8e7fac24b95bfedd556c04e16d4f690c3f849837bda435b8f0f3d20574b82

    Verification:

    • PR #89 CI run #154 and target-branch CI run #155 passed; dev image run #156 and production image run #157 passed.
    • Formatting, Clippy with warnings denied, 151 tests (3 capability-dependent ignored), Go/Rust API shape, Go-issued JWT, and official v2.3.8 HTTP/lifecycle/TCP/UDP smokes passed.
    • Relay-host registry realm resolution/reachability and authenticated manifest lookup passed before dev tagging.
    • Dev and production direct official-client HTTP gates passed.
    • Canonical protocol-8 Axis B three-hop gates passed with rly.best as the middle relay for both dev and production wire releases.
    • The checksum-verified official arm64 v2.3.8 CLI was installed; all eight production expose services, including the code tunnel, were restarted/reattached and verified.
    • Local/public relay health and release surfaces passed. A first production switch was automatically rolled back on recovery-metadata validation; the metadata was corrected, the same immutable image redeployed, and all final gates passed.
    • Verification fixtures and stopped backup containers were cleaned; no certificate/identity volumes were removed.
    Downloads
  • v2.3.7+rs.1 1b81484729

    v2.3.7+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 1m16s
    Build and publish container image / Build linux/arm64 image (push) Successful in 10m29s
    Stable

    ada released this 2026-08-17 12:44:36 +00:00 | 5 commits to master since this release

    Rust relay release retargeted to upstream portal-tunnel v2.3.7.

    Changes:

    • Adds upstream-compatible GET/HEAD /llms.txt relay connection guidance with configured relay URL substitution.
    • Retargets version metadata, compatibility documentation, fixtures, and official-client/API/JWT smoke defaults to v2.3.7.
    • Preserves protocol 8 behavior and the documented legacy v2.1.8/v2.1.9 hop-route signature compatibility window.

    Artifacts:

    • Git tag: v2.3.7+rs.1
    • OCI image: code.rly.best/gofix/portal-tunnel-rs:v2.3.7-rs.1
    • OCI digest: sha256:9fcfc74e2059cddaa53245c6007d46f54bcbe376174372aba5e2f38e5089d814
    • Revision: 1b81484729

    Verification:

    • Forgejo PR and target-branch Rust CI passed.
    • Tagged dev.2 arm64 image passed authenticated registry verification and live relay checks.
    • Official v2.3.7 clients reattached all eight production expose services; representative direct HTTP checks passed.
    • Canonical protocol-8 Axis B three-hop gate passed with rly.best as the middle relay.
    • Production image, public/local relay version, API health, /llms.txt contract, and private inventory health passed.
    Downloads
  • v2.3.5+rs.2 6a3e82bb0c

    v2.3.5+rs.2
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 1m11s
    Build and publish container image / Build linux/arm64 image (push) Successful in 5m38s
    Stable

    ada released this 2026-08-13 19:21:53 +00:00 | 7 commits to master since this release

    v2.3.5+rs.2

    Port patch fixing the default Docker Compose startup path.

    Fix

    • Omit PORTAL_FRONTEND_DIR when it is unset so Clap receives None and the built-in landing page fallback remains active.
    • Add a regression test for the default Compose environment.

    Validation

    • PR #85 and post-merge Rust CI passed.
    • 144 tests passed, 3 ignored; formatting and Clippy -D warnings passed.
    • Isolated default docker compose up: container running, built-in landing page HTTP 200.
    • Official portal v2.3.5 direct HTTP and 45-second lifecycle/renew/unregister gates passed.
    • Multi-hop with the Rust relay as ingress, middle, and exit returned HTTP 200 in all three positions.
    • Production ARM64 image digest: sha256:2ba2b60987b67b282ddeea2612d8931130b68a4de479d6c64f048518ea70fbc4.
    • Production relay reports portal-relay v2.3.5+rs.2; eight official portal v2.3.5 expose services are active and public health gates pass.
    Downloads
  • v2.3.5+rs.1 cea5e4ea4d

    v2.3.5+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 1m10s
    Build and publish container image / Build linux/arm64 image (push) Successful in 5m31s
    Stable

    ada released this 2026-08-13 18:16:44 +00:00 | 8 commits to master since this release

    portal-tunnel-rs v2.3.5+rs.1

    Retargets the Rust relay to upstream portal-tunnel v2.3.5 (79ccc6f2388dd47b0121c4593746150e084f1785) while preserving tunnel/discovery protocol version 8.

    Interoperability window

    • Axis A: official upstream portal CLI v2.3.5 against this relay.
    • Axis B: relay protocol v8 against upstream v2.3.5 relays, with retained v2.1.8/v2.1.9 hop-route signature acceptance.

    Changes

    • Adds v2.3.5 landing-page policy fields and upstream-compatible frontend-directory/SPA fallback behavior.
    • Serializes policy writes.
    • Adds public UDP lease addresses and the five-minute UDP flow idle window.
    • Retargets official-client, JWT, lifecycle, TCP/UDP, and Go API-shape harnesses to v2.3.5.

    Image

    code.rly.best/gofix/portal-tunnel-rs:v2.3.5-rs.1
    Digest: sha256:4506b242c79aa9a6cff19865b1f64ac4cebf9118fcdff8cbe6f8ec3273f617ec

    Verification

    • Commit: cea5e4ea4dba857310d8f1834d68db75d5db6479 (same commit as tagged dev deploy v2.3.5+rs.1-dev.1).
    • Forgejo CI: formatting, 143 tests passed / 3 ignored, and clippy with warnings denied.
    • Dev image: v2.3.5-rs.1-dev.1, digest sha256:0abaab5400eab8b7da5cf4dcfcbec06d2150c6e0ac7172f765d525bd75707b97.
    • Axis A live: SHA-verified official v2.3.5 ARM64 client, direct HTTP 200, 45-second renew endurance (9 fetches), and unregister cleanup.
    • Axis B live: passing all-upstream controls plus Rust relay as ingress, exit, and middle; the three-hop upstream → Rust → upstream path returned HTTP 200, clearing the former 502 gate using healthy approved discovery relays.
    • Production: public and local health HTTP 200, reported version v2.3.5+rs.1; eight active production expose services reattached with official client v2.3.5 and healthy representative routes.
    Downloads
  • v2.3.1+rs.1 3ba4efaadd

    portal-tunnel-rs v2.3.1+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 2m57s
    Build and publish container image / Build linux/arm64 image (push) Successful in 3m6s
    Stable

    ada released this 2026-06-06 06:45:05 +00:00 | 12 commits to master since this release

    Upstream Target

    • Upstream: gosuda/portal-tunnel v2.3.1 (594497de27f79c4ab856f284c542f767ce498bb7).
    • Rust tag: v2.3.1+rs.1.
    • OCI image: code.rly.best/gofix/portal-tunnel-rs:v2.3.1-rs.1.
    • OCI digest: code.rly.best/gofix/portal-tunnel-rs@sha256:37a7a39838befc34b79d2aedc698e691aa8dc4fd9693791750d9c4891eec7bff.

    What Changed

    • Retargeted workspace metadata, docs, fixtures, and smoke harness defaults from upstream v2.3.0 to v2.3.1.
    • Added upstream v2.3.1 admin bearer-token login/status compatibility while preserving existing wallet admin auth.
    • Matched the upstream five-minute keyless request clock-skew window.
    • Added /sdk/domain X402 pay_to shape compatibility and fail-fast handling for the new X402_ENABLED configuration names.
    • Ported the upstream installer script updates relevant to this relay package.

    Interop Window

    • Axis A: official upstream portal v2.3.1 client to this Rust relay, with retained relay-server compatibility coverage documented in docs/unsupported-features.md.
    • Axis B: Rust relay interop with upstream Go v2.3.1 relay shapes and explicit multi-hop chains; v2.1.8/v2.1.9 hop-route signature acceptance remains for compatibility.

    Verification

    • PR CI run #119: success.
    • Target branch CI run #120: success.
    • Dev tag v2.3.1+rs.1-dev.1 / image v2.3.1-rs.1-dev.1: CI run #121 success and live direct + multi-hop verification passed.
    • Production tag v2.3.1+rs.1 / image v2.3.1-rs.1: CI run #122 success and registry tag confirmed.
    • Production relay /healthz and /sdk/domain report v2.3.1+rs.1 locally and publicly.
    • Official arm64 portal CLI v2.3.1 asset was sha256-verified, installed, and active production expose services were restarted and checked.
    • Final production direct HTTP and multi-hop HTTP smoke tests passed.
    Downloads
  • v2.3.0+rs.1 b79f00bf75

    portal-tunnel-rs v2.3.0+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 43s
    Build and publish container image / Build linux/arm64 image (push) Successful in 3m15s
    Stable

    gofix released this 2026-06-01 06:20:31 +00:00 | 13 commits to master since this release

    Retargets portal-tunnel-rs to upstream gosuda/portal-tunnel v2.3.0 (fbb3c671703e14e77823ebb66704801576802030).

    Changes:

    • Bumps tunnel/discovery protocol compatibility to 8 and reported release to v2.3.0+rs.1.
    • Adds upstream v2.3.0 /api/* relay API routing aliases while retaining existing legacy operator paths.
    • Supports the v2.3.0 official client /sdk/connect raw-upgrade reverse-session handshake.
    • Refreshes fixtures, docs, and release smoke defaults for v2.3.0.

    Image:

    • code.rly.best/gofix/portal-tunnel-rs:v2.3.0-rs.1
    • digest sha256:fea2d4a06083baf2fc4d39ad6f4f097c5f25b9e972b26bde43c9cbb6e6b5b557

    Compatibility:

    • Official upstream portal client target: v2.3.0.
    • Documented relay compatibility surface remains in docs/unsupported-features.md; legacy v2.1.8/v2.1.9 hop-route signature compatibility is retained.
    • Verified release gates included Rust CI, Go/Rust API-shape comparison, Go-issued JWT verification, official v2.3.0 HTTP/lifecycle/TCP/UDP smokes, live production direct HTTP smoke, and live production multi-hop smoke with rly.best in the hop chain.

    Deployment:

    • Production relay updated to this image.
    • Long-running production official portal CLI clients were upgraded to upstream v2.3.0 and their exposed services restarted/re-attached.
    Downloads
  • v2.2.5+rs.1 2639d353ab

    portal-tunnel-rs v2.2.5+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 40s
    Build and publish container image / Build linux/arm64 image (push) Successful in 3m36s
    Stable

    ada released this 2026-06-01 01:05:36 +00:00 | 14 commits to master since this release

    Summary

    Retargets portal-tunnel-rs to upstream portal-tunnel v2.2.5 and publishes the first Rust relay build for this upstream target.

    Changes

    • Retargeted workspace/release metadata and compatibility defaults to upstream v2.2.5.
    • Hardened relay identity directory setup for non-root containers with pre-owned bind mounts.
    • Installed the rustls ring crypto provider explicitly at startup to avoid rustls 0.23 provider-selection panic when both ring and aws-lc-rs are present in the dependency graph.

    Verification

    • PR CI passed:
      • #75 retarget: pull_request #105, post-merge #106
      • #76 identity directory hardening: pull_request #108, post-merge #109
      • #77 rustls provider fix: pull_request #111, post-merge #112
    • Dev deploy trail:
      • v2.2.5+rs.1-dev.1: image built, live gate failed on non-root chmod.
      • v2.2.5+rs.1-dev.2: image built, live gate advanced to rustls CryptoProvider panic.
      • v2.2.5+rs.1-dev.3: image built from the same revision as this release and live-verified.
    • Verified dev image:
      • Git tag: v2.2.5+rs.1-dev.3
      • Revision: 2639d353abdff3baecfbdd9f3d635a672405309d
      • Image: code.rly.best/gofix/portal-tunnel-rs:v2.2.5-rs.1-dev.3
      • Live relay reported release_version = v2.2.5+rs.1-dev.3.
      • Official upstream v2.2.5 CLI HTTP smoke passed against the live relay SNI path.

    Production artifact

    • Git tag: v2.2.5+rs.1
    • Revision: 2639d353abdff3baecfbdd9f3d635a672405309d
    • Image: code.rly.best/gofix/portal-tunnel-rs:v2.2.5-rs.1
    • Digest: sha256:1139c43540f6f7127b34f5122f1cfe3c02a50ef68825b3bf7c9983eb68d613b5

    Deployment

    • Deployed production image to the live relay.
    • Sanity check passed: /healthz is OK and /sdk/domain reports release_version = v2.2.5+rs.1 with protocol version 7.

    Compatibility

    • Upstream target: portal-tunnel v2.2.5.
    • Live verification covered the supported HTTP expose path with the official v2.2.5 client. TCP/UDP are disabled in the current live environment configuration and were not exercised in production sanity.
    Downloads
  • v2.2.4+rs.1 186b221454

    portal-tunnel-rs v2.2.4+rs.1
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 1m9s
    Build and publish container image / Build linux/arm64 image (push) Successful in 3m30s
    Stable

    ada released this 2026-05-28 10:57:51 +00:00 | 17 commits to master since this release

    Summary

    • Retarget the Rust relay compatibility baseline to upstream gosuda/portal-tunnel v2.2.4.
    • Add the upstream x402 status object to /sdk/domain with enabled=false for the Rust relay.
    • Add startup guards for unsupported relay-local X402 facilitator mode and unsupported Njalla ACME DNS configuration.
    • Refresh fixtures, smoke defaults, docs, and version metadata for the v2.2.4 target.

    Compatibility

    • Upstream target: v2.2.4.
    • Interop window remains documented in docs/unsupported-features.md.
    • Relay reports release_version=v2.2.4+rs.1 on /sdk/domain.
    • Production image: code.rly.best/gofix/portal-tunnel-rs:v2.2.4-rs.1.
    • Production manifest digest: sha256:b05fa61d8772ecc7b50af54315b3743ae8e7953124c8b240e0a7dac3f4ea451a.

    Validation

    • PR #74 merged after required Forgejo Rust CI passed.
    • master push CI passed before tagging.
    • Tagged dev deploy: v2.2.4+rs.1-dev.1 / image v2.2.4-rs.1-dev.1.
    • Dev image workflow passed; manifest digest sha256:137e55fb30fa41ad0f926662e263b1e0b43b1778a3b8798844c6019217ea00bf.
    • Dev relay live verification passed for local/public /sdk/domain, official v2.2.4 direct HTTP, and official v2.2.4 explicit multi-hop with rly.best as middle hop.
    • Production image workflow passed and the production relay was switched to v2.2.4-rs.1.
    • Production direct HTTP and explicit multi-hop official-client smokes passed.
    • Active long-running production portal expose clients were upgraded to official CLI v2.2.4, restarted, and their rly.best endpoints returned expected status codes.
    • rust-relay-multihop-* validation fixtures were refreshed to official CLI v2.2.4 and returned HTTP 200.
    Downloads
  • v2.2.3+rs.2 317c4a830c

    v2.2.3+rs.2
    All checks were successful
    Rust CI / Format, lint, and test (push) Successful in 42s
    Build and publish container image / Build linux/arm64 image (push) Successful in 3m2s
    Stable

    ada released this 2026-05-21 13:53:40 +00:00 | 18 commits to master since this release

    Summary

    • Fix Rust relay routing for Chrome/ECH ClientHello paths where the browser connects with the ECH public name as the outer SNI.
    • Match upstream Go relay behavior by routing ECH outer SNI through the lease registry instead of closing the TLS connection.
    • Keep DNS HTTPS/TYPE65 ECH records synchronized through the Cloudflare-backed production relay configuration.

    Validation

    • cargo fmt --check
    • cargo test --locked
    • cargo clippy --locked --all-targets -- -D warnings
    • Dev relay verification on v2.2.3+rs.2-dev.1
    • Production relay deployed image code.rly.best/gofix/portal-tunnel-rs:v2.2.3-rs.2
    • Production /sdk/domain reports release_version=v2.2.3+rs.2
    • Production *.rly.best endpoints checked after reattaching expose services
    • DNS HTTPS/TYPE65 ECH records refreshed for public rly.best services

    Deployment

    • Upstream target: v2.2.3
    • Rust release counter: rs.2
    • Image: code.rly.best/gofix/portal-tunnel-rs:v2.2.3-rs.2
    Downloads