Auto-discovery and load balancing for Minecraft networks using PaperMC and Velocity.
Dynamo allows PaperMC servers to automatically register themselves with the Velocity proxy via NATS, without manual configuration.
Before Dynamo:
- Manual configuration of servers in Velocity
- No failure detection
- Static load balancing
With Dynamo:
- Servers detected automatically
- Automatic failover in case of failure
- Intelligent load balancing
# Linux/macOS
wget https://github.com/nats-io/nats-server/releases/latest/download/nats-server-linux-amd64.zip
unzip nats-server-linux-amd64.zip
./nats-server --port 4222
# Windows
# Download from https://github.com/nats-io/nats-server/releases
nats-server.exe --port 4222
# Docker
docker run -d --name nats -p 4222:4222 nats:latestgit clone https://github.com/NhProGamer/dynamo.git
cd dynamo
./gradlew buildAll- Copy
dynamo-paper/build/libs/dynamo-paper-1.0.0.jarinto theplugins/folder of your PaperMC servers - Copy
dynamo-velocity/build/libs/dynamo-velocity-1.0.0.jarinto theplugins/folder of your Velocity proxy - Restart the servers
/dynamo list- Lists all servers/dynamo groups- Shows server groups/dynamo status- System status/dynamo reload- Reloads the configuration
- Start the NATS server
- Start your PaperMC servers (any order)
- Start Velocity (can be last)
Servers will register automatically!
PaperMC Server → NATS → Velocity Proxy
│ │
• Heartbeat • Auto-discovery
• Metadata • Load balancing
• Auto-register • Failover
- PaperMC sends a heartbeat every 10 seconds via NATS
- Velocity listens to the heartbeats and updates its server list
- Automatic load balancing based on the configured strategy
- Automatic failover if a server stops responding (30s timeout)
- LEAST_PLAYERS - Server with the fewest players
- ROUND_ROBIN - Even rotation
- RANDOM - Random selection
- FIRST_AVAILABLE - First available server
- NATS Server: 10–15 MB RAM
- PaperMC Plugin: ~5 MB RAM per server
- Velocity Plugin: ~10 MB RAM
- Latency: < 1ms
dynamo/
├── dynamo-common/ # Shared classes
├── dynamo-paper/ # PaperMC plugin
├── dynamo-velocity/ # Velocity plugin
├── build.gradle # Build configuration
└── settings.gradle # Modules
# Build
./gradlew buildAll
# Tests
./gradlew test
# Clean
./gradlew cleanAllCustom License – See LICENSE
Questions? Open a GitHub issue