Every server you add to ServerPilot gets its own configuration record stored independently of all other servers. Per-server settings always take precedence over the global defaults — if a field is left blank, ServerPilot falls back to the corresponding value in your global Settings. This lets you share a common Java path and RAM budget across most servers while still overriding those values for specific instances that need them.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/GKExpo/ServerPilot/llms.txt
Use this file to discover all available pages before exploring further.
How server data is stored
Servers are persisted as a JSON array under theservers key in the same Electron-Store file used for global settings:
IPC channels
ServerPilot’s renderer communicates with the main process using the following IPC channels for server management:| Channel | Description |
|---|---|
server:add | Create a new server record (auto-generates id, createdAt, updatedAt) |
server:update | Update an existing server by id; requires id in the payload |
server:remove | Delete a server by id; returns the updated servers array |
server:detect | Scan a folder path and auto-detect the JAR name and server type |
Server options reference
The display name for this server. Shown in the sidebar, the server dashboard header, and in system tray notifications (e.g.
"My Paper Server is starting"). Choose a name that lets you distinguish this server at a glance when running multiple instances.The absolute path to the directory that contains this server’s files — including Use the folder-picker button in the UI (or the
server.properties, world data, and the JAR. This field is required: ServerPilot will refuse to start the server if the folder does not exist on disk.dialog:select-folder IPC call) to browse to the correct directory.The filename of the server JAR, relative to You can use the
folderPath. This field is required for launch. ServerPilot appends this name after -jar in the final Java command.server:detect IPC channel to auto-populate this field by scanning folderPath — it will pick the first JAR it finds, preferring Paper → Fabric → Forge → any other JAR in that order.The Java executable to use for this specific server. Leave blank (or set to
java) to inherit the value from defaultJavaPath in global Settings. Set to a full absolute path when this server requires a different Java version than your system default.The minimum Java heap allocation for this server, passed as
-Xms. Leave blank to inherit from defaultRamMin in global Settings. Accepts standard JVM notation (512M, 1G, 4G, etc.).Enter only the size value — do not include the
-Xms flag itself. That is added automatically by ServerPilot at launch time.The maximum Java heap allocation for this server, passed as
-Xmx. Leave blank to inherit from defaultRamMax in global Settings. Accepts the same notation as ramMin.Extra JVM flags inserted between the Java executable and
-jar at launch. Accepts a space-delimited string of arguments; quoted values with internal spaces are supported (e.g. -Dfoo="bar baz").ServerPilot automatically strips certain arguments from this field before launch and prints a warning to the console if any are removed. See the JVM Arguments page for the full list of sanitized flags, recommended GC settings, and safe argument patterns.An informational label describing the server software. This field does not affect how ServerPilot launches the server — it is used for display purposes in the sidebar and dashboard. ServerPilot auto-detects this value when you use the
server:detect IPC channel:| Detected value | Detection rule |
|---|---|
Paper | JAR filename contains paper |
Fabric | JAR filename contains fabric |
Forge | JAR filename contains forge |
Vanilla | JAR found but no known keyword matched |
Unknown | No JAR file found in the folder |
A per-server override for the path to the
playit.exe executable. When set, this value is used instead of the global playitPath from Settings. Leave blank to fall back to the global path.Controls whether Playit.gg is automatically launched alongside this server. When set, this value overrides the global
autoStartPlayit toggle for this server only. Playit will only start if a valid playitPath is available (either from this server or from global Settings).A universally unique identifier automatically generated by ServerPilot when the server is first created. This field is read-only — you should never need to set or change it manually. It is used internally to associate runtime state, logs, and player data with the correct server record.
The timestamp at which this server was first added to ServerPilot. Set once on creation and never updated afterward. Managed automatically — no manual input required.
The timestamp of the most recent change to this server’s configuration. Updated automatically by ServerPilot every time
server:add or server:update is called. Managed automatically — no manual input required.