Home Now Projects Portfolio Socials Stats
tame.gg
Copied!
v1.0.0 — based on Velocity dev/3.0.0

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

conduit.toml
# the one change that unblocks modded clients [modded] max-known-packs = 64 ← vanilla cap max-known-packs = 1024 ← Conduit default # that's it. everything else is opt-in.
1,024 known-packs limit
50–400ms saved per reconnect
0 plugins required
Java 21+ minimum runtime
1,024 default known-packs limit ← 64 in vanilla Velocity
0 plugins required
GPL-3.0 open source
100% Velocity API compatible

What's different

Built for mods.
Not a patch on top.

📦
Configurable Known-Packs Limit

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.

replaces KnownPacksFix
1024 vs 64 vanilla
Vanilla
64
Conduit
1,024
Modded Handshake Cache

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 TTL
400ms saved per join
🧠
Smart Compression

Samples packet entropy before calling DEFLATE. Skips compressing NeoForge binary payloads that are already compressed — no wasted CPU on data that won't shrink.

🔧
Configurable Netty Watermarks

Write-buffer high/low watermarks are set in conduit.toml. SO_BACKLOG raised to 1,024 for burst-login tolerance on large networks.

🛡
Per-IP Connection Throttle

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.

🔀
Packet Queue Manager

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.

🔍
NeoForge / FML3 Utilities

Channel detection, oversized-payload guarding (4 MiB cap), FML1 address-marker stripping, and REGISTER payload decoding — all built into the pipeline, not bolted on.

📊
Structured Diagnostics

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.

opt-in

Getting started

Clone, build, run.
That's it.

01
Clone and build
The setup script clones upstream Velocity, applies Conduit's overlays and additions, then exits. Run the Gradle build to get your JAR.
git clone https://github.com/koelss/conduit.git cd conduit ./scripts/setup.sh ./gradlew build
02
Deploy like normal Velocity
The output JAR is a drop-in replacement for velocity.jar. All your existing plugins and velocity.toml settings continue to work unchanged.
03
Configure conduit.toml
On first run, conduit.toml is generated next to velocity.toml. Set your known-packs limit, handshake cache TTL, and compression preferences.
04
Remove KnownPacksFix (if installed)
If you were using the KnownPacksFix plugin, remove it from 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
# 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.

⚙️
Velocity Plugins
fully compatible
📄
velocity.toml
unchanged
📑
Paper / Spigot
full support
🧵
Fabric
full support
🔨
NeoForge (FML3)
improved
⚒️
Legacy Forge (FML1/2)
improved

Built by koels · see live status on /projects · mirrored from koels.site/conduit