single-binary minecraft orchestrator
# One JAR.
# The whole
cluster.
Master and wrapper live in the same fat JAR. Form a Hazelcast cluster, expose one REST + WebSocket API, and deploy instances across screen, tmux, docker and kubernetes. Same config, swap one field.
# one jar, no external services to run runtime jvm · single fat jar # one process runs master + wrappers clustering hazelcast # peer-to-peer · unlimited nodes api rest + websocket # :7000 · bearer auth, rate limited templates versioned file-trees # %variable% replacement # runtimes · same config, any target built-in screen · tmux extensions docker · kubernetes # 5+ targets, laptop to fleet # integrations · 14 official drop-in extensions storage aws s3 databases postgresql · redis · mongodb metrics prometheus networking tailscale gitops argocd proxies velocity · paper chat-ops discord
-
# One master exposes the REST API; any number of wrapper nodes execute instances. Work is dispatched cluster-wide over Hazelcast, no extra message broker to run.
-
# Instances are built from versioned template file-trees with dynamic %VARIABLE% replacement. Compose templates per group, choose one-of, or install whole groups.
-
# Built-in screen and tmux. Docker and Kubernetes via extensions. The same configuration deploys to a laptop, a VM fleet, or a cluster without changes.
-
# Full lifecycle control over HTTP. Stream live logs and an interactive console over WebSockets. Bearer-token auth with ALL / PUBLIC permission scopes and rate limiting.
-
# Self-registering JARs add runtimes, storage backends, databases, metrics exporters, and integrations. Drop one in ./extensions and it wires itself up on load.
-
# Sync templates and configs straight from Git, and export Kubernetes manifests for ArgoCD to track. Your fleet topology lives in version control.
-
# The Tailscale extension exposes mesh IPs as template variables, so instances on different networks connect securely without manual port plumbing.
-
# Prometheus exposition endpoint out of the box, plus an InfluxDB exporter. Daily-rotated structured logs and a styled operational console.
-
# First-class plugins for Paper, Spigot, Velocity, BungeeCord and Folia. Proxies auto-register backends and route players with pluggable strategies.
Templates are versioned file trees per group/name. Built-in and custom %VARIABLES% are substituted when an instance deploys. Edit the values and watch the render.
# server.propertiesserver-port=%SERVER_PORT%motd=%INSTANCE_NAME% - powered by Universe # start.flags--instance-id %INSTANCE_ID%--max-memory %MAX_MEMORY% # variables
# one master exposes the api & holds state · N wrappers execute instances
#!/usr/bin/env bash
# everything the console does over http
KEY=ak_live_… # bearer key · ALL scope
curl :7000/api/cluster/status \
-H "Authorization: Bearer $KEY"
curl -X POST :7000/api/instance/27c625/execute \
-H "Authorization: Bearer $KEY" \
-d "say Universe online" | id | name | state | node | host:port | runtime |
|---|---|---|---|---|---|
| 564574 | game-server-na | ONLINE | na-game-1 | 100.64.0.8:25100 | docker |
| 27c625 | game-lobby-na | ONLINE | na-game-1 | 100.64.0.8:25000 | docker |
| 2bb48e | proxy-na | ONLINE | na-game-1 | 100.64.0.8:40188 | docker |
| b60372 | anticheat | ONLINE | na-game-1 | 100.64.0.8:4368 | docker |
| 12192c | pubapi | ONLINE | na-game-1 | 100.64.0.8:8087 | docker |
| 559415 | game-server-dev | STARTING | na-game-1 | 100.64.0.8:25101 | docker |
| capability | open-source | licensed |
|---|---|---|
| master / wrapper clustering | ✓ | ✓ |
| template-based deployment | ✓ | ✓ |
| built-in runtimes (screen, tmux) | ✓ | ✓ |
| docker & kubernetes runtimes | ✓ | ✓ |
| REST + WebSocket API | ✓ | ✓ |
| official extensions (s3, metrics, dbs) | ✓ | ✓ |
| minecraft plugins (paper, velocity) | ✓ | ✓ |
| self-host, unlimited nodes | ✓ | ✓ |
| community support | ✓ | priority |
| web management panel | self-host | hosted + sso |
| license-key entitlements | - | ✓ |
| hardened release channel & slas | - | ✓ |
| onboarding & deployment support | - | ✓ |
get started
one command. spin up the whole cluster.
One line installs Docker, writes a compose.yml, and starts the cluster. Prefer standalone? The JAR runs on its own, it just wants more flags.
curl -fsSL https://get.lunarlabs.dev/universe | sh