Every Universe node readsDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/universeclouddev/Universe/llms.txt
Use this file to discover all available pages before exploring further.
./config.json on startup to determine its identity in the cluster, which address and port to bind Hazelcast on, where the Master lives, and how many resources it may allocate to instances. The same JAR acts as either a Master or a Wrapper depending on the isMasterNode flag; all other fields follow from that role.
If
config.json does not exist when you first launch the JAR, Universe creates it automatically alongside the other required directories. Edit the generated file and restart to apply your values.First-Run Directory Structure
On first launch Universe initialises the following layout next to the JAR:Full Configuration Example
Field Reference
| Field | Type | Default | Description |
|---|---|---|---|
address | string | "127.0.0.1" | The IP address this node advertises to the cluster. Used as the default for bindAddress and publicAddress. |
port | integer | 6000 | Hazelcast member port. |
apiPort | integer | 7000 | Ktor REST API port (Master only; Wrappers do not expose an API). |
nodeId | string | "node-1" | Unique identifier for this node within the cluster. Appears in instance metadata and console output. |
clusterName | string | "universe-cluster" | Hazelcast cluster group name. All members in the same cluster must share this value. |
isMasterNode | boolean | true | When true this node acts as the Master: it hosts the REST API and dispatches tasks. When false it is a Wrapper. |
masterAddress | string | "127.0.0.1" | Hostname or IP of the Master node’s Hazelcast interface. Wrappers use this to join the cluster. |
masterPort | integer | 6000 | Hazelcast port of the Master node. |
masterApiPort | integer | 7000 | REST API port of the Master node (used by plugins and clients to reach the API). |
debug | boolean | false | Enables verbose DEBUG logging in the console and raises Logback to INFO for framework loggers. |
maxRamMB | integer | 8192 | Maximum RAM in megabytes this node is allowed to allocate across all running instances. |
maxCpu | integer | 400 | Maximum CPU units this node may allocate. 100 units equals one physical core. |
updateSources | array | [] | List of auto-update source definitions. Each entry polls a remote URL on a schedule and writes the result to a local path. See the sub-fields table below. |
nodeSpecificVariables | object | {"region":"us-east-1"} | Arbitrary key/value pairs exposed as template variables on this node only. Each key k becomes %k% in template variable replacement. |
bindAddress | string | address | Address Hazelcast binds its server socket to. Set to "0.0.0.0" inside Docker to accept connections on all interfaces. |
publicAddress | string | address | Address advertised to other Hazelcast members. Use your Tailscale IP when running behind Docker NAT. |
updateSources Entry Fields
Each object in the updateSources array controls one auto-update source:
| Sub-field | Type | Default | Description |
|---|---|---|---|
url | string | — | Remote file URL to download. |
targetPath | string | — | Local path to write the file (e.g. "./configuration/lobby.json"). Use a trailing slash for template directories (e.g. "./templates/global/server/"). |
hashUrl | string | null | null | Optional URL of a hash file (.sha256, .sha1, or .md5). If omitted, Universe tries common suffixes automatically. |
intervalMs | integer | 60000 | Polling interval in milliseconds. Default is 60 seconds. |
enabled | boolean | true | Whether this source is active. Set to false to pause polling without removing the entry. |
syncToStorage | string | null | null | Optional storage provider key (e.g. "s3") to sync to after a successful download. When set and targetPath is under ./templates/, the file is also uploaded to that storage provider. |
Master vs Wrapper Configuration
- Master Node
- Wrapper Node
- Docker Compose
The Master exposes the REST API, hosts the Hazelcast cluster, and routes deploy/stop tasks to Wrappers. Its
isMasterNode must be true and masterAddress/masterPort should point back to itself.Debug Logging
Thedebug field controls the verbosity of both the user-facing console and the SLF4J/Logback file logger:
debug value | Console output | Logback console | Log file |
|---|---|---|---|
false | INFO+ operational messages | WARN+ only | Full detail |
true | INFO+ and DEBUG messages | INFO+ for all loggers including Hazelcast, Netty | Full detail |
./logs/universe.log, rotated daily, and retained for 30 days.