A single-binary reverse proxy in Rust. The long-term goal is an MCP-aware gateway, but right now it's a plain HTTP/1 reverse proxy with the reliability bits you'd want in front of a real service.
Status: work in progress. The proxy path is done and reasonably tuned; TLS, caching, and the MCP layer are not here yet.
- Prefix-based routing to multiple backends (longest prefix wins)
- Load balancing: round-robin, least-connections, ip-hash
- Per-replica circuit breaker with half-open probing
- Retries on idempotent requests, capped by a retry budget
- Per-backend timeouts (TTFB) and idle-stream timeouts
- Edge limits: max body size, header count, connection cap, load shedding
- Hop-by-hop header stripping,
X-Forwarded-Forhandling - Prometheus metrics + structured tracing (OTLP export optional)
- YAML config with
${VAR:-default}env substitution
cargo run --release -- --config config.yamlconfig.yaml is the default if --config is omitted. Validate without serving:
cargo run -- --config config.yaml --check-configSee config.yaml for a worked example. Metrics are at /metrics, health at
/health.
Roughly 200k req/s on 4 cores (loopback, 1 KB bodies, keep-alive), added latency under 500us p50.
TLS termination, response caching, and the MCP gateway layer. The auth config
block is half done for now.