Skip to content

Releases: pokt-network/redirect-service

v1.5.0-dev

21 Nov 03:12

Choose a tag to compare

feat: Add WebSocket, gRPC support and fix single backend buffering

  • Change default retry policy to fail-fast for better single backend performance
  • Add tryBackendDirect for zero-copy streaming without response buffering
  • Add WebSocket support with Hijacker interface implementation
  • Add gRPC support with h2c (HTTP/2 cleartext) handler
  • Add request kind detection for websocket and grpc in metrics
  • Add Flusher interface to responseWriterWrapper for streaming

Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.5.0-dev

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.5.0-dev
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-bbdc169

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.5.0-dev-linux-amd64
  • Linux (arm64): taiji-v1.5.0-dev-linux-arm64
  • macOS (Intel): taiji-v1.5.0-dev-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.5.0-dev-darwin-arm64

Full Changelog: v1.4.0...v1.5.0-dev

v1.5.0

21 Nov 11:29
c5b8c01

Choose a tag to compare

Merge pull request #3 from pokt-network/feat/websocket-grpc-support

feat: Add WebSocket, gRPC support and fix single backend buffering


Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.5.0

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.5.0
ghcr.io/pokt-network/taiji:1.5
ghcr.io/pokt-network/taiji:1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-c5b8c01
ghcr.io/pokt-network/taiji:latest

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.5.0-linux-amd64
  • Linux (arm64): taiji-v1.5.0-linux-arm64
  • macOS (Intel): taiji-v1.5.0-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.5.0-darwin-arm64

What's Changed

  • feat: Add WebSocket, gRPC support and fix single backend buffering by @jorgecuesta in #3

Full Changelog: v1.4.0...v1.5.0

v1.4.1

21 Nov 11:29
c5b8c01

Choose a tag to compare

Merge pull request #3 from pokt-network/feat/websocket-grpc-support

feat: Add WebSocket, gRPC support and fix single backend buffering


Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.4.1

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.4.1
ghcr.io/pokt-network/taiji:1.4
ghcr.io/pokt-network/taiji:1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-c5b8c01
ghcr.io/pokt-network/taiji:latest

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.4.1-linux-amd64
  • Linux (arm64): taiji-v1.4.1-linux-arm64
  • macOS (Intel): taiji-v1.4.1-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.4.1-darwin-arm64

What's Changed

  • feat: Add WebSocket, gRPC support and fix single backend buffering by @jorgecuesta in #3

Full Changelog: v1.4.0...v1.4.1

v1.4.0

17 Nov 14:08
664ab07

Choose a tag to compare

Merge pull request #2 from pokt-network/enhance/metrics

feat: Add retry-aware metrics and context-driven metric recording


Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.4.0

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.4.0
ghcr.io/pokt-network/taiji:1.4
ghcr.io/pokt-network/taiji:1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-664ab07
ghcr.io/pokt-network/taiji:latest

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.4.0-linux-amd64
  • Linux (arm64): taiji-v1.4.0-linux-arm64
  • macOS (Intel): taiji-v1.4.0-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.4.0-darwin-arm64

What's Changed

  • feat: Add retry-aware metrics and context-driven metric recording by @jorgecuesta in #2

New Contributors

Full Changelog: v1.3.1...v1.4.0

v1.4.0-dev

15 Nov 07:15

Choose a tag to compare

Update Grafana dashboards and workflows for enhanced RPC metrics observability

Highlights:

  • Refactor Prometheus queries in Grafana dashboards to include kind="rpc" for accurate RPC-based metric insights.
  • Replace static durations (e.g., 5m) with dynamic rate intervals ($__rate_interval) for consistency and better adaptability of panels.
  • Synchronize titles and labels across dashboards to emphasize RPC context (e.g., "Request Rate" → "RPC Request Rate").
  • Ensure metrics such as latencies, error rates, and overheads clearly distinguish RPC-specific data.
  • Minor cleanup in .github/workflows/docker-build.yml to streamline arguments and remove unused lines.

Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.4.0-dev

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.4.0-dev
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-1d1a866

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.4.0-dev-linux-amd64
  • Linux (arm64): taiji-v1.4.0-dev-linux-arm64
  • macOS (Intel): taiji-v1.4.0-dev-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.4.0-dev-darwin-arm64

Full Changelog: v1.3.1...v1.4.0-dev

v1.4.0-dev.1

15 Nov 06:56
af7f187

Choose a tag to compare

feat: Add retry-aware metrics and context-driven metric recording

Enhancements:

  • Introduced metricsWrapper middleware to ensure consistent metric recording on all requests.
  • Added retry-aware labels (kind, retried) to proxy metrics for enhanced observability.
  • Extended Prometheus metrics with improved dimensionality:
    • proxy_requests_total, proxy_request_duration_seconds, and others now include kind and retried.
  • Created metricsContext to streamline metric data management across request lifecycle.
  • Introduced backend normalization for improved metric label cardinality.
  • Improved error handling by deferring metric recording regardless of backend or request failures.

Monitoring:

  • Updated metrics to guarantee labels reflect retries and backend health accurately.
  • Added common utilities such as getRequestKind and boolToString for consistent label values.
  • Integrated structured metrics recording with new middleware to reduce repeated logic.

Code Quality:

  • Replaced direct metric increments in handlers with centralized recording using metricsWrapper.
  • Modernized backend parsing logic with functions like normalizeBackendLabel for higher configurability.

Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.4.0-dev.1

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.4.0-dev.1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-c48c02d

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.4.0-dev.1-linux-amd64
  • Linux (arm64): taiji-v1.4.0-dev.1-linux-arm64
  • macOS (Intel): taiji-v1.4.0-dev.1-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.4.0-dev.1-darwin-arm64

What's Changed

  • Adding Simple Weighted RR Balancing by @oten91 in #1

New Contributors

  • @oten91 made their first contribution in #1

Full Changelog: v1.3.0...v1.4.0-dev.1

v1.3.1-dev

13 Nov 18:45

Choose a tag to compare

Improve retry logic for load balancing: ensure unique backends are tried, add max attempts safety limit


Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.3.1-dev

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.3.1-dev
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-c525538

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.3.1-dev-linux-amd64
  • Linux (arm64): taiji-v1.3.1-dev-linux-arm64
  • macOS (Intel): taiji-v1.3.1-dev-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.3.1-dev-darwin-arm64

Full Changelog: v1.3.0...v1.3.1-dev

v1.3.1

13 Nov 20:57
af7f187

Choose a tag to compare

Adding Simple Weighted RR Balancing (#1)

  • Add weighted round-robin load balancing support
  • Improve retry logic for load balancing: ensure unique backends are tried,
  • Add max attempts safety limit

Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.3.1

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.3.1
ghcr.io/pokt-network/taiji:1.3
ghcr.io/pokt-network/taiji:1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-af7f187
ghcr.io/pokt-network/taiji:latest

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.3.1-linux-amd64
  • Linux (arm64): taiji-v1.3.1-linux-arm64
  • macOS (Intel): taiji-v1.3.1-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.3.1-darwin-arm64

What's Changed

  • Adding Simple Weighted RR Balancing by @oten91 in #1

New Contributors

  • @oten91 made their first contribution in #1

Full Changelog: v1.3.0...v1.3.1

v1.3.0

01 Nov 04:46

Choose a tag to compare

feat: Migrate to YAML configuration with health checks (v1.3.0)

Major Changes:

  • Replace CSV configuration with YAML format for better structure
  • Add active health checks with configurable intervals and thresholds
  • Add passive health monitoring based on 5xx errors
  • Add fallback backend support when primaries fail
  • Preserve health states during hot config reloads
  • Add comprehensive health metrics and alerting

Configuration:

  • Rename CSV_PATH to CONFIG_PATH environment variable
  • Support health check configuration per service (method, timeout, payload, failure_threshold)
  • Add fallback backends for high availability
  • Preserve backward compatibility with existing features

Health Monitoring:

  • Active checks: Every 10 seconds via cron
  • Passive checks: Track 5xx errors and connection failures
  • Recovery: Single successful check marks backend healthy
  • Only track passive health when active checks configured

Metrics Added:

  • proxy_backend_health_status{subdomain,backend}
  • proxy_health_checks_total{subdomain,backend,result}
  • proxy_fallback_requests_total{subdomain}
  • proxy_all_backends_unhealthy_total{subdomain}

Documentation:

  • Updated README with YAML configuration examples
  • Added health check behavior documentation
  • Updated Grafana dashboard with health check panels
  • Added TaijiAllBackendsUnhealthy critical alert

Code Quality:

  • Remove unused serviceName parameter from parseBackendConfig
  • Fix resetAt nil dereference in rate limit error handling
  • Ensure rate limit headers only set when check succeeds

Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.3.0

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.3.0
ghcr.io/pokt-network/taiji:1.3
ghcr.io/pokt-network/taiji:1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-4d9d203
ghcr.io/pokt-network/taiji:latest

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.3.0-linux-amd64
  • Linux (arm64): taiji-v1.3.0-linux-arm64
  • macOS (Intel): taiji-v1.3.0-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.3.0-darwin-arm64

Full Changelog: v1.2.0...v1.3.0

v1.2.0

31 Oct 20:57

Choose a tag to compare

Add distributed rate limiting with Redis and latency breakdown metrics

This release adds production-ready distributed rate limiting with Redis
and detailed latency metrics to identify bottlenecks.

Rate Limiting:

  • Distributed sliding window rate limiting across multiple Taiji instances
  • Redis-backed shared state for consistent enforcement
  • Per-subdomain rate limit configuration (e.g., 100/1m, 1000/1h)
  • Proper client IP extraction (Forwarded, CF-Connecting-IP, X-Forwarded-For)
  • Standard headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • Graceful degradation (fail open) when Redis unavailable
  • Comprehensive Prometheus metrics for rate limit tracking

Latency Metrics:

  • Add proxy_backend_duration_seconds metric (backend response time)
  • Add proxy_overhead_duration_seconds metric (Taiji processing overhead)
  • Add latency breakdown dashboard panels (P95, overhead %, stacked views)
  • Measured overhead: 0.14ms (1.3% of total request latency)

Performance Optimizations:

  • Pre-allocate common status code strings to reduce allocations
  • Optimize Retry-Policy header parsing to skip processing when empty

Distributed Testing:

  • Add docker-compose.yml with HAProxy for multi-instance testing
  • Add test-distributed.sh for validating distributed rate limiting
  • Configure docker-compose to always rebuild images

Monitoring:

  • Add 7 new Grafana dashboard panels for latency breakdown
  • Add TaijiProxyOverheadPercentageHigh alert (fires if overhead >30%)
  • Update alert strategy to avoid noise

Documentation:

  • Condense README for better readability while keeping all essentials
  • Document rate limiting configuration and behavior

Docker Image

# Pull with version tag
docker pull ghcr.io/pokt-network/taiji:1.2.0

# Or pull latest release
docker pull ghcr.io/pokt-network/taiji:latest

Available tags:

ghcr.io/pokt-network/taiji:1.2.0
ghcr.io/pokt-network/taiji:1.2
ghcr.io/pokt-network/taiji:1
ghcr.io/pokt-network/taiji:latest
ghcr.io/pokt-network/taiji:sha-bd386f8
ghcr.io/pokt-network/taiji:latest

Platforms:

  • linux/amd64
  • linux/arm64

Binaries

Download the pre-built binaries for your platform:

  • Linux (amd64): taiji-v1.2.0-linux-amd64
  • Linux (arm64): taiji-v1.2.0-linux-arm64
  • macOS (Intel): taiji-v1.2.0-darwin-amd64
  • macOS (Apple Silicon): taiji-v1.2.0-darwin-arm64

Full Changelog: v1.1.1...v1.2.0