Conduit v0.3.0
What's New in v0.3.0
Auto-TLS (Let's Encrypt)
Conduit now obtains and renews TLS certificates automatically via ACME — no manual certificate management needed. Just add an email address:
{ "port": 443, "tls": { "acme": { "email": "admin@example.com" } } }Hot Config Reload
Apply configuration changes without restarting the server. Update your conduit.json and run conduit reload — routes, headers, rate limits, auth, and proxy settings take effect immediately.
File Uploads
Accept multipart/form-data uploads with size limits, MIME type filtering, and UUID-based storage — served through a dedicated Axum loopback server:
{ "upload": { "path": "/upload", "dir": "./uploads", "maxFileSizeBytes": 10485760 } }Browser Hot Reload
Frontend development gets automatic browser refresh when source files change — no build tool or extension needed. Add <script src="/__hot-reload__/client.js"></script> and start editing.
Rhai Middleware Scripting
Write custom request/response logic in Rhai scripts — enforce API keys, rewrite headers, or reject requests based on any condition:
{ "middleware": [{ "type": "script", "path": "./scripts/custom-auth.rhai" }] }Redis Rate Limiting
Share rate-limit state across multiple Conduit instances using Redis as the token-bucket backend. Falls back to in-memory if Redis is unavailable:
{ "rateLimit": { "windowSecs": 60, "limit": 100, "store": "redis://localhost:6379" } }Advanced Routing
The new routes array supports matching on path glob, HTTP method, request headers, and query parameters — with separate upstreams per match:
{ "routes": [
{ "match": { "path": "/api/**", "method": ["POST","PUT"] }, "proxy": "http://write:4000" },
{ "match": { "path": "/api/**" }, "proxy": "http://read:4000" }
]}Path Rewrite
Regex-based URL rewriting applied before forwarding to upstream — strip version prefixes, remap legacy paths, capture groups:
{ "rewrite": [{ "from": "^/v[0-9]+/(.+)$", "to": "/$1" }] }Upstream Groups
Two-level load balancing: an outer strategy selects a server group (e.g. by region using IP-hash), and an inner strategy distributes within the group (e.g. least-conn).
Pre-compressed Static Files
Serve .br / .gz sidecar files directly without on-the-fly compression — zero CPU overhead for cached assets:
{ "staticOptions": { "preCompressed": true } }Docker Image on GHCR
Official multi-arch image published to GitHub Container Registry on every release:
docker pull ghcr.io/lopatnov/conduit:latest
docker pull ghcr.io/lopatnov/conduit:0.3.0Shell Completions & Man Page
conduit completions bash >> ~/.bashrc
conduit man | man -l -Full Changelog: v0.2.0...v0.3.0