On this page
VeloFlame is a Velocity proxy fork shipped as the proxy JAR itself, not as a Bukkit plugin. It
keeps the Velocity plugin and API surface and adds admission controls around it: early packet
limits, per-IP rate limits, an expiring firewall, limbo verification and maintenance controls.
The runtime brand and configuration are VeloFlame; the inherited README.md heading still says
Velocity-CTD, and the code retains upstream com.velocitypowered.* and com.velocityctd.*
packages.
| Field | Verified value |
|---|---|
| Runtime version | 1.4.9 |
| Upstream identity | Velocity / Velocity-CTD fork |
| License | GNU GPL v3 |
| JAR names | VeloFlame-Lite.jar, VeloFlame-Pro.jar |
| Configuration | veloflame.toml next to velocity.toml |
| Gradle project version | 4.2.1-SNAPSHOT; not the runtime release label |
Where it sits in the connection path
The controls are ordered from cheapest to most expensive:
- Frame and compression checks.
MinecraftVarintFrameDecodervalidates a frame before the packet object exists.MinecraftCompressDecoderchecks the claimed and inflated sizes, andServerboundCompressionGuardrejects serverbound compression ratios above the system propertyvelocity.serverbound-max-compression-ratio(default1024) or claimed sizes abovevelocity.serverbound-uncompressed-cap(default2097152). - Per-state early limiter. A sliding window tracks packet count, wire bytes and decompressed
bytes separately for
HANDSHAKE,STATUS,LOGIN,CONFIGandPLAY. A handshake budget is deliberately much smaller than a play budget. - Rate limits. Login and status counters are separate. Reaching a limit can add the address to the firewall once per window.
- Firewall. Blocked addresses live in a Caffeine cache with a configurable TTL. The optional
host path adds them to an
ipsetset and installs an iptablesINPUTdrop rule. - Limbo. A login can be diverted before
PreLoginEvent, verified by a limbo session, and only then transferred to the backend. Admission is queue-bound and event-loop aware; the code rejects off-loop calls rather than touching session state from the wrong thread.
Editions
VeloFlame.isPro() selects the edition shown by /veloflame, and the two builds have different
JAR names. The shipped configuration marks six sections as PRO-only: vpn, vpn-online,
account, reconnect, nickname and limbo. Do not assume a default-enabled section exists in
the Lite artifact. Verify the JAR you actually run before planning around a module.
Requirements
| Requirement | Verified detail |
|---|---|
| Proxy | Velocity-compatible fork; started as the proxy JAR |
| Java | Build toolchain is Java 25; no runtime minimum is documented |
| Existing files | velocity.toml and forwarding.secret in the working directory |
| Generated file | veloflame.toml, created on first start |
| External plugin | None required to boot the proxy |
| Host firewall | Linux ipset and iptables plus root or CAP_NET_ADMIN for the optional path |
| Client range | Not declared in metadata |
The Java 25 entry is a build toolchain, not a documented runtime floor. Test the artifact on the JVM you intend to deploy and pin it.
Defaults to review before production
| Default | Value | Risk |
|---|---|---|
settings.whitelist |
localhost/private addresses plus "LinsaFTW" |
Grants that username bypass out of the box |
limbo.transfer.destination-host |
"play.my-server.com" |
Placeholder; post-verification transfer is enabled |
firewall.ipset |
true |
Needs host privileges; falls back to the Java cache |
limbo.always-active |
false |
Limbo triggers on join pressure, not every connection |
The shipped limbo transfer block is enabled with use-handshake-hostname = true and port 25565.
Change the host or disable the transfer before exposing the proxy.
What is not claimed
- No tested Minecraft client or backend version range is declared.
- This is a proxy; backend support statements in the inherited README are project goals, not a compatibility matrix.
- Lite feature parity with PRO is not established by the shared configuration file.
- The placeholder transfer destination is not a working endpoint.
For the deployment sequence see install VeloFlame. For keys and defaults see configuration. The VeloFlame case study covers the limbo and packet-guard design decisions.
Verified against VeloFlame
019f32053(runtime version 1.4.9, 4 October 2026) on 30 October 2026. Values come from source and the shippeddefault-veloflame.toml; no live proxy run was performed.
Checked against the project source or shipped configuration. Declared platform support is not the same as a tested matrix. For downloads and commercial support, use theArkFlame catalog.