Running a Garry's Mod TTT Server
Trouble in Terrorist Town is already on your server. A stock Garry's Mod dedicated install contains exactly three gamemodes under garrysmod/gamemodes/: base, sandbox and terrortown. That third one is TTT. You do not download it, you do not install an addon for it, and you do not need a Workshop item to get it. You select it. Most walkthroughs still tell people to fetch the gamemode from somewhere, and that advice has been wrong for years. Facepunch documents the mode itself on the Garry's Mod wiki TTT page.
Last verified: September 17, 2026. The gamemode folder name, and therefore the value you pass to gamemode, is terrortown, not ttt. The September 2026 update (live September 16) brought 64-bit binaries on Windows, so check which binary your host launches before blaming the gamemode for a startup failure.
What you actually have
Gamemodes live as plain directories at garrysmod/gamemodes/<name>/. List that folder on a fresh install of dedicated-server app 4020 (the game itself is app 4000) and terrortown is sitting there next to sandbox. Inside it, terrortown.txt is the gamemode manifest. It declares the display title "Trouble in Terrorist Town", derives from base rather than sandbox, and filters the map list with the pattern ^ttt_.
That last detail is the whole shape of the job. The gamemode is free and present. The maps are not.
Starting the server on terrortown
srcds_run ships with DEFAULT_GAME="garrysmod" and DEFAULT_MAP="gm_construct", so a launch with no arguments gives you sandbox on a construct map. Two arguments change that:
./srcds_run -game garrysmod +gamemode terrortown +map gm_construct +maxplayers 24Use gm_construct for the first boot only. It proves the gamemode loads, players connect and rounds tick, without any content delivery in the way. Once that works, switch to a real TTT map with changelevel, or set the boot map with host_map so a crash restart comes back on the right level. If you edit TTT convars while the server is live, gamemode_reload re-reads the gamemode without a full restart. Full install steps are in the dedicated-server setup guide.
The map problem, which is the real work
Only two maps ship with the game: gm_construct and gm_flatgrass. Every map conventionally prefixed ttt_ is community content, and it has to exist in two places: on the server, so it can load, and on each client, so players can render it. Getting one of those two right is the single most common TTT server failure.
- On the server: Garry's Mod loads every directory under
garrysmod/addons/, so a map dropped in as an addon folder is picked up on the next restart. - To the client: point
host_workshop_collectionat a collection that contains your maps and their content, so joining players are handed the same files. See Workshop collections and addons. - Or over HTTP:
sv_downloadurlwithsv_allowdownloadfor a FastDL mirror, andsv_loadingurlfor the loading screen. Details in Workshop download troubleshooting.
When delivery is incomplete, the symptom tells you which half broke. A purple and black checkerboard is a missing material. A red ERROR sign is a missing model. They are different faults with different fixes, and missing textures and ERROR models separates them. The shipped TTT readme also states that the gamemode requires Counter-Strike: Source content on a dedicated server, which is a mounting question rather than a Workshop one, covered in content packs and mounting.
Where TTT settings live
TTT does not ship a configuration file. There is no TTT entry in garrysmod/cfg/, and the gamemode's own code does not execute one. Its settings are console variables created by the gamemode when it loads, which means they only exist while terrortown is the active gamemode. Put them in server.cfg and they will be attempted on every gamemode that install ever runs, and silently fail on all the others. Keep them in a file of their own under garrysmod/cfg/ and exec it, so the TTT block travels with the gamemode rather than with the server.
These names are read straight from the shipped gamemode, with their shipped defaults:
// round pacing
ttt_haste 1 // on by default
ttt_haste_starting_minutes 5 // the clock when haste is on
ttt_roundtime_minutes 10 // the clock when haste is OFF
ttt_preptime_seconds 30
ttt_posttime_seconds 30
ttt_firstpreptime 60
ttt_minimum_players 2
ttt_round_limit 6
ttt_time_limit_minutes 75
// roles
ttt_traitor_pct 0.25
ttt_detective_pct 0.13
ttt_detective_min_players 8
ttt_detective_karma_min 600
// shop credits
ttt_credits_starting 2
ttt_credits_award_pct 0.35
ttt_det_credits_starting 1
// karma
ttt_karma 1
ttt_karma_starting 1000
ttt_karma_low_autokick 1
ttt_karma_low_amount 450
ttt_karma_low_ban_minutes 60Note the first trap: haste mode is on out of the box, so ttt_roundtime_minutes is not what governs your round length until you turn haste off. Note the second: which items appear in the traitor and detective shop is not a convar. Credit economy is configurable, the equipment list itself is gamemode code and addon territory, so treat shop contents as a Lua job rather than a server setting.
Server settings that matter for TTT
| Setting | TTT value | Why |
|---|---|---|
gamemode | terrortown | The folder name under gamemodes/. Not ttt. |
map | a ttt_ map | Stock maps boot but have no TTT layout, weapons or traitor routes. |
maxplayers | 16 to 32 | Below roughly 8 the role spread collapses. Above 32 the accusation chat becomes unreadable. |
sv_alltalk | 0 | Sandbox servers usually want this on. TTT breaks with it on, because dead players get heard by the living and call out the traitor. |
hostname | says "TTT" | Players filter the browser by gamemode text. A generic name gets sandbox visitors who leave in a minute. |
host_workshop_collection | your collection id | The only low-effort way to hand every joiner the same map and content set. |
Moderation, which TTT needs more than sandbox
Sandbox grief is annoying. TTT grief ruins a round for twenty people at once, and a round is the product. Set rcon_password to something you use nowhere else, and use sv_password only if the server is genuinely private, since a password hides you from casual browser traffic. Keep sv_cheats at 0 and decide deliberately about sv_pure. Command syntax and the safe operating rules are in admin commands and RCON.
TTT brings two automated defences of its own. Karma tracks who damages teammates and, with ttt_karma_low_autokick enabled by default, removes players who fall below ttt_karma_low_amount. Separately, ttt_namechange_kick is on by default because changing name mid round is a classic way to dodge an accusation. Neither replaces a human. An admin mod that can slay a single player mid round without restarting it is worth more on TTT than any other GMod gamemode.
Common problems
- The round never starts. TTT waits until enough non-spectating players are ready, and the threshold is
ttt_minimum_players, default 2. It re-checks every couple of seconds, and if someone leaves during preparation it drops back to waiting. Testing alone will never start a round at the default. - Everyone is innocent. There is always at least one traitor: the count is the player total times
ttt_traitor_pct, rounded down, then clamped to a minimum of one. What is genuinely absent at small player counts is the detective, because detectives are skipped entirely belowttt_detective_min_players, default 8. A six-player server with no detective is behaving correctly. - Players drop out on the map change. Almost always content delivery, not networking. Check the Workshop collection actually contains the map, then re-read the checkerboard versus ERROR distinction before touching connection settings.
- Dead players give the game away over voice. Set
sv_alltalk 0. TTT relies on the engine's own alive and dead voice separation, so alltalk overrides it wholesale.sv_voiceenabledisables voice entirely if you would rather run a text-only server.
Sizing a TTT server
TTT is round based and everyone is on one map at once, which makes it a different sizing problem from sandbox. There is no prop-spam memory spiral and no large persistent world. What you need is enough player slots for a healthy role spread and enough single-thread CPU to keep the tick stable while 24 people move and shoot simultaneously at round start. Memory grows with the size of your Workshop collection, not with the player count, so a big map rotation costs storage and RAM once rather than per player. Budget slots and clock speed first. See server requirements and server cost and sizing.
Related Garry's Mod guides
- Dedicated-server setup, installing app 4020 and launching srcds
- Workshop collections and addons, how to deliver your
ttt_maps - Missing textures and ERROR models, checkerboard versus ERROR
- Content packs and mounting, including the CS:S content requirement
- Admin commands and RCON
- Startup flags and server.cfg
- Connection troubleshooting
- The September 2026 update
Want the gamemode, the map collection and the content delivery already wired together? Launch managed Garry's Mod hosting and start on terrortown instead of debugging a download path.