Velocity for
modded networks.
Conduit is a performance-focused fork of Velocity built for heavily modded Minecraft servers. Native NeoForge and Forge support, smart compression, and configurable networking — no plugins, no reflection hacks.
Requires Java 21+ · changelog
What's different
Built for mods.
Not a patch on top.
Vanilla Velocity caps clients at 64 known data-packs, instantly
disconnecting most modded clients. Conduit raises this to 1,024
by default — fully configurable in conduit.toml.
No reflection, no sun.misc.Unsafe, no plugins required.
Caches the negotiated pack-list per (IP, mod fingerprint) pair. Re-connecting modded clients replay the cached handshake instead of renegotiating, cutting join time by 50–400 ms on every re-connect.
configurable TTLSamples packet entropy before calling DEFLATE. Skips compressing NeoForge binary payloads that are already compressed — no wasted CPU on data that won't shrink.
Write-buffer high/low watermarks are set in conduit.toml.
SO_BACKLOG raised to 1,024 for burst-login tolerance on large networks.
Drops TCP connections at the Netty accept stage — before any data is read — from IPs exceeding a configurable rate. Protects against bot floods that bypass Velocity's existing login ratelimit.
Holds in-flight packets during server transitions so stale play-state data from the old server never reaches the client mid-switch. Prevents protocol state-machine confusion on modded clients.
Channel detection, oversized-payload guarding (4 MiB cap), FML1 address-marker stripping, and REGISTER payload decoding — all built into the pipeline, not bolted on.
Lock-free LongAdder counters for connections, cache hits, slow
logins, throttle drops, and compression skips. Zero overhead when
disabled. Enable with one line in conduit.toml.
Getting started
Clone, build, run.
That's it.
git clone https://github.com/koelss/conduit.git
cd conduit
./scripts/setup.sh
./gradlew build
velocity.jar.
All your existing plugins and velocity.toml settings
continue to work unchanged.
conduit.toml is generated next to
velocity.toml. Set your known-packs limit,
handshake cache TTL, and compression preferences.
plugins/. Set max-known-packs in
conduit.toml to match your old pack-limit
value. The -Dvelocity.max-known-packs JVM flag is
still honoured.
# conduit.toml — generated on first run next to velocity.toml [modded] max-known-packs = 1024 # raise for large modpacks; vanilla cap is 64 handshake-cache = true handshake-cache-ttl = 300 # seconds handshake-timeout-ms = 30000 neoforge-compat = true legacy-forge-compat = true announce-modded-in-ping = false log-mod-handshakes = false [network] write-buffer-high-watermark = 2097152 # 2 MiB write-buffer-low-watermark = 1048576 # 1 MiB smart-compression = true smart-compression-min-delta = 64 # minimum bytes saved to justify compressing packet-queue-optimization = true packet-queue-max-depth = 256 connection-throttle = true connection-throttle-max-per-second = 30 [diagnostics] enabled = false trace-mod-handshakes = false # very verbose — debug only slow-connection-threshold-ms = 3000 [server] health-check-enabled = true health-check-interval-ms = 10000 fallback-servers = [] # ordered list of preferred fallback server names motd-cache-enabled = true motd-cache-ttl-ms = 2000 graceful-shutdown-enabled = true graceful-shutdown-timeout-ms = 5000 graceful-shutdown-message = "Proxy is restarting. Please reconnect in a moment." bot-filter-enabled = true bot-filter-timeout-ms = 3000 bot-filter-threshold = 10
Compatibility
Works with everything
Velocity works with.
Built by koels · see live status on /projects · mirrored from koels.site/conduit