SwagProxy boots Velocity with Geyser and Floodgate baked in, then supervises that process for its entire life: auto-updating components with atomic staging and crash-window rollback, recovering from bad builds automatically, and running your restart schedule across timezones correctly. Point Java and Bedrock players at one address and never touch it again.
New builds are downloaded, SHA256-verified, and staged as .jar.staged. The live jar is never touched outside an actual restart. If Velocity crashes within the rollback window after an update, every swapped jar is automatically restored from backup and the bad build is marked "skipped" forever.
On a brand-new install there's no known-good baseline to roll back to. If boot fails, SwagProxy automatically walks up to 5 alternate Velocity builds, then alternate Geyser builds, until something survives, with a full diagnostic if every combination fails.
Every restart-schedule entry carries its own java.time.ZoneId. A proxy hosted on a UTC server can restart at 4:30 AM Eastern every day, correctly following DST, without SwagProxy ever assuming the host machine's local time.
Unexpected crashes trigger an exponential backoff relaunch (1s, 2s, 4s… capped at 60s). Cross a configurable crash-loop threshold and SwagProxy stops auto-relaunching entirely and prints a loud diagnostic, rather than spinning the CPU on a broken process.
mkdir my-proxy && cd my-proxy java -jar SwagProxy.jar