Skip to content

Garry's Mod Admin Commands: ULX and Server Console List

Install ULX and ULib, then run all 82 ULX admin commands plus the built-in Garry's Mod server console commands, sv_ and sbox_ convars, and group permissions.

Updated August 10, 2026
Garry's Mod

Garry's Mod ships with almost no admin system, so real moderation comes from ULX — the community-standard admin mod built on the ULib library. This guide covers the built-in server console commands and convars you still need, then the complete ULX command set, its group and permission model, and where it is all configured.

ULX is an addon, not a feature

Nothing in the ulx command set exists on a stock server. ULX requires ULib underneath, and both must be installed before any ! chat command or ulx console command does anything.

1. What Vanilla Garry's Mod Gives You

The base game has two admin tiers — admin and superadmin — and one file that assigns them:

"Users"
{
	"superadmin"
	{
		"garry"			"STEAM_0:1:7099"
	}

	"admin"
	{
	}
}
garrysmod/settings/users.txt — vanilla admin

That is the whole native system. Membership sets Player:IsAdmin(), which gates physgun pickup on other players' props and the admin cleanup command. There are no built-in kick, ban, freeze, teleport or jail commands for in-game admins — everything else happens at the server console or through an admin mod.

settings/users.txt is not the ULX admin list

These are two separate systems. Adding yourself here grants no ULX command — ULX keeps its own user list in the server's SQLite database (the ulib_users table), which it imports once from garrysmod/data/ulib/users.txt and then owns. Editing the wrong file is the most common cause of "I'm admin but nothing works".

2. Built-in Server Console Commands

From the Source engine, working with or without ULX. Run them at the server console or over RCON.

Command What it does
status Display map and connection status — names, userids, SteamIDs, ping, IPs
users Show user info for players on the server
kick <name> Kick a player by slot, userid or name
kickid <SteamID> "<reason>" Kick by SteamID or userid with a reason
banid <minutes> <SteamID> Add a user ID to the ban list — 0 minutes is permanent
addip <ip> Add an IP address to the ban list
removeid <SteamID> Remove a user ID from the ban list
removeip <ip> Remove an IP address from the ban list
listid List banned users
listip List IP addresses on the ban list
writeid Write permanently-banned user IDs to banned_user.cfg
writeip Save the IP ban list to banned_ip.cfg
changelevel <map> Change server to the specified map
maxplayers <n> Change the maximum number of players allowed
hostname "<name>" Set the server name
say "<message>" Display a server message in chat
rcon <command> Issue an RCON command
log <0/1> Enable the standard log file
gmod_admin_cleanup Clean up every player's props and entities on the map
gmod_cleanup Clean up only your own spawned props and entities
exit / quit Exit the engine (stop the server)

Garry's Mod also registers kickid2 and banid2 as Lua aliases. Facepunch's own source comments them "do not use" — they exist for legacy scripts.

banid takes minutes first, and bans vanish on restart without writeid

The order is banid <minutes> <SteamID>, not the reverse — Garry's Mod's own admin helper calls it that way. Engine bans are in-memory only: run writeid afterwards or the ban is gone at the next restart. ulx ban has neither problem.

3. Server ConVars Worth Setting

ConVar Default What it does
rcon_password 0 Remote console password
sv_password 0 Server password for entry
sv_cheats 0 Allow cheats on the server if set to 1
sv_alltalk 0 Players can hear all other players, no team restrictions
sv_lan 0 LAN server — no heartbeat, no authentication
sv_allowdownload 1 Allow clients to download files
sv_allowupload 1 Allow clients to upload customization files
sv_downloadurl 0 Allows downloading of files via a webserver (FastDL)
sv_region -1 The region of the world to report this server in
sv_timeout 65 Seconds without a client message before the client is dropped
sv_allowcslua 1 Allow clients to run lua_openscript_cl and lua_run_cl — set 0 on public servers, or any client can execute Lua on you
sv_kickerrornum 0 Disconnect clients exceeding this many client-side errors — 0 disables
physgun_limited 0 When enabled the physgun can only pick up props and ragdolls

Sandbox behaviour toggles and per-player limits, with the shipped defaults from Facepunch's sandbox.txt:

ConVar Default ConVar Default
sbox_noclip 1 sbox_godmode 0
sbox_playershurtplayers 1 sbox_weapons 1
sbox_maxprops 200 sbox_maxsents 100
sbox_maxragdolls 10 sbox_maxeffects 200
sbox_maxvehicles 4 sbox_maxnpcs 10
sbox_maxconstraints 2000 sbox_maxropeconstraints 1000

The remaining per-entity caps follow the same sbox_max<thing> pattern — wheels and thrusters 50, balloons 100, emitters 20, lamps 3, lights 5.

4. Installing ULX and ULib

ULX requires ULib. Install both, ULib first.

Workshop: add both IDs to your server's Workshop collection and load it with +host_workshop_collection <id> — ULib is 557962238, ULX is 557962280. See Setting up Steam Workshop and FastDL for Garry's Mod.

Manual: download the release ZIPs from ulyssesmod.net and extract each into its own folder, giving you garrysmod/addons/ulib/ and garrysmod/addons/ulx/.

A map change is not enough

Team Ulysses' install notes are blunt: "You absolutely, positively have to do a full server restart after installing the files. A simple map change will not cut it!" Stop the server and start it again.

Current releases are ULib 2.71 and ULX 3.81. Check yours with ulx version.

5. Granting the First Admin

Nobody has ULX access on a fresh dedicated server. The server console has full access by default, so grant the first superadmin from there:

ulx adduserid STEAM_0:1:7099 superadmin
Server console — granting the first superadmin

Promote everyone else in-game with ulx adduser <player> <group>. adduser needs the player connected; adduserid works offline and also accepts an IPv4 address.

adduserid needs the STEAM_0 format, not SteamID64

ULib validates against ^STEAM_%d:%d:%d+$. Paste a 17-digit SteamID64 and it is silently treated as a Garry's Mod UniqueID — no error, no access. Convert to STEAM_0:X:YYYYYYY first.

Run it from the panel, not in-game

The Console tab on your Garry's Mod game server is the server console, so it already holds full ULX access. Paste the ulx adduserid line there and it takes effect immediately, no restart.

Promoting someone from the in-game menu

Once one superadmin exists, nobody has to touch the console again to hand out access. Type !menu in chat and open the Groups tab.

  1. Choose the group from the dropdown at the top — admin, superadmin, or any group you have created.
  2. The panel below lists Users in group:. Click Add....
  3. Connected players come first, each shown as Name | current group. Below a separator are users ULX already knows but who are offline, and below that Add by SteamID... for everyone else.
  4. Click a name. It applies immediately — no restart, no map change, and if the player is connected their group changes under them there and then.

Nothing separate is happening here. Picking a name runs ulx adduserid <steamid> <group> for you, so the menu and the console write to the same ULX user list — still nothing to do with garrysmod/settings/users.txt. Change... moves whoever is selected into another group, and Remove User inside that same menu drops them back to user.

The Groups tab is superadmin-only

ULX puts the tab behind an access string, xgui_managegroups, granted to superadmin by default. An admin opening !menu will not see it at all. That is also why the very first superadmin has to come from the console — until one exists there is nobody in-game with the access to grant it.

Add by SteamID... is validated exactly as ulx adduserid is: paste anything that is not STEAM_0:X:YYYYYYY and you get an "Invalid SteamID!" box rather than the silent failure the console gives you. To read a connected player's STEAM_0 ID, run status in the console.

6. Where to Type Commands, and How to Target Players

Where Form Example
Server console / RCON ulx <command> ulx ban "Bob" 60 Spamming
Client console ulx <command> ulx slap Bob 10
In-game chat !<command> !slap Bob 10
Admin chat @<message> @minge on the roof
Chat box broadcast @@<message> @@Restart in 5 minutes
Centre-screen broadcast @@@<message> @@@Restart in 5 minutes

ULX registers ! say commands only — /kick does nothing. If / commands work on your server they come from a gamemode like DarkRP; see Garry's Mod Gamemodes. !menu opens XGUI, the bundled admin menu, which shows only what you have access to.

Every command taking a player accepts partial names, a comma-separated list, or these keywords: * all players, ^ yourself, @ the player you are looking at, #<group> that group exactly, %<group> that group counting inheritance, $<id> a particular ID, @<team> a team. Prefix any of them with ! to negate.

ulx slay *              ; slay everyone
ulx freeze @            ; freeze whoever you are looking at
ulx kick %user Minging  ; kick the user group and anything inheriting it
ulx bring !^            ; bring everyone except yourself
Targeting examples

7. ULX Moderation Commands

Command Chat Level What it does
ulx kick <player> [reason] !kick admin Kicks target
ulx ban <player> [minutes] [reason] !ban admin Bans target — 0 minutes is permanent
ulx banid <steamid> [minutes] [reason] !banid superadmin Bans a SteamID, online or not
ulx unban <steamid> !unban admin Unbans a SteamID
ulx who [steamid] user Information about currently online users
ulx spectate <player> !spectate admin Spectate target
ulx map <map> [gamemode] !map admin Changes map and gamemode
ulx version !version user Version information
ulx motd !motd user Show the message of the day

[minutes] accepts a time string as well as a number, so ulx ban Bob 2w Cheating works. Since ULib 2.7 bans live in the ulib_bans table of Garry's Mod's sv.db SQLite database — data/ulib/bans.txt is read once for migration, then ignored.

8. ULX Player State and Punishment

Command Chat Level What it does
ulx slap <players> [damage] !slap admin Slaps target(s) with given damage
ulx whip <players> [times] [damage] !whip admin Slaps target(s) x times with given damage each
ulx slay <players> !slay admin Slays target(s)
ulx sslay <players> !sslay admin Silently slays target(s)
ulx freeze / ulx unfreeze <players> !freeze / !unfreeze admin Freezes and unfreezes target(s)
ulx jail / ulx unjail <players> [seconds] !jail / !unjail admin Jails target(s) — 0 seconds is forever
ulx jailtp <player> [seconds] !jailtp admin Teleports, then jails target
ulx ragdoll / ulx unragdoll <players> !ragdoll / !unragdoll admin Ragdolls target(s)
ulx ignite / ulx unignite <players> [seconds] !ignite / !unignite admin Ignites target(s), 1–300 seconds
ulx unigniteall !unigniteall admin Extinguishes all players and all entities
ulx blind / ulx unblind <players> [0-255] !blind / !unblind admin Blinds target(s)
ulx cloak / ulx uncloak [players] [0-255] !cloak / !uncloak admin Cloaks target(s)
ulx god / ulx ungod [players] !god / !ungod admin Grants and removes god mode
ulx hp <players> <hp> !hp admin Sets HP for target(s)
ulx armor <players> <0-255> !armor admin Sets armor for target(s)
ulx strip <players> !strip admin Strips weapons from target(s)
ulx noclip [players] !noclip admin Toggles noclip on target(s)
ulx maul <players> !maul superadmin Mauls target(s)
ulx playsound <sound> admin Plays a sound, path relative to the sound directory

9. ULX Teleport Commands

Command Chat Level What it does
ulx bring <players> !bring admin Brings target(s) to you
ulx goto <player> !goto admin Teleports you to target
ulx send <player> <player> !send admin Sends the first player to the second
ulx teleport [player] !tp, !teleport admin Teleports target to where they are looking
ulx return [player] !return admin Returns target to their position before a teleport

10. ULX Chat Commands

Command Chat Level What it does
ulx psay <player> <message> !p user Private message to target
ulx asay <message> @ user Message to currently connected admins
ulx tsay <message> @@ admin Message to everyone in the chat box
ulx csay <message> @@@ admin Message in the middle of everyone's screen
ulx thetime !thetime user Shows the server time
ulx gag / ulx ungag <players> !gag / !ungag admin Gags target(s), disabling their microphone
ulx mute / ulx unmute <players> !mute / !unmute admin Mutes target(s) so they cannot use text chat
ulx gimp / ulx ungimp <players> !gimp / !ungimp admin Replaces target's chat with lines from gimps.txt

gag is voice, mute is text. A player being a nuisance in both needs both.

11. ULX Voting Commands

Command Chat Level What it does
ulx vote <title> <option> <option>… !vote admin Starts a public vote, 2–10 options
ulx votekick <player> [reason] !votekick admin Public kick vote against target
ulx voteban <player> [minutes] [reason] !voteban admin Public ban vote, defaults to 1440 minutes
ulx votemap [map] !votemap user Vote for a map; no arguments lists available maps
ulx votemap2 <map> [map…] !votemap2 admin Public map vote between 1–10 named maps
ulx veto !veto admin Vetoes a successful votemap
ulx stopvote !stopvote superadmin Stops a vote in progress

Thresholds are convars: ulx votekickSuccessratio defaults to 0.6 with ulx votekickMinvotes 2; ulx votebanSuccessratio to 0.7 with ulx votebanMinvotes 3.

12. ULX Server and RCON Commands

All superadmin by default, and all capable of ending your server.

Command Chat What it does
ulx rcon <command> !rcon Executes a command on the server console
ulx luarun <code> Executes Lua in the server console — use = for output
ulx exec <file> Executes a file from the server's cfg directory
ulx cexec <players> <command> !cexec Runs a command on the console of target(s)
ulx ent <classname> [flag:value] Spawns an entity with optional key-values
ulx debuginfo Dumps debug information
ulx resettodefaults Resets all ULX and ULib configuration

ulx luarun is root access to your server

It runs arbitrary Lua in the server realm — it can read your files, wipe your database and open a backdoor. Never grant it to a group you would not hand the RCON password to. The same applies to ulx rcon and ulx cexec.

ulx debuginfo and ulx resettodefaults ship with no default group access at all — ULib's rule is "no specific instruction, assume they don't have access". Until granted explicitly they run only from the server console or listen-server host.

13. Groups and Permissions

ULib's access system (UCL) ships with four groups. Inheritance flows upward, so a superadmin has everything an admin has.

Group Inherits from Can target
user default group for everyone
operator user !%admin — anyone not admin or above
admin operator !%superadmin — anyone not superadmin
superadmin admin everyone

operator exists but has no permissions by default — it is a blank slate for a trusted-moderator tier.

Command What it does
ulx adduser <player> <group> Add a connected user to a group
ulx adduserid <id> <group> Add a user by SteamID, IP or UniqueID
ulx removeuser <player> / ulx removeuserid <id> Permanently remove a user's access
ulx userallow <player> <command> [access tag] Add one command to one user's access
ulx userallowid <id> <command> [access tag] Same, by ID
ulx userdeny <player> <command> / ulx userdenyid <id> <command> Remove a command from a user's access
ulx addgroup <group> [inherits from] Create a group, optionally inheriting another
ulx renamegroup <current> <new> Rename a group
ulx removegroup <group> Remove a group — use with caution
ulx groupallow <group> <command> [access tag] Add a command to a group's access
ulx groupdeny <group> <command> Remove a command from a group's access
ulx setgroupcantarget <group> [target string] Set what a group is allowed to target
ulx usermanagementhelp Prints ULX's own user management help
ulx help Lists every command you have access to
ulx menu Opens XGUI, the graphical admin menu
ulx addgroup moderator user
ulx groupallow moderator "ulx kick"
ulx groupallow moderator "ulx slay"
ulx groupallow moderator "ulx freeze"
ulx setgroupcantarget moderator !%admin
ulx adduserid STEAM_0:0:12345678 moderator
Building a moderator tier

Groups live in data/ulib/groups.txt. Users do not — ULX stores them in the SQLite ulib_users table, and data/ulib/users.txt is only the legacy file it imports from. ULX writes both automatically — edit them only with the server stopped, and expect ULib to rewrite a malformed file (keeping a backup). To audit a rank, log in as an account in it and run ulx help.

14. Configuration and Logging

ULX writes its configuration into garrysmod/data/ulx/ on first run. The main file is config.txt, and every setting in it is also a live convar you can set with ulx <setting> <value>.

Setting Default What it does
ulx logFile 1 Log to file — with this off nothing reaches disk
ulx logDir ulx_logs Log directory under garrysmod/data
ulx logEcho 1 0 off, 1 anonymous ("Someone slapped Bob"), 2 full names
ulx logEvents 1 Log connects, disconnects and deaths
ulx logChat 1 Log player chat
ulx logSpawns 1 Log prop and entity spawns
ulx logJoinLeaveEcho 1 Echo joins and leaves to in-game admins
ulx welcomemessage Shown on join; supports %host% and %curmap%
ulx chattime 0 Anti-spam — players can only chat every x seconds
ulx showMotd 2 0 off, 1 file, 2 XGUI generator, 3 URL
ulx rslotsMode 0 Reserved admin slots — four modes, documented in config.txt

Logs land in data/ulx_logs/MM-DD-YY.txt. data/ulx/ also holds banreasons.txt, adverts.txt, gimps.txt, votemaps.txt, downloads.txt, motd.txt and sbox_limits.txt. Per-map and per-gamemode overrides work too — create data/ulx/maps/<mapname>/config.txt or data/ulx/gamemodes/<gamemodename>/config.txt. Settings add to each other, except gimps.txt and votemaps.txt where only the most specific file applies.

15. Sourcebans++ for Multi-Server Communities

Sourcebans++ shares bans across every server pointed at the same MySQL database, adding a web portal, appeals and a public ban list. It needs that database (see How to create a Database via your panel), a web server for the PHP portal, and the addon on each GMod server. It is overkill for one server — run ULX alone until you have two or more that need shared enforcement.

16. Common Problems

  • !menu does nothing. ULib is missing, or you only changed maps after installing. Both addons must be in garrysmod/addons/ and the server needs a full restart.
  • ulx adduserid said nothing and the user has no access. You used a SteamID64. ULib only validates STEAM_0:X:YYYYYYY.
  • Commands work for you but not your staff. You are the listen-server host or at the server console, both of which bypass access checks. Test with a real account in the target group.
  • A command shows in ulx help but is refused. An explicit deny on the user overrides every group allow. Clear it with ulx userdeny <player> <command> and the optional boolean, which removes the entry rather than denying it.
  • Bans reappear after a restart. You used the engine's banid and never ran writeid. Use ulx ban or ulx banid instead.

17. FAQ

How do I make myself admin in Garry's Mod?

From the server console — or your host's console tab — run ulx adduserid STEAM_0:X:YYYYYYY superadmin. The server console always has full ULX access, so this works before anyone is an admin. It is separate from garrysmod/settings/users.txt, which controls only the vanilla IsAdmin() flag.

What is the difference between ULX and ULib?

ULib is a developer library providing user access lists, command parsing and utility functions. It has no admin commands of its own and you never interact with it directly. ULX is the admin mod built on top of it, and will not load without ULib installed.

Are ULX commands typed with ! or /?

! in chat, or ulx <command> in console. ULX also registers @ for admin chat, @@ for a chat-box broadcast and @@@ for centre-screen. It never registers / — those come from gamemodes like DarkRP.

How do I create a custom admin rank?

ulx addgroup <name> <group to inherit>, then grant commands one at a time with ulx groupallow <group> "<command>". Limit who they can act on with ulx setgroupcantarget <group> !%admin. All of it is also doable through the Groups tab of !menu.

Where are ULX bans stored?

In the ulib_bans table of Garry's Mod's sv.db SQLite database, since ULib 2.7. The old data/ulib/bans.txt is only read once for migration, so editing it has no effect. Engine bans from banid are separate again, landing in banned_user.cfg after you run writeid.

How do I stop players spawning hundreds of props?

Lower the sandbox limits — sbox_maxprops defaults to 200 per player, sbox_maxsents to 100, sbox_maxragdolls to 10. Set them in server.cfg or via the Settings tab of !menu. Turning on ulx logSpawns also tells you who is doing it.

Why can my moderators kick each other?

No targeting restriction is set. Run ulx setgroupcantarget <group> !%<group> so members of a tier cannot act on their own tier. The default admin group already carries !%superadmin for this reason.


Made with 💜 by GameServerKings

Need a Garry's Mod server?

Deploy an instantly-provisioned Garry's Mod server on high-clock hardware — DDoS protected, no contracts, cancel anytime.

From $4.90 /month