Skip to content
GModGModServer Admin

Garry's Mod Server Admin, RCON & ULX Commands: Console Reference

Every Garry's Mod admin command an operator needs: enable Source RCON (and why "GMod RCON is broken" is folklore), the built-in kick/ban commands and what users.txt actually does, install ULX and bootstrap your first superadmin, the full ULX moderation command set with its real default groups, sandbox limit cvars, and Workshop content hosting - plus the traps: timed bans never persisting, ULib bans living in SQLite since 2022, and the dead sbox_plpldamage cvar.

HaldonUpdated 145 views

A Garry's Mod dedicated server is a standard srcds install, so it speaks genuine Valve Source RCON - any Source RCON client works, same as Counter-Strike or TF2. But unlike other Source games, almost all real GMod administration happens in Lua addon land: the base game ships no admin menu at all, and the de-facto standard is ULX. This reference covers the confirmed behavior of both layers.

Enabling RCON

RCON rides the game port (default 27015, TCP) - there is no separate RCON port. Enable it by setting a password in garrysmod/cfg/server.cfg:

rcon_password "your_strong_password"

From a client console: rcon_password <password>, then prefix commands with rcon (e.g. rcon status). Dedicated RCON tools skip the prefix.

Two confirmed quirks worth knowing:

  • Changing rcon_password disconnects every authenticated RCON session - even setting it to the same value. Tools must re-authenticate.
  • "GMod's RCON is broken" is folklore. srcds ships anti-bruteforce cvars (sv_rcon_maxfailures, sv_rcon_banpenalty, sv_rcon_minfailures, sv_rcon_minfailuretime) that auto-ban an IP after repeated failed auths - including your own admin panel's IP after a saved wrong password. What gets described as "RCON randomly stops working" is almost always this self-lockout (or a third-party panel's reconnect bug), not the protocol.

Built-in moderation (no addons)

Run status first: it prints each player's name, userid, and Steam ID - the identifiers the ban commands take.

CommandSyntaxNotes
kickidkickid <userid>Kick by userid from status - immune to name tricks.
banidbanid <minutes> <userid or steamid>0 = permanent.
banip / addipaddip <minutes> <ip>IP ban (banip and addip are the same; Valve documents addip).
writeid / writeipwriteidWrite permanent bans to banned_user.cfg / banned_ip.cfg.

Ban persistence traps (standard srcds semantics, confirmed for GMod):

  1. Timed bans never persist. writeid writes only permanent (0-minute) bans; a banid 60 ... ban lives in memory and dies with the server process.
  2. Config order matters. server.cfg must exec banned_user.cfg / exec banned_ip.cfg before any writeid/writeip runs, or a fresh writeid overwrites the file and silently erases your existing bans.

What settings/users.txt actually does

garrysmod/settings/users.txt assigns players to the base admin/superadmin groups, which Lua reads via Player:IsAdmin() / Player:IsUserGroup(). The base game ships nothing that acts on it - no admin menu, no scoreboard kick button. It only sets a flag for addons to check. Practical admin on GMod means installing an admin addon; that is where ULX comes in.

ULX + ULib: install and bootstrap

ULX (built on the ULib library) is the dominant GMod admin system: 70+ commands, chat shortcuts, and the XGUI menu. Install both, either way:

  • Filesystem: extract to lowercase garrysmod/addons/ulx/ and garrysmod/addons/ulib/.
  • Workshop: subscribe the server to ULX (557962280) and ULib (557962238).

Then do a full server restart - a map change is not enough to load them.

Bootstrap your first superadmin from the server console (not in-game):

ulx adduser YourName superadmin

After that, commands work three ways: server/RCON console (ulx kick ...), in-game chat (!kick ...), or the GUI - chat !menu, or bind a key with bind j xgui.

ULX moderation commands

Syntax below is verified against the ULX source; "access" is the default group required (changeable per group).

CommandChatDefault accessNotes
ulx kick <player> [reason]!kickadmin
ulx ban <player> [minutes] [reason]!banadmin0 = permanent; accepts time strings like 1d, 2w.
ulx banid <steamid> [minutes] [reason]!banidsuperadminSteam-ID-targeted; stricter default than ulx ban.
ulx unban <steamid>!unbanadmin
ulx map <map> [gamemode]!mapadminChanges map and optionally gamemode.
ulx slay <players>!slayadmin
ulx freeze <players> / ulx unfreeze <players>!freezeadmin
ulx jail <players> [seconds]!jailadmin0 = forever.
ulx noclip [players]!noclipadminDefaults to self.
ulx god [players]!godadmin
ulx cloak [players] [amount]!cloakadminAmount 0-255, default 255.
ulx tsay <message>@@adminMessage to everyone in chat.
ulx csay <message>@@@adminMessage centered on everyone's screen.
ulx psay <player> <message>!pallPrivate message - notably not admin-restricted.
ulx asay <message>@allAdmin-chat channel.

Target shortcuts work in any <players> slot: * = everyone, ^ = yourself, #<group> = a group's members, ! = negation (!^ = everyone but you).

Groups and permissions

The real default hierarchy is four groups, each inheriting the one below:

user -> operator -> admin -> superadmin

(Guides listing "guest/regular/operator/admin/superadmin" describe a set that does not exist in the ULib source.) Manage them with superadmin-only commands:

CommandPurpose
ulx adduser <player> <group>Put a player in a group.
ulx removeuser <player>Remove a player's group.
ulx addgroup <group> [inherits]New group; inherits user by default.
ulx removegroup <group>Delete a group.
ulx userallow / userdeny <player> <command>Per-player command grant/deny.
ulx groupallow / groupdeny <group> <command>Per-group command grant/deny.

Where ULX bans live changed in 2022. ULib v2.70 moved bans from the flat data/ulib/bans.txt into the server's SQLite database, and v2.72 moved user/group data there too. Old guides pointing you at bans.txt describe the legacy format - on a current install, edit bans through ULX itself (ulx ban/ulx unban/XGUI), not by hunting for a text file.

One more scoping note: FAdmin, the other admin menu people ask about, is bundled inside the DarkRP gamemode - it is not part of base GMod and not a standalone addon.

Gamemodes and maps

The gamemode and map are launch parameters:

srcds -console +maxplayers 20 +gamemode sandbox +map gm_construct +sv_setsteamaccount <GSLT>
  • Sandbox is the default gamemode; TTT (Trouble in Terrorist Town) is also bundled with base GMod (garrysmod/gamemodes/terrortown/, gamemode name terrortown).
  • DarkRP is not bundled - it is a separate Workshop/GitHub install, unlike TTT.
  • Live map/gamemode changes are easiest via ulx map <map> [gamemode].

Sandbox cvars

Verified against the live sandbox gamemode source:

CvarEffect
sbox_godmodeGlobal player invulnerability (default off).
sbox_playershurtplayersPvP damage toggle. The often-quoted sbox_plpldamage does not exist in the current source - use this one.
sbox_noclipWhether players may noclip at all. Serious servers set 0 and grant noclip through ULX's own permission instead.
sbox_weaponsWhether players spawn with the sandbox weapon loadout (physgun/toolgun are separate).
sbox_maxpropsPer-player prop cap.

The same sbox_max* family covers other entity types (sbox_maxragdolls, sbox_maxvehicles, sbox_maxballoons, sbox_maxeffects, sbox_maxlamps, sbox_maxthrusters, sbox_maxwheels, sbox_maxnpcs, sbox_maxsents, ...). Defaults vary between GMod versions and host panels - check sbox_maxprops in your own console rather than trusting a copied number.

Workshop content

Two mechanisms that guides constantly conflate:

  1. Mounting addons on the server: launch params +host_workshop_collection <collectionID> -authkey <key>. The key is a Steam Web API key from steamcommunity.com/dev/apikey, and the collection must be public. This downloads and mounts the collection server-side.
  2. Making clients download content: resource.AddWorkshop("<workshopID>") in a server Lua file (e.g. garrysmod/lua/autorun/server/workshop.lua). This only queues the addon for client download - it does not install anything server-side. The resource.Add* family shares an 8192-file cap.

Best practice from the official Serving Content docs: prefer Workshop download (or FastDL via sv_downloadurl) over the legacy in-engine transfer, which is throttled to a crawl - and don't add Lua-only addons to the client download list; Lua transfers separately and listing it just slows joins.

Useful server cvars

CvarEffect
sv_passwordJoin password (empty = public).
sv_downloadurlFastDL HTTP mirror for custom content.
sv_allowupload / sv_allowdownloadLegacy in-engine file transfer toggles.
sv_kickerrornumAuto-kick a player after N Lua errors. Default 0 = disabled on modern GMod (older guides claim otherwise).
gmod_physiterationsPhysics solver iterations (default 4). Raising it steadies complex contraptions at a CPU cost - leave it unless you need it.
host_timescaleGame speed (requires sv_cheats 1).

server.cfg is re-executed on every map load, so live cvar experiments reset at the next change unless written into the file.

Common mistakes

  • Expecting users.txt to give you an admin menu. It only sets a group flag for Lua to read; install ULX.
  • Installing ULX and only changing the map. It needs a full server restart to load.
  • writeid before exec banned_user.cfg in server.cfg - wipes the existing ban file. And timed bans never persist regardless.
  • Editing data/ulib/bans.txt on a current install - ULib has stored bans in SQLite since v2.70 (2022); the file is legacy.
  • Setting sbox_plpldamage - dead cvar; the live one is sbox_playershurtplayers.
  • Diagnosing "broken GMod RCON" - check whether sv_rcon_maxfailures banned your own IP after failed auth attempts before blaming the server.
  • Granting ulx banid casually - it defaults to superadmin (stricter than ulx ban) for a reason: it bans by raw Steam ID with no in-server target check.
  • Using resource.AddWorkshop and expecting the addon to run server-side - it only makes clients download it; mount it with host_workshop_collection too.

Because Garry's Mod speaks genuine Valve Source RCON, MantaScope's web RCON connects to your server straight from the browser - send these commands, watch the live player list, and manage bans without a desktop tool - alongside population history, uptime tracking, scheduled restarts, and Discord alerts.

Garry's Mod Server Admin, RCON & ULX Commands… - MantaScope