Quick start
Build it, --check a config, run it. One YAML file gets you automatic HTTPS,
p2c load balancing, health-checked failover, and abuse protection — on IPv4 and IPv6.
Build
Requires Rust 1.80+.
# Build (Rust 1.80+)
cargo build --release -p omlb Validate, then run
--check parses the whole file and then cross-checks it: every route has
to point at an upstream that exists, every address has to parse, cert files have to
be on disk, ACME settings have to make sense. Anything wrong means a non-zero exit —
wire it into CI and a broken edge config never leaves the merge request.
# Validate a config, then run it
./target/release/omlb --check -c config/omlb.yaml
./target/release/omlb -c config/omlb.yaml A minimal config
Proxy example.com to two backends over automatic HTTPS:
tls:
acme:
enabled: true
contacts: ["mailto:you@example.com"]
terms_of_service_agreed: true
domains: [example.com]
listeners:
- { name: https, address: "0.0.0.0:443", tls: { managed: true }, http2: true, ipv6: true } # ipv6: also bind [::]:443
upstreams:
app:
algorithm: power_of_two
backends: [{ addr: "10.0.0.1:8080" }, { addr: "10.0.0.2:8080" }]
health_check: { kind: http, path: /healthz }
routes:
- { name: app, match: { host: example.com }, upstream: app }
security:
enabled: true
rate_limit_rps: 100
ban_paths: [/.env, /.git/, /wp-login.php]
Twenty-odd lines, and this edge now issues its own certificate, balances across two
backends with health checks, retries around a dead one, and bans scanners probing
for .env files — on IPv4 and IPv6 both. Every other mode it supports is
on the configuration page →
Is it for you?
omlb fits when your edge is a box or two — a VPS, bare metal, the
homelab that became load-bearing — and you'd rather run one process than four. It
expects backends it can read from the config or find as labeled containers on the
same host. It won't chase Kubernetes endpoints or Consul entries around, and it has
no mTLS, HTTP/3, or regex routing yet — if any of those are load-bearing for you,
take Traefik or Envoy with our blessing. The comparison page is honest about all of it, symbol by symbol.