High-throughput NNTP proxy written in Rust.
nntp-proxy sits between NNTP clients and one or more backend servers. It gives you a single local endpoint while handling backend selection, pooling, authentication, optional caching, and metrics in one place.
- Shares multiple backend servers across multiple clients
- Pools and reuses backend connections instead of having every client open its own
- Supports backend auth, outbound TLS, health checks, and connection limits
- Tracks article availability and can optionally cache article bodies
- Runs as one binary:
nntp-proxy
Client-facing connections are plain NNTP only. TLS support is for outbound backend connections, not for the local listener.
Historical benchmark notes are retained in CHANGELOG.md and the archive docs. Treat them as release evidence, not current guarantees. See docs/development.md for the current benchmark workflow.
Hybrid is the default routing mode. per-command and stateful remain available as explicit modes. Details are in docs/operator/runtime-and-routing.md.
nix develop -c cargo build --release
cp config.minimal.toml config.toml
./target/release/nntp-proxy --config config.tomlThen edit config.toml so [[servers]] points at a real backend and connect your NNTP client to localhost:8119 unless you changed [proxy].port.
MIT