A Windows desktop manager for Palworld Dedicated Server, built with C++20 + Qt 6 Widgets.
Install, update, run, configure and monitor your Palworld dedicated server from a single graphical app — with a fully schema-driven settings editor, REST-based remote control, backup/restore, log tailing, and bilingual (English / Vietnamese) UI.
This project is provided under the MIT License.
Official server docs: https://tech.palworldgame.com/
- Server lifecycle — install, update, start, stop (graceful REST shutdown), restart, with crash auto-restart, auto-start on launch, and scheduled restarts / backups.
- Multi-server profiles — manage several PalServer installations and switch between them from the top bar; settings and connections follow the active profile.
- Schema-driven Settings editor — every
PalWorldSettings.inikey is defined in one JSON schema and rendered as a categorized form with translated labels, search, reset-to-default, and presets (Vanilla / Casual / Hardcore / PvP). Change a setting → edit the JSON schema and translations, no C++ required. - REST API client — live info, players, metrics (FPS / uptime / players / basecamps), announce, kick, ban, unban, save, graceful shutdown. REST is LAN-only (a persistent warning is shown when it is enabled).
- Backup / restore — timestamped ZIPs of
Pal/Saved+ config, retention (count + age), run in the background so the UI never freezes; auto-backup before restart / reset / reinstall. - Player management — online players table, kick/ban/unban, player detail (stats, pals,
inventory from a
sav_clisave sync). - World data & map — save-file sync, offline player/guild snapshots, and a tile-based map view with player/camp markers.
- Whitelist — manage allowed players (UID / Steam ID) with optional kick-on-join enforcement.
- Scheduled RCON commands — run REST/RCON commands on an interval.
- Log tailing — live server log viewer with pause, filter, and open-folder.
- i18n — English + Vietnamese, switchable at runtime (Qt Linguist).
- Theming — dark & light themes, switchable at runtime.
| Page | Purpose |
|---|---|
| Dashboard | Live metrics, quick actions (save world, announce, shutdown, templates) |
| Launch Arguments | CLI flags (port, players, public lobby, perf threads, workers) |
| World Settings | Schema-driven PalWorldSettings.ini editor |
| Players | Online players + kick/ban/unban |
| World Data | Offline save snapshots via sav_cli |
| Whitelist | Allowed-player list |
| Map | Tile map + markers (requires sav_cli + map tiles) |
| Scheduled Commands | Interval-based RCON/REST tasks |
| Backup | Create / restore / delete backups |
| Logs | Live server log tail |
| Preferences | Language, theme, paths, REST/RCON, automation, map tiles, retention |
- Windows 10 / 11 (x64)
- A Palworld dedicated server installation (install via SteamCMD — the app can do this for you, or point it at an existing one)
- To build from source:
- C++20 compiler (MSVC 2022 / GCC 11+ / Clang 14+)
- CMake 3.21+
- Qt 6.4+ with modules
Widgets,Network,LinguistTools
Install Qt 6 via the online installer https://www.qt.io/download-open-source, then:
cmake -S . -B build -DCMAKE_PREFIX_PATH=C:/Qt/6.7.3/msvc2019_64
cmake --build build --config ReleaseRun unit tests:
ctest --test-dir build -C Release --output-on-failureThe binary is produced at build\Release\PalworldServerManager.exe. On first launch the
wizard asks for UI language, the PalServer install directory, and (optionally) the SteamCMD
path. The manager persists its own config under %APPDATA%/PalworldServerManager/config.json.
Note for Windows developers: the Qt DLLs live in
C:/Qt/.../bin. To run the tests or the built exe from a shell, add that folder toPATHfirst (e.g.set PATH=C:\Qt\6.7.3\msvc2019_64\bin;%PATH%), otherwise the loader reports a missing-DLL error (0xc0000135).
A self-contained installer is built with Inno Setup 6 (no system prerequisites at install time — it bundles the Qt runtime, MSVC v143 runtime, plugins and translations):
# 1. Build the Release binary (see above)
cmake --build build --config Release
# 2. Compile the installer (adjust the VC runtime dir if your path differs)
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer\PalworldServerManager.iss
# Output: installer\output\PalworldServerManagersetup.exeTo override the MSVC runtime directory: ISCC.exe /DVC_RUNTIME_DIR="<path>" installer\PalworldServerManager.iss
| Topic | URL |
|---|---|
| Requirements | https://tech.palworldgame.com/getting-started/requirements |
| Deploy dedicated server | https://tech.palworldgame.com/getting-started/deploy-dedicated-server |
| Configuration | https://tech.palworldgame.com/settings-and-operation/configuration |
| Launch arguments | https://tech.palworldgame.com/settings-and-operation/arguments |
| REST API | https://tech.palworldgame.com/category/rest-api |
- SteamCMD AppID:
2394010 - Game port (UDP):
8211(default) - REST port:
8212(community default, setRESTAPIPortin INI) - REST auth: HTTP Basic, username
admin, password =AdminPassword - REST requires:
RESTAPIEnabled=TrueinPalWorldSettings.ini - Config path:
<PalServer>/Pal/Saved/Config/WindowsServer/PalWorldSettings.ini - Template (read-only source):
<PalServer>/DefaultPalWorldSettings.ini
- REST is LAN-only per the official docs — do not expose
RESTAPIPortto the public internet. - Passwords are masked in the UI and never written to plain logs.
- RCON is deprecated by Pocketpair; this app uses REST as the primary remote-control path.
src/
app/ Application (central context), ManagerConfig
core/ SteamCmd, ServerProcess, IniOptionSettings, SettingsSchema,
RestApiClient, RconClient, BackupManager, LogTailer,
SavSyncService, WhitelistStore, RconTaskStore, WorldOps, SteamCmdBootstrap
ui/ MainWindow + 11 pages + Wizard + SettingsFormBuilder + dialogs
util/ Paths, IconProvider, TrKey
resources/
i18n/ en.ts, vi.ts (compiled to .qm at build time)
schema/ settings_schema.json (embedded — the source of truth for the Settings UI)
presets/ vanilla.json casual.json hardcore.json pvp.json
styles/ dark.qss, light.qss (embedded)
Art/ application icons
installer/ PalworldServerManager.iss (Inno Setup)
tests/ test_ini_parser.cpp test_schema.cpp
The Settings UI is fully schema-driven: resources/schema/settings_schema.json defines every
field and category; SettingsFormBuilder renders them. To add or change a world-setting field,
edit the JSON schema (and the i18n .ts files) — no C++ changes needed.
MIT © 2026 jukion. See LICENSE for the full text.