Universe ships as a single fat JAR produced by theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ohemilyy/universe/llms.txt
Use this file to discover all available pages before exploring further.
loader module. On first launch it writes a config.json with sane defaults, creates the required directories, and is ready to accept commands. This guide walks through the full path from binary to running instance, with a Docker Compose alternative for container-based setups.
Prerequisites:
- JDK 25 or higher (required to run the JAR)
- Gradle 9.5 or higher (required only if building from source)
- Standalone JAR
- Docker Compose
Get the JAR
Option A — download a release:Grab the latest The fat JAR will be at
universe-loader-*.jar from the GitHub releases page.Option B — build from source:Clone the repository and run the Gradle build. Artifacts are copied to .built/ on success..built/universe-loader-0.0.1.jar.Run for the first time
Launch the JAR. If no The following files and directories are created on first run:
config.json is found, Universe writes one with defaults and exits — or continues running as a master node.| Path | Purpose |
|---|---|
./config.json | Node identity and cluster settings |
./configuration/ | Instance configuration files (.json) |
./templates/ | Template storage (<group>/<name>/) |
./running/ | Active instance working directories |
./extensions/ | Extension JARs and their configs |
Configure config.json
Open
Restart the JAR after editing
./config.json and set your node’s identity, cluster name, and role. The full set of fields with their defaults:config.json
| Field | Description |
|---|---|
address | This node’s bind address for Hazelcast |
port | Hazelcast cluster port |
apiPort | Ktor REST API port (Master only) |
nodeId | Unique identifier for this node |
clusterName | Hazelcast cluster name — must match across all nodes |
isMasterNode | true to start the Ktor API and act as cluster coordinator |
masterAddress | Hazelcast address of the Master (used by Wrapper nodes) |
masterPort | Hazelcast port of the Master |
masterApiPort | REST API port of the Master |
config.json.Add an instance configuration
Instance configurations live in Key fields to adjust for your application:
Reload configurations without restarting:
./configuration/. Create ./configuration/default.json:configuration/default.json
| Field | Description |
|---|---|
runtime | Runtime to use: screen, tmux, process, or a custom extension runtime |
command | Shell command to start the instance process |
nodes | List of nodeId values that can host this instance type |
availablePorts | Port range Universe scans when allocating a port for the instance |
templateInstallationConfig.allOf | Templates that are always applied, in priority order |
fileModifications | Files scanned for variable replacement (%PORT%, %INSTANCE_ID%, etc.) |
Next steps
Architecture
Understand how the Master, Wrappers, Hazelcast task dispatch, and the extension system fit together.
Instance configuration
Full reference for every field in
configuration/<name>.json.Templates
Learn how templates are structured, resolved, and how variable replacement works.
Extensions
Add Docker runtime support, S3 template storage, or build a custom extension.