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.
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 disconnects every authenticated RCON session
rcon_password
- 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.
Command
Syntax
Notes
kickid
kickid <userid>
Kick by userid from status - immune to name tricks.
banid
banid <minutes> <userid or steamid>
0 = permanent.
banip / addip
addip <minutes> <ip>
IP ban (banip and addip are the same; Valve documents addip).
writeid / writeip
writeid
Write permanent bans to banned_user.cfg / banned_ip.cfg.
Ban persistence traps (standard srcds semantics, confirmed for GMod):
Timed bans never persist.writeid writes only permanent (0-minute) bans; a banid 60 ... ban lives in memory and dies with the server process.
Config order matters.server.cfg must exec banned_user.cfg / exec banned_ip.cfgbefore 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).
Command
Chat
Default access
Notes
ulx kick <player> [reason]
!kick
admin
ulx ban <player> [minutes] [reason]
!ban
admin
0 = permanent; accepts time strings like 1d, 2w.
ulx banid <steamid> [minutes] [reason]
!banid
superadmin
Steam-ID-targeted; stricter default than ulx ban.
ulx unban <steamid>
!unban
admin
ulx map <map> [gamemode]
!map
admin
Changes map and optionally gamemode.
ulx slay <players>
!slay
admin
ulx freeze <players> / ulx unfreeze <players>
!freeze
admin
ulx jail <players> [seconds]
!jail
admin
0 = forever.
ulx noclip [players]
!noclip
admin
Defaults to self.
ulx god [players]
!god
admin
ulx cloak [players] [amount]
!cloak
admin
Amount 0-255, default 255.
ulx tsay <message>
@@
admin
Message to everyone in chat.
ulx csay <message>
@@@
admin
Message centered on everyone's screen.
ulx psay <player> <message>
!p
all
Private message - notably not admin-restricted.
ulx asay <message>
@
all
Admin-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:
Command
Purpose
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.
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:
Cvar
Effect
sbox_godmode
Global player invulnerability (default off).
sbox_playershurtplayers
PvP damage toggle. The often-quoted sbox_plpldamage does not exist in the current source - use this one.
sbox_noclip
Whether players may noclip at all. Serious servers set 0 and grant noclip through ULX's own permission instead.
sbox_weapons
Whether players spawn with the sandbox weapon loadout (physgun/toolgun are separate).
sbox_maxprops
Per-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:
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.
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
Cvar
Effect
sv_password
Join password (empty = public).
sv_downloadurl
FastDL HTTP mirror for custom content.
sv_allowupload / sv_allowdownload
Legacy in-engine file transfer toggles.
sv_kickerrornum
Auto-kick a player after N Lua errors. Default 0 = disabled on modern GMod (older guides claim otherwise).
gmod_physiterations
Physics solver iterations (default 4). Raising it steadies complex contraptions at a CPU cost - leave it unless you need it.
host_timescale
Game 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.
How to Play Black Ops 2 Online in 2026 (Plutonium Setup Guide)