Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Managing Multiple Servers

Each managed server is a fully independent install: its own folder, save data, game port, query port, and REST control port. Creating/importing/starting servers requires an active trial or subscription; Safety Mode never stops or deletes one that is already running. PalCommand assigns and tracks these per server so two servers on the same machine never collide.

Everything below lives on one server’s own page (click its card, or Open), organized as a hero and eight tabs. Three of the tab labels carry a live count: Players while the server is running, Backups, and Mods once PalDefender is installed.

The hero

At the top: a “‹ Dashboard” link back to the grid, a monogram, the server’s name, its status pill, and an action bar.

  • Running: Restart and Stop buttons.
  • Stopped, crashed, or crash-looping: a Start button.
  • Mid-transition (installing, starting, stopping, updating), not yet installed, or broken: Start, disabled, so the bar doesn’t jump around while the server cycles.

Restart and Stop always confirm, every time, not just when players are online. If anyone is connected, the confirm dialog adds a line stating how many players and warning them they’ll get a 60-second countdown before the restart or shutdown happens. Stop’s confirm text is the product’s line: “Stopped is not an error. Start it again anytime.”

Below the name, a meta row: a click-to-copy address chip (ip:port, falling back to the bare game port), current players, uptime, and the save file’s size. The last three only show while the values are meaningful. They disappear when the server isn’t running, and save size never shows a fake “0.0 MB” for a world that hasn’t been created yet.

Force stop, manual Update, Migrate co-op save…, and Delete stay on the dashboard card’s overflow menu. They aren’t in the hero.

Overview

If the server has ever crashed, a “Last crash” banner sits above the tiles with the exit code and how long ago it happened. It stays even after auto-restart brings the server back up on its own, and clears only on the next explicit start: an operator’s Start or Restart, or a scheduled restart task.

Four tiles: Players, Server FPS, RAM, Uptime, each with a small subtext (peak players today, minimum FPS in the last 24 hours, how much of total system memory the server is using plus the auto-restart threshold if you set one, and a “since” date). Below the tiles, one full-width players chart and two half-width FPS/RAM charts, sharing a range picker (1h / 24h / 7d, defaulting to 24h). On the right, a “Recent events” rail listing joins, saves, and alerts as they happen.

The live numbers on the tiles, and the rail, come from the event stream the backend pushes: they update as things happen and stop cleanly (showing a dash) when the server isn’t running. The charts are the one exception. They read stored history, and re-read it every 30 seconds while the tab is open, which is roughly how often the server records a new sample.

Console

The only “log file” a Windows Palworld server has: PalCommand captures its output and shows it here as a scrolling, color-tagged feed. Seven tags: INFO, SAVE, JOIN, LEAVE, WARN, CMD, CHAT, each its own color. The Chat filter chip exists but nothing produces a CHAT-tagged line yet: in-game chat only reaches the server’s own log, which PalCommand captures to disk but doesn’t parse, so the chip currently never matches anything. Filter chips at the top: All, Warnings, Chat. Buttons: Save world (saves immediately) and Copy log (copies whatever the current filter shows). An Auto-scroll switch on the right sticks the view to the bottom; scrolling up turns it off, scrolling back down (or flipping the switch) turns it back on.

At the bottom, a broadcast composer. Type a message, press Enter or the Send button, and it goes out to every connected player. It’s disabled whenever the server isn’t running, with a line under it saying so.

Players

Two tabs inside this pane: Online and Banned.

Online is a searchable table: name, Steam ID (mono, click-to-copy), level, ping, session length, and Kick / Ban buttons. Kick opens a caution confirm; Ban opens a destructive one. A successful ban shows a toast with an Undo action that unbans immediately. The Banned tab lists everyone banned through PalCommand, with a per-row Unban. This list only knows about bans made through the app itself; a ban applied outside PalCommand (RCON, in-game admin command) won’t show up here.

A header Broadcast button opens the same composer the Console tab uses.

Settings

Every PalWorldSettings.ini key PalCommand’s catalog knows about, grouped into six sections: GENERAL, RATES, WORLD & TIME, COMBAT & PVP, DEATH & DIFFICULTY, and GUILDS & BASES. A search box filters on both the key name and its description text. Editing a field marks it with a small dot and a “· was <old value>” note next to the key, and a “N modified” chip appears beside the search box.

Nothing saves until you act on the sticky bar that appears at the bottom while you have unsaved changes: Discard throws every edit away, Review & apply opens a dialog listing exactly which keys changed, old value struck through, new value beside it. From there:

  • Cancel: back out, nothing is touched.
  • Apply on next restart: saves the changes; they take effect the next time the server starts.
  • Apply & restart now: saves, then restarts the server immediately.

If players are online, the dialog states the count and the 60-second warning, no matter which apply option you’re about to pick. Only the keys you actually changed are ever sent to the server. If you try to switch to another tab with edits still unsaved, PalCommand asks before discarding them.

Backups

A policy line at the top states your current schedule (if any), how many backups are kept, and where they’re stored. Back up now saves the world first, then archives it. The table lists every backup with its date, build ID, size, and file name, each with a Restore button.

Restore works whether the server is running or stopped. It isn’t blocked on being stopped first. Confirming it: PalCommand stops the server if it was running, snapshots the current world (so restoring is never a one-way trip), restores the chosen backup, and starts the server back up again, but only if that stop actually succeeded. A stopped server just restores directly, no stop/start round-trip. If players are online when you start the restore, the confirm dialog carries the same player-count warning as any other restart-causing action.

Rotation only ever counts and deletes archives PalCommand itself wrote for that server. A copy an operator drops into the backup folder under their own name (a known-good snapshot before an update, say) is never counted against Keep last and never deleted by rotation. The same protection covers archives left behind by a deleted server that shared this server’s name, and archives written by an older version of PalCommand: rotation can’t vouch that those belong to this server, so it leaves them alone. They stay on disk until you remove them yourself.

Restore refuses an archive that was taken from a different instance, or one whose world doesn’t match what’s currently on this server, rather than risk writing a second world directory next to the live one and quietly breaking every later backup of this instance. There’s no override for this: pick the archive that actually belongs to the server you’re restoring into.

Schedule

Three cards, then a task table:

  • Auto-restart on memory: a switch and a slider (2 GB to 32 GB) that restarts the server if its memory crosses the threshold. The idle floor observed is around 941 MB, so the app recommends 4096 MB or higher to avoid false triggers.
  • Automatic updates: Manual or Immediately. Manual means you (or a scheduled Update task) dispatch patch-day updates yourself; Immediately applies a detected patch right away, with a configurable announce-seconds warning first.
  • Discord notifications: a per-server webhook override (falls back to the global one in App settings if left blank) and toggles for which events post: crash/crash-loop, update applied, backup failed, player joins. Save & test always sends through the global channel, since there is no way to test a per-server override on its own.

Below that, the maintenance-task table: cron-scheduled Restart, Backup, Update, or Announce tasks, each with an enable switch, Run now, and Delete. Add task opens a dialog with four presets (daily restart, restart every 6 hours, daily backup, hourly announce) plus Custom for a hand-written cron expression. Cron runs in UTC.

Network

Three cards: Windows Firewall, UPnP port mapping, and a connection check.

  • Windows Firewall: shows Allowed (with the UDP ports), Missing, Unknown, or Unavailable if PalCommand couldn’t reach the agent to ask, with Apply and Remove buttons. If applying fails (most often because PalCommand isn’t running elevated), the error includes a ready-to-run netsh advfirewall command you can copy and run yourself.
  • UPnP port mapping: strictly opt-in, never applied automatically. Map ports / Unmap. Router support varies; not every router accepts UPnP mappings.
  • Connection check: Run check tests three local facts: something is listening on this machine’s ports, the firewall rule exists, and the UPnP lease is current. It checks this machine only. It cannot confirm reachability from the internet. There’s no relay service behind it today, so PalCommand never claims to prove your server is reachable from outside your network.

Mods

PalDefender install management, Windows only (the game server and PalDefender both ship no other build; non-Windows shows a plain “Windows servers only” notice instead of the pane). A status card shows whether PalDefender is installed and, when PalCommand did the install itself, whether it’s up to date. When PalCommand can’t tell (the install was done by hand, from a zip, or by an older build) it says so and offers Reinstall latest instead of claiming you’re up to date.

Below that, an “Available versions” list shows what the author has published, but only the newest release with a downloadable asset can actually be installed. Install latest fetches that one; picking any older tag leaves Install disabled. For a specific older build, use Install from zip… with an archive you already have. Uninstall removes the proxy loader and PalDefender.dll; a switch next to it controls whether Config.json and Banlist.json are kept. All of these buttons are disabled with a “Stop the server first” tooltip unless the server is stopped. A Config files card shows the on-disk paths, copy-only. PalCommand doesn’t edit Config.json or Banlist.json in-app.